Sun Java System Messaging Server 6 2004Q2 管理指南 |
第 16 章
自动邮件回复对于自动生成的电子邮件(尤其是休假邮件)响应(自动回复),MTA 使用邮件部署通知 (MDN) 和 Sieve 脚本撰写语言。MDN 是由 MTA 发送给发件人和/或报告邮件传送部署的邮寄主管的电子邮件消息。MDN 也称为已读回执、确认、回执通知或传送回执。Sieve 是用于创建邮件过滤器的简单脚本撰写语言。
本节介绍了休假自动回复机制。在大多数情况下,不必修改缺省配置;但是,您希望配置系统以便在 MTA 中继计算机上而不是在后端邮件存储上完成休假处理的情况除外。
本章包含以下各节:
休假自动回复概述可以由各种 LDAP 休假属性自动生成休假 Sieve 脚本(请参见休假自动回复属性),也可以明确指定这些脚本以获得更大的灵活性。跟踪休假的基本机制是一组文件(每个预期收件人一个),在将回复发送到各个发件人时,这些文件将保持跟踪。
缺省情况下,MTA 将在后端存储系统中计算休假。但是,由于性能原因,MTA 中继做的工作不如后端存储做的多,因此您可以在邮件中继计算机上而不是在后端存储上计算 MTA 休假。但是,使用此功能可能会导致发出休假响应的次数多于预期的次数,因为不同的中继处理不同的邮件。如果不希望发出休假邮件的次数多于预期的次数,您可以在中继之间共享文件的跟踪。如果也无法接受这种方法,您可以始终在后端存储系统中计算休假。
配置自动回复可以通过一组模式生成传送地址。所用的模式取决于为 mailDeliveryOption 属性定义的值。将为每个有效的 mailDeliveryOption 生成一个传送地址。这些模式由 MTA 选项 DELIVERY_OPTIONS(在 option.dat 文件中对该选项进行了定义)定义。option.dat 文件中 DELIVERY_OPTIONS 的缺省自动回复规则为:
*^!autoreply=$M+$D@bitbucket
MTA 在自动回复 DELIVERY_OPTION MTA 选项中标注了“^”。这将导致 MTA 检查休假日期。如果当前日期在休假日期之内,则处理将继续进行,并且 MTA 将在自动回复 DELIVERY_OPTION 中标注“!”。然后,MTA 将基于用户条目中的各个自动回复 LDAP 属性创建一个休假 Sieve 脚本。自动回复规则可以有前缀字符“!”、“#”、“^”和“*”。
在邮箱传送选项中可以有“!”标志。这将无条件地启用休假脚本的生成。但是,这样操作将很有意义:通过单独的传送选项启用自动回复方法,以便可以进一步用“^”标志控制该自动回复方法。检查此阶段的日期比使用 Sieve 逻辑更有效。
表 16-1 在第一列中显示了用于自动回复规则的前缀字符,在第二列中显示了这些字符的定义。
表 16-1 用于 DELIVERY_OPTIONS 中的自动回复规则的前缀字符
前缀字符
定义
!
启用生成自动回复 Sieve 脚本。
#
允许在中继上进行处理。
^
仅在休假日期表明应该计算选项时才计算该选项。
*
规则仅适用于用户。
自动回复规则本身指定了为位桶通道指定的地址。生成自动回复后,将考虑用此方法传送邮件,但是 MTA 方法需要一个传送地址。传送到位桶通道的任何内容都将被放弃。
在后端存储系统中配置自动回复
DELIVERY_OPTIONS 中的缺省自动回复规则将导致自动回复发生在服务于用户的邮件服务器上。如果希望在后端存储系统中计算休假邮件,则不必进行任何配置。这是缺省性能。
在中继上配置自动回复
如果希望在中继上而不是在后端存储系统中计算休假以提高性能,请编辑 option.dat 文件并将字符 # 放到自动回复规则的 DELIVERY_OPTIONS 的前面。例如:
- 使用 an 编辑器打开 option.dat 文件。
- 添加或更改 DELIVERY_OPTIONS 选项,以使自动回复规则现在类似于:
#*^!autoreply=$M+$D@bitbucket
缺省的 DELIVERY_OPTIONS 选项类似于:
DELIVERY_OPTIONS=*mailbox=$M%$\$2I$_+$2S@ims-ms-daemon, \
&members=*, \
*native=$M@native-daemon, \
/hold=@hold-daemon:$A, \
*unix=$M@native-daemon, \
&file=+$F@native-daemon, \
&@members_offline=* \
,program=$M%$P@pipe-daemon, \
#forward=**, \
*^!autoreply=$M+$D@bitbucket \这将允许在中继上进行处理。如果 MTA 在中继上执行自动回复,则每个中继都可以独立跟踪特定通信人最近是否发送了一封离开邮件,或者此信息可以在中继之间共享。前一种情况简单一些,特别是在发出太多次离开邮件但无关紧要的时候。如果希望严格执行离开邮件的频率规则,则必须在中继之间共享信息。要在中继之间共享信息,应当以 NFS 形式装入这些文件
这些文件的位置由选项 VACATION_TEMPLATE 控制。应将该选项(在 option.dat 中)设置为 /<path>/%A,其中 <path> 是在各种中继计算机之间共享的目录路径。模板需要为 file:URL,并且使用 $U 替换用户的名称。缺省设置为:
VACATION_TEMPLATE=file:///opt/SUNWmsgsr/data/vacation/$3I/$1A/$2A/$U.vac
休假自动回复操作的原理在调用时,休假操作按如下方式进行:
- Sun Java System Messaging Server 将进行检查以确保休假操作由用户级别而不是系统级别 Sieve 脚本执行。如果在系统级别的脚本中使用休假,将产生一个错误。
- “无休假通知”内部 MTA 标志被选中。如果设置了该标志,则处理将终止并且不会发送休假通知。
- 邮件的返回地址现在被选中。如果该地址为空白,则处理将终止并且不会发送休假通知。
- MTA 将进行检查以查看在标记了 :addresses 的变量中指定的用户地址或任何其他地址是否显示在当前邮件的 To:、Cc:、Resent-to: 或 Resent-cc: 标题字段中。如果在任何标题字符字段中均未找到任何地址,则处理将终止并且不会发送休假通知。
- Messaging Server 将构造一个 :subject 变量和原因字符串的散列。将根据先前休假响应的每个用户的记录选取该字符串以及当前邮件的返回地址。如果在 :days 变量所允许的时间内已经发送了响应,则处理将终止并且不会发送响应。
- Messaging Server 将从 :subject 变量、原因字符串和 :mime 变量构造一个休假通知。此响应邮件的两种基本形式可能为:
请注意,通过 Messenger Express 配置休假邮件时,会将 mailautoreplymode 自动设置为 reply。
缺省情况下,“无休假通知”MTA 标志是被清除的。可以通过使用非标准 novacation 操作由系统级别 Sieve 脚本设置该标志。只允许在系统级别 Sieve 脚本中使用 novacation Sieve 操作。如果在用户级别的脚本中使用该操作,将生成错误。您可以使用此操作实现站点范围内对休假回复(例如对包含子字符串“MAILER-DAEMON”的地址的阻止回复)的限制。
每个用户每次响应的信息被存储在一组平面文本文件中,每个本地用户一个。这些文件的位置和命名方案是通过 VACATION_TEMPLATE MTA 选项的设置来指定的。该选项应被设置为 file:URL。
这些文件的维护是自动进行的并通过 VACATION_CLEANUP 整数 MTA 选项设置进行控制。每次打开其中一个文件时,将以该值为模计算当前时间的值(以秒为单位)。如果结果为零,将扫描该文件并删除所有过期的条目。该选项的缺省值为 200,这意味着在 200 次中有 1 次机会将执行清除操作。
用来读写这些平面文本文件的方法是以这样的方式设计的,即,它应该可以在 NFS 中正常操作。这使多个 MTA 可以在公用文件系统中共享单组文件。
休假自动回复属性休假操作使用的用户目录属性集为: