Sun Java System Messaging Server 6.3 管理指南

20.9.2.2 设置实现自动删除邮件策略的规则

要实现上一节中定义的自动删除邮件策略,必须设置 imexpire 规则。可以通过将规则放入 store.expirerule 文件来设置规则。以下所示为两个全局 store.expirerule 规则的示例:


Rule1.regexp: 1
Rule1.folderpattern: user/.*/trash
Rule1.messagedays: 2
Rule2:regexp: 1
Rule2.folderpattern: user/.*
Rule2.messagedays: 14

            

在此示例中,规则 1 指定垃圾文件夹中的所有邮件将在两天后被删除。规则 2 指定消息存储中的所有邮件将在 14 天后被删除。

本节包含以下几个部分:

过期规则原则

本节介绍设置 store.expirerule 文件规则的原则。


注 –

在早期的 Messaging Server 发行版中,可以使用 configutil 参数 store.expirerule.attribute 来设置过期规则(请参见《Sun Java System Messaging Server 6.3 Administration Reference》中的“configutil Parameters”)。现在仍然可以使用,但不支持使用标题约束的过期规则(例如:使用特定主题行作为邮件过期规则)。无论如何,使用 store.expirerule 指定所有过期规则是最佳的。


表 20–8 imexpire 属性

属性 

说明(属性值) 

action

指定要对过期规则捕获的邮件执行的操作。可能的值有: 

discard 放弃邮件。该值为默认值。

report 操作向 stdout 打印邮件名称、uid 有效性和 uid。

archive 使用 Sun Compliance and Content Management System 归档邮件,然后放弃邮件。

fileinto:folder 操作将邮件放入指定的文件夹。共享的文件夹前缀可以用来将邮件放入属于另一个用户的文件夹。

exclusive

指定规则是否为专用规则。如果指定为 exclusive,则只有此规则应用于指定的邮箱,而所有其他规则都将被忽略。如果存在多个专用规则,则将使用最后装入的专用规则。例如,如果指定了全局专用规则和本地专用规则,则将使用本地规则。如果有多个全局专用规则,则使用 configutil 列出的最后一个全局规则。(1/0)

folderpattern

指定此规则影响的文件夹。格式必须以 user/ 开始,表示目录 store_root/partition/*/。请参见表 20–9。(POSIX 正则表达式)

messagecount

文件夹中邮件的最大数量。传送附加的邮件时,最早的邮件将被擦除。(整数) 

foldersize

传送附加的邮件时,擦除最早的邮件之前文件夹的最大大小。(以字节为单位的整数) 

messagedays

邮件被擦除前的生存期(以天为单位)。(整数) 

messagesize

在标记为将被擦除前,邮件的最大大小(以字节为单位)。(整数) 

messagesizedays

宽限期。超大邮件可以保留在文件夹中的天数。(整数) 

messageheader.header

指定标题字段和标记要删除的邮件的字符串。值不区分大小写,正则表达式不会被识别。示例:Rule1.messageheader.Subject: Get Rich Now!

对于标题过期过期日期,如果在这些标题字段中指定的日期值早于 messagedays 属性,则 imexpire 将删除邮件。如果指定了多个过期标题字段,将采用最早的过期日期。(字符串)。

regexp

在创建规则时启用 UNIX 正则表达式。(1 或 0)。如果未指定,则将使用 IMAP 表达式。 

savedays

邮件被擦除前在文件夹中保存的天数。 

seen

seen 是用户打开邮件时,系统设置的邮件状态标志。如果属性 seen 设置为 and,则邮件必须已被阅读并且在规则实施前必须满足其他条件。 如果属性 seen 设置为 or,则邮件仅需已被阅读在规则实施前满足另一个条件。(and/or)。

sieve

指定邮件选择条件的 Sieve 规则。示例:Rule17.sieve: header :contains "Subject" "Vigara"

deleted

deleted 是用户删除邮件时,系统设置的邮件状态标志。如果属性 deleted 设置为 and,则邮件必须被删除并且在规则实施前必须满足另一个条件。如果属性 deleted 设置为 or,则邮件仅需已被阅读在规则实施前满足另一个条件。(and/or)

本地化的邮箱名称

IMAP 协议指定邮箱名称使用已修改的 UTF-7 编码。Messaging Server 在外部接口上支持本地化的字符集,从而可以本地化邮箱名称。但是,系统在内部将本地化的名称转换为 UTF-7。因此,客户端上具有本地化邮箱名称的文件夹有一个对应的 UTF-7 邮箱文件名称。(请注意,IMAP 错误邮件将以 UTF-7 而不是本地化字符集的形式输出邮箱名称。)

一般来说,尽管消息存储实用程序可能具有允许使用不同字符集的选项标志,但大部分需要邮箱名称的消息存储实用程序通常都希望使用本地化字符集的名称。这些实用程序有 reconstructmboxutilimsbackupimsrestorehashdir。但是,imexpire 要求使用属性 folderpattern 指定的邮箱名称其字符集为 UTF-7。使用本地化名称将会无效。

要获取 imexpire 相应的 folderpattern,可能需要将本地化邮箱名称转换为等效的 UTF-7 邮箱名称。可以使用 mboxutil -E 命令进行此操作,如下所示:

mboxutil 展示本地化的文件名称和已修改的 UTF-7 文件名。

第一个 mboxutil 显示了本地化的文件名。第二个 mboxutil 显示了已修改的 UTF-7 文件名。这也可以使用以下 IMAP list 命令:

IMAP list 命令

通过文本方式设置 imexpire 规则

通过在 store.expirerule 文件中指定规则来设置自动删除邮件规则。store.expirerule 文件中每行包含一个过期条件。全局规则配置文件 (msg-svr-base/data/store/store.expirerule) 的过期条件的格式如下:

rule_name.attribute : value

用户或邮箱规则配置文件的过期规则的格式如下:

attribute: value

示例 20–4 显示了 msg-svr-base/config/store.expirerule 中的一组全局过期规则。

规则 1 设置全局过期策略(即应用于所有邮件的策略),如下所示:

规则 2 为托管域 siroe.com 中的用户设置自动删除邮件策略。它将邮箱大小限制为 1 兆字节,删除已删除的邮件,并删除 14 天前的邮件。

规则 3 为用户 f.dostoevskiinbox 文件夹中的邮件设置自动删除邮件策略。它将删除主题行带有表达式 "On-line Casino" 的邮件”


示例 20–4 imexpire 规则示例


Rule1.regexp: 1
Rule1.folderpattern: user/.*
Rule1.messagesize: 100000
Rule1.messagesizedays: 3
Rule1.deleted: or
Rule1.Subject: Vigara Now!
Rule1.Subject: XXX Porn!
Rule1.messagecount: 1000
Rule1.messagedays: 365
Rule2.regexp: 1
Rule2.folderpattern: user/.*@siroe.com/.*Rule2.exclusive: 1
Rule2.deleted: or
Rule2.messagedays: 14
Rule2.messagecount: 1000
Rule3.folderpattern: user/f.dostoevski/inboxRule3.Subject: *On-line Casino*
                  

设置 imexpire 文件夹模式

通过将 imexpire 属性 regex 设置为 1,可以使用 POSIX 正则表达式指定文件夹模式。如果未指定,则将使用 IMAP 表达式。格式必须以 user/ 开头,后跟一种模式。表 20–9 显示了各种文件夹的文件夹模式。)

表 20–9 使用正则表达式的 imexpire 文件夹模式

文件夹模式 

范围 

user/userid/.*

将规则应用于 userid 的所有文件夹中的所有邮件。

user/userid/Sent

将规则应用于 userid 在文件夹 Sent 中的邮件:

user/.*

将规则应用到整个消息存储。 

user/.*/trash

将规则应用于所有用户的 trash 文件夹。

user/.*@siroe.com/.*

将规则应用到托管域 siroe.com 中的文件夹: 

user/[^@]*/.*

将规则应用到默认域中的文件夹。