Sun Java System Messaging Server 6 2005Q4 管理指南

第 16 章 休假自动邮件回复

对于自动生成的电子邮件回复(自动回复),尤其是休假邮件,MTA 使用邮件处理通知 (Message Disposition Notifications, MDN) 和 Sieve 脚本语言。MDN 是由 MTA 发送给发件人和/或邮寄主管以报告有关邮件传送处理情况的电子邮件。MDN 也称为已读回执、确认、回执通知或发送收据。Sieve 是用于创建邮件过滤器的简单脚本撰写语言。与 Messaging Server 5.x 不同,Sieve 使用的字符集为 UTF-8,而不是 ISO-2022-JP。

本节介绍了休假自动回复机制。在大多数情况下,不必修改默认配置;但是,您希望配置系统以便在 MTA 中继计算机上而不是在后端邮件存储上完成休假处理的情况除外。

本章包含以下几个部分:

休假自动回复概述

休假 Sieve 脚本可通过各种 LDAP 休假属性自动生成(请参见休假自动回复属性)。也可以明确指定这些脚本以获得更大的灵活性。跟踪休假的基本机制是一组文件(每个预期收件人一个),在将回复发送到各个发件人时,这些文件将保持跟踪。


注 –

休假邮件的字符集已更改为 UTF-8。


默认情况下,MTA 将在后端存储系统中计算休假。但是,由于性能原因,MTA 中继做的工作不如后端存储做的多,因此您可以在邮件中继计算机上而不是在后端存储上计算 MTA 休假。但是,使用此功能可能会导致发出休假响应的次数多于预期的次数,因为不同的中继处理不同的邮件。如果不希望发出休假邮件的次数多于预期的次数,您可以在中继之间共享文件的跟踪。如果也无法接受这种方法,您可以始终在后端存储系统中计算休假。

配置自动回复

可以通过一组模式生成传送地址。所用的模式取决于为 mailDeliveryOption 属性定义的值。将为每个有效的 mailDeliveryOption 生成一个传送地址。这些模式由在 option.dat 文件中定义的 MTA 选项 DELIVERY_OPTIONS 来定义。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 中的默认自动回复规则可在为用户提供服务的邮件服务器上生成自动回复。如果希望在后端存储系统中计算休假邮件,则不必进行任何配置。这是默认性能。

Procedure在中继上配置自动回复

如果希望在中继上而不是在后端存储系统中计算休假以提高性能,请编辑 option.dat 文件,并在 DELIVERY_OPTIONS 中将字符 # 放置在自动回复规则之前。

步骤
  1. 使用 an 编辑器打开 option.dat 文件。

  2. 添加或更改 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/$1U/$2U/$U.vac

    有关元字符的说明,请参见表 9–6


    注 –

    现在休假文件模板具有对 UID 的访问权限,并允许基于用户的 UID 生成休假文件的路径。此外,用于确定休假文件路径的地址现在存储在用户的邮件属性中,以前使用的是当前收件人地址。


休假自动回复操作的原理

在调用时,休假操作按如下方式进行:

  1. Sun Java System Messaging Server 进行检查以确保休假操作是由用户级别而不是系统级别 Sieve 脚本来执行。如果在系统级别的脚本中使用休假,将产生一个错误。

  2. 选中“无休假通知”内部 MTA 标志。如果设置了该标志,则处理将终止并且不会发送休假通知。

  3. 邮件的返回地址现在被选中。如果该地址为空白,则处理将终止并且不会发送休假通知。

  4. MTA 进行检查以查看在 :addresses 标记的变量中指定的用户地址或任何其他地址是否显示在当前邮件的 To:Cc:Resent-to:Resent-cc: 标题字段中。如果在任何标题字符字段中均未找到任何地址,则处理将终止并且不会发送休假通知。

  5. Messaging Server 将构造一个 :subject 变量和原因字符串的散列。将根据先前休假响应的每个用户的记录选取该字符串以及当前邮件的返回地址。如果已在 :days 变量允许的时间范围内发送了回复,则处理将终止并且将不会发送回复。

  6. Messaging Server 将通过 :subject 变量、原因字符串和 :mime 变量构造一个休假通知。此响应邮件的两种基本形式可能为:

    • 在 RFC 2298 中指定的形式的邮件处理通知,其中第一部分包含原因文本。

    • 单个部分文本回复。(此形式只用于支持“回复”自动回复模式属性设置。)

请注意,通过 Messenger Express 配置休假邮件时,系统会将 mailautoreplymode 自动设置为 reply

默认情况下,系统将清除“无休假通知”MTA 标志。可以通过使用非标准 novacation 操作由系统级别 Sieve 脚本设置该标志。novacation Sieve 操作只允许在系统级别 Sieve 脚本中使用 。如果在用户级别的脚本中使用该操作,将生成错误。您可以使用此操作实现站点范围内对休假回复的限制(例如阻止对包含子字符串 "MAILER-DAEMON" 的地址的回复)。

每个用户每次响应的信息被存储在一组平面文本文件中,每个本地用户一个。这些文件的位置和命名方案由 VACATION_TEMPLATE MTA 选项的设置指定。该选项应设置为 file: URL

这些文件的维护是自动进行的,并由 VACATION_CLEANUP 整数 MTA 选项设置控制。每次打开其中一个文件时,将以该值为模计算当前时间的值(以秒为单位)。如果结果为零,将扫描该文件并删除所有过期的条目。该选项的默认值为 200,这意味着在 200 次中有 1 次机会将执行清除操作。

用来读写这些平面文本文件的方法是以这样的方式设计的,即,它应该可以在 NFS 中正常操作。这使多个 MTA 可以在公用文件系统中共享单组文件。

休假自动回复属性

休假操作使用的用户 LDAP 目录属性集为: