前几个小节介绍了设置状态通知邮件的基本过程。以下小节将介绍附加功能。
通常情况下,当邮件被退回或阻塞时,邮件的内容会返回发件人和通知邮件中的本地域邮寄主管。 如果完整地返回大量较大的邮件,则可能使资源负载过重。要阻塞超过一定大小的邮件返回内容,请设置 MTA 选项文件中的 CONTENT_RETURN_BLOCK_LIMIT 选项。
Internet 邮件标题的原始格式不允许包含非美国 ASCII 字符。如果在邮件标题中使用非美国 ASCII 字符,则会使用 RFC 2047 中说明的“MIME 标题编码”对这些字符进行编码。因此,电子邮件中的中文“主题”行将实际显示为:
Subject: =?big5?Q?=A4j=AB=AC=A8=B1=AD=B1=B0=D3=F5=A5X=AF=B2?=
电子邮件客户机负责在显示这些标题时删除编码。
因为 %H 模板将标题复制到通知邮件的正文中,所以已编码的标题文本会正常显示。但是,如果主题中的字符集(这种情况下为 "big5")与 return_prefix.txt 中 Content-Type 标题字符集参数中的字符集匹配,则 Messaging Server 将删除编码。如果不匹配,Messaging Server 将保留编码,不作更改。
关键字:notices、nonurgentnotices、normalnotices、urgentnotices
无法传送的邮件将在给定的通道队列中保存一段指定的时间,然后再返回发件人。此外,Messaging Server 尝试传送的同时,会将一系列状态/警告消息返回发件人。可以使用关键字 notices、nonurgentnotices、normalnotices 或 urgentnotices 指定邮件之间的时间和间隔。示例:
notices 1 2 3
对于所有邮件,将在 1 到 2 天之后发送瞬态失败状态通知邮件。如果 3 天之后邮件仍然没有传送,则会将邮件返回其创始者。
urgentnotices 2,4,6,8
对于优先级为紧急的邮件,将在 2、4 和 6 天之后发送瞬态失败通知。如果 8 天之后邮件仍然没有传送,则会将邮件返回其创始者。
请注意,MTA 选项文件中的 RETURN_UNITS 选项使您可以用小时 (1) 或天 (0) 指定单位。默认设置为天 (0)。如果设置了 RETURN_UNITS=1,则需要安排返回作业每小时运行一次,并且每小时获取一次通知。当返回作业每小时运行一次时,它还将每小时翻滚 mail.log* 文件一次。要防止每小时都翻滚 mail.log 文件,可以将 imta.tailor 文件中的 IMTA_RETURN_SPLIT_PERIOD 调整文件选项设置为 24。返回作业时间安排由 local.schedule.return_job configutil 参数控制。
如果没有指定 notices 关键字,则默认使用本地通道 l 的 notices 设置。如果未对本地通道进行设置,则默认使用 notices 3, 6, 9, 12。
关键字:includefinal、suppressfinal、useintermediate
MTA 生成通知邮件(退回邮件、传送回执邮件等)时,可能同时存在可用于 MTA 的“原始”格式的收件人地址和已变更的“最终”格式的该收件人的地址。MTA 始终会将原始格式(假如存在)包含在通知邮件中,因为这是通知邮件的收件人(通知邮件所关心的原始邮件的发件人)最可能识别的一种格式。
includefinal 和 suppressfinal 通道关键字控制 MTA 是否还包含最终格式的地址。对于要对外界“隐藏”内部邮箱名称的站点,抑制包含最终格式的地址可能会符合其利益。此类站点可能只愿意在状态通知邮件中包含原始的“外部”格式的地址。includefinal 是默认设置,包含最终格式的收件人地址。如果状态通知邮件中存在原始地址格式,则 suppressfinal 会使 MTA 抑制最终的地址格式。
useintermediate 关键字使用中间地址格式,亦即在列表扩展之后、用户邮箱名称生成之前生成的地址格式。如果此格式不存在,则使用最终格式。
默认情况下,除非返回了错误,并使用空的 Errors-to: 标题行或空的信封 From: 地址完全抑制了警告,否则将向邮寄主管发送失败和警告状态通知邮件的副本。可以通过以下部分和表 10–11 中介绍的众多通道关键字,来控制进一步精确地向邮寄主管传送通知邮件。
关键字:sendpost、nosendpost、copysendpost、errsendpost
通道程序可能会因长时间服务故障或地址无效而无法传送邮件。发生这种情况时,MTA 通道程序会将邮件返回给发件人,并附带有邮件未传送的原因的说明。可以选择将所有失败邮件的副本发送给本地邮寄主管。这对监视邮件故障十分有用,但是可能会导致邮寄主管必须处理过多的通信量。(请参见表 10–11。)
关键字:warnpost、nowarnpost、copywarnpost、errwarnpost
除了返回邮件,MTA 还可以发送未传送邮件的详细警告。这种现象通常是由于 notices 通道关键字设置引起的超时所致,尽管在某些情况下,通道程序可能在传送尝试失败后生成警告消息。警告消息包含故障和传送尝试持续时间的说明。大多数情况下,警告消息还包含有问题的邮件的标题和前几行。
可选地,所有警告邮件的副本可以发送给本地邮寄主管。在某种程度上,这对监视各个队列的状态十分有用,尽管它确实会产生大量要由邮寄主管处理的通信量。关键字 warnpost、copywarnpost、errwarnpost 和 nowarnpost 用于控制向邮寄主管发送警告消息。(请参见表 10–11。)
returnenvelope 关键字使用单个整数值,这些整数值可解释为一组位标志。位 0(值 = 1)控制由 MTA 生成的返回通知书写的是空的信封地址还是本地邮寄主管的地址。设置该位将强制使用本地邮寄主管地址,清除该位将强制使用空的地址。
RFC 1123 强制使用空的地址。但是,某些系统不能正确处理信封 From: 地址,但可能又需要使用此选项。
位 1(值 = 2)控制 MTA 是否将所有空的信封地址都替换为本地邮寄主管的地址。此选项用于适应不符合 RFC 821、RFC 822 或 RFC 1123 的非兼容系统。
位 2(值 = 4)禁止句法上无效的返回地址。
位 3(值 = 8)与 mailfromdnsverify 关键字相同。
通道程序或定期邮件返回作业将邮件返回给邮寄主管和原始发件人时,邮寄主管副本可以是整个邮件也可以只是标题。将邮寄主管副本限制为标题,可以进一步增加用户邮件的保密级别。但是,此操作本身并不能保证邮件的安全性;如果愿意,邮寄主管和系统管理员通常可以使用 root 系统权限阅读邮件内容。(请参见表 10–11。)
关键字:aliaspostmaster、returnaddress、noreturnaddress、returnpersonal、noreturnpersonal
默认情况下,MTA 构建退回邮件或状态通知邮件时所使用的邮寄主管返回地址为 postmaster@local-host,其中 local-host 为正式的本地主机名(本地通道上的名称),邮寄主管的个人名称为 "MTA e-Mail Interconnect"。选择邮寄主管地址时应小心—非法的选择可能会导致快速的邮件循环并产生大量的错误消息。
可以使用 RETURN_ADDRESS 和 RETURN_PERSONAL 选项设置 MTA 系统的默认邮寄主管地址和个人名称。或者,如果需要控制每个通道,可以使用 returnaddress 和 returnpersonal 通道关键字。returnaddress 和 returnpersonal 分别使用必需参数,以指定邮寄主管地址和个人名称。默认设置为 noreturnaddress 和 noreturnpersonal,表示应使用默认值。默认值通过 RETURN_ADDRESS 和 RETURN_PERSONAL 选项或正常的默认值(如果未设置该选项)建立。
如果通道中含有 aliaspostmaster 关键字,则按正式通道名寄往用户名 postmaster(小写、大写或大小写混合)的所有邮件都将重定向到 postmaster@local-host,其中 local-host 是正式的本地主机名(本地通道上的名称)。注意,Internet 标准要求 DNS 中接收邮件的任何域均需具有用来接收邮件的有效邮寄主管帐户。因此,在需要集中邮寄主管的责任,而不是为单独的域设置单独的邮寄主管帐户时,该关键字是十分有用的。即,虽然 returnaddress 可以控制 MTA 从邮寄主管生成通知邮件时所使用的返回邮寄主管地址,但是 aliaspostmaster 将影响 MTA 对寄往邮寄主管的邮件的处理。
表 10–11 用于将通知邮件发送给邮寄主管和发件人的关键字