Sun Java System Messaging Server 6.3 管理指南

12.8.2 Message/Partial 邮件的自动片段整理

关键字:defragmentnodefragment

MIME 标准提供了 message/partial 内容类型,用于将邮件分成较小的部分。当邮件必须在有大小限制的网络中传输,或者在不可靠的网络中传输时,此功能会很有用。在后一种情况下,邮件分段可以提供某种形式的“检查点”,当邮件传输期间出现网络故障时可以减少随后的复制工作。每一部分中都将包含信息,以便邮件到达目的地后可以自动重新组合邮件。

defragment 通道关键字和片段整理通道提供了在 MTA 中重新组合邮件的方法。当通道被标记为 defragment 时,在通道排队的所有部分邮件将被置于片段整理通道队列中。所有部分都到达之后,将重新组合邮件并进行发送。nodefragment 禁用此特殊处理功能。关键字 nodefragment 是默认设置。

12.8.2.1 片段整理通道

如果 defragment 关键字在目标通道中,则邮件被路由到片段整理通道。即,当 defragment 关键字出现在目标通道中时(MTA 通常将邮件置于此通道中排队),MTA 在邮件结构“内部查看”(MIME 解析),如果 MTA 看到邮件结构是一个 MIME 邮件片段,那么 MTA 自动将邮件路由到片段整理通道,而不是直接路由到(通常的)目标通道。

片段整理数据库包含有关进入 MTA 的邮件片段的信息,其中包括表明接受每个邮件片段的主机的信息。收到初始片段并在片段整理数据库中说明后,任何使用相同片段整理数据库的其他系统所收到的邮件的任何其他部分都将被路由到收到最初部分的主机。例如:

  1. 由于目标/出站通道上有 defragment 关键字,因此,message/partial; id=123; part=x 会在到达主机 1 后路由到主机 1 上的片段整理通道。

  2. 主机 1 上的片段整理通道检查片段整理数据库,以查看此邮件的其他部分是否已经到达。如果没有到,片段整理通道(主机 1 上的)将此部分输入片断整理数据库,并标明此部分在主机 1 上。

  3. 由于目标/出站通道上有 defragment 关键字,因此,message/partial; id=123; part=y 会在到达主机 2 后路由到主机 2 上的片段整理通道。

  4. 主机 2 上的片段整理通道将检查片段整理数据库,查看此邮件的第 x 部分是否已存在并存储在主机 1 上。片段整理通道可将此邮件片段重定向到主机 1(源会路由包含 @host1 的地址)。

  5. message/partial' id=123; part=y 到达主机 1,被路由到片段整理通道,片段整理通道运行并将它输入数据库,等等。

片段邮件的所有剩余部分都被重定向到收到邮件第一个部分(第一个收到的,不一定是 part=1)的主机。它们通过该主机的片段整理通道重新组合起来,最终成为组合好的、片段整理过的邮件(如果由于通知过多导致片段整理工作超时,各个片段将被原样发送出去)被发送到真正的目标通道。您可以获取邮件片段整理的部分负载平衡,具体取决于哪个主机恰好收到每个邮件的“第一个”部分。

12.8.2.2 片段整理通道保留时间

在片段整理通道队列中将邮件仅保留有限时间。如果发送第一个未传送通知之前时间已过去一半,将发送邮件的各个部分,不进行重新组合。选择此时间值排除了为片段整理通道队列中的邮件发送未传送通知的可能性。

通道关键字 notices 将控制发送未传送通知之前所经过的时间,因此也控制着邮件在分块发送之前被保留的时间。将关键字 notices 的值设置为希望保留邮件的时间的两倍,以进行可能的片段整理。例如,notices 的值为 4 可以使邮件片段保留两天:


defragment notices 4 
DEFRAGMENT-DAEMON

12.8.2.3 将基于 NFS 的文件系统用于片段整理和休假缓存

基于 NFS 的文件系统经常用于片段整理和休假缓存。通过让多个 MTA 系统共享同一片段整理缓存,一个应用程序可以在多个 MTA 系统之间共享片段整理数据库。要实现这一点,可以连接每个系统上的 msg-svr-base/config/ defragment_cache 和希望作为共享片段整理数据库(在共享的 NFS 磁盘上)的文件。

在任何情况下,支持正确的 NFS 文件语义(尤其是那些具有锁请求的,如 Solaris NFS)的 NFS 服务器可用于休假和片段整理缓存。如果使用 NFS, 请使用软加载 (soft mount) 选项。(硬加载 (hard mount) 是默认设置。)设置一个相对较短的超时值也是个不错的主意,超时值由 mount timeo 选项控制(请参见 mount_nfs(1M) 手册页)。

在 NFS 硬加载且 NFS 出现故障的情况下,将会看到各种系统上的片段整理通道挂起。在软加载的情况下,片段整理通道不会挂起,但因为它们无法打开片段整理缓存,所以不能与其他主机上的片段整理通道协作。在某个邮件的所有片段恰巧都先到达了同一主机的情况下(不太可能发生),该主机的片段整理通道应该能够重新组合邮件并将正确组合的邮件发送出去。更可能的情况是,片段在不同的主机上且不会重新组合,并且在片段整理通道的保留时间过期后,它们将被作为分离的片段发送出去。