![]() |
|
iPlanet Messaging Server 5.2 管理员指南 | |
第 8 篇 配置通道定义
本章说明如何使用 MTA 配置文件 imta.cnf 中的通道关键字定义。在阅读本章前,请先阅读第 6 篇 “关于 MTA 服务与配置”以及“通道定义”和“MTA 配置文件”。本章包括以下各节:
按字母顺序列示的通道关键字
备注: 在修改了 imta.cnf 文件中的通道定义后,您必须重新启动任何如 SMTP 服务器这样的程序或通道:它们只在用命令 imsimta start 启动时一次性地加载配置数据。如果使用的是已编译的配置,则必须重新编译然后再重新启动。有关编译配置信息和启动程序方面的详细信息,请参阅 iPlanet Messaging Server Reference Manual。
关键字
页
定义
地址处理
附件与 MIME 处理
字符集和八位数据
在 MTA 队列区域创建文件
报头
如果 MTA 已更改了信封的 From: 地址,则在建构入站邮件的 Received: 标题行时包括原信封的 From: 地址。
入站通道的匹配与切换
日志记录与调试
长地址列表或报头
邮箱过滤器
通知与 Postmaster 邮件(全面的通知操作程序,请见 1 页)
将在正式通道名上定址到用户名 postmaster 的邮件重定向到 postmaster@local-host,其中的 local-host 是本地主机名(即本地通道名)。
处理提交的控制和作业项(细分的功能单位,请见表 8-7)
传递不成功之邮件的重新传递频率。可用以下关键字替换:normalbackoff,nonurgentbackoff,urgentbackoff。
由主程序和从属程序为之提供服务的通道。
在提交紧急、普通和非紧急邮件后立即启动传递。
由主程序(master)为之提供服务的通道。
将大小大于此值的邮件的优先级强制定义为低于非紧急优先级(第二等优先级),这意味着此邮件将一直等待下一个任务周期,以得到更进一步的处理。
由主程序(slave)为之提供服务的通道。
阅读权限
邮件大小限制、用户定额和特权
将大小大于此值的邮件的优先级强制定义为低于非紧急优先级(第二等优先级),这意味着此邮件将一直等待下一个任务周期,以得到更进一步的处理。
SMTP 认证、SASL 和 TLS(细分的功能单位,请见 1)
MTA SMTP 客户机将在发送出站邮件时强制使用 TLS(MTA 将发出 STARTTLS 命令,而且该命令必须成功执行)。
MTA SMTP 服务器将不允许在入站连接上使用 TLS(SMTP 服务器将不通告有 STARTTLS 扩展程序,同时也不接受这一命令)。
SMTP 命令和协议(细分的功能单位,请见表 8-4)
streaming
用于控制在与一通道相关的协议中使用的协议流等级。
TCP/IP 连接与 DNS 查找支持功能(细分的功能单位,请见表 8-5)
如果已执行反向的 DNS 查找,下一步将在返回的名字上执行正向查找以检查返回的 IP 号是否与原始的相匹配,如果不匹配,则删除这个名字并使用 IP 地址。
如果反向的 DNS 查找已被执行,下一步在返回的名字上执行正向查找以检查返回的 IP 号是否与原始的匹配,如果不匹配,将名字标记上 *。
不执行 IDENT 查找;执行 IP 到主机名的转换,但在通道切换过程中不使用主机名;在 Received: 邮件头中同时包含主机名和 IP 地址。
执行在外来 SMTP 连接上的 IDENT 查找和 IP 地址到主机名的转换,在 Received: 邮件头中同时包含主机名和 IP 地址。
执行在外来 SMTP 连接上的 IDENT 查找和 IP 地址到主机名的转换,但在通道切换过程中不使用主机名。在 Received: 邮件头中同时包含主机名和 IP 地址。
执行在外来 SMTP 连接上的 IDENT 查找和 IP 地址到主机名的转换,在 Received: 邮件头中仅包含主机名。
指定需参考的名字服务器列表而不参考 TCP/IP 栈自身对名字服务器的选择;nameservers 要求一个用空格隔开的名字服务器的 IP 地址的列表。
port
其它
配置通道的默认值
所有或几乎所有的通道的许多配置都重复使用各种通道关键字。维护这样的配置既繁杂也容易出错。为简化某些配置,可以指定那些关键字默认用于各种通道。例如,下面这一配置文件中的文本行表明,其后的所有通道块将继承该行中指定的关键字:
defaults keyword1 keyword2 keyword3 ...
此 defaults 行可被理解为一个特殊的通道块,它可改变关键字默认值而无需实际地指定一个通道。此 defaults 行也不需要任何其他的通道块信息行(如果指定了,将忽略不计)。
对可以指定 defaults 的行,一般没有数量上的限制,多个默认行的效果是累积性的,最近遇到(从上至下读)的行优先。
可能需要在配置文件的某个点之后(例如,一外部文件的通道块独立部分开始处)无条件地消除任何 defaults 行的影响。nodefaults 行正是为此目的而提供的。例如,将下行插入到配置文件时,这不仅将废止由此前任何默认通道建立的所有设置,而且可使配置返回到如同没有指定任何默认值的应用状态:
与常规通道块相同的是,必须用空行将每个 defaults 或 nodefaults 通道块与其他的通道块分割开。defaults 和 nodefaults 通道块为配置文件中仅有的能出现在本地通道之前的通道块。但与任何其他通道块相同,它们必须出现在最后的重写规则之后。
配置 SMTP 通道
根据安装的类型,Messaging Server 在安装时可提供几种 SMTP 通道(见下表)。这些通道可在 TCP/IP 之上执行 SMTP。多线程的 TCP SMTP 通道包括一个在 Dispatcher 控制下运行的多线程 SMTP 服务器。外发的 SMTP 邮件由通道程序 tcp_smtp_client 处理,并在需要时在 Job Controller 的控制下运行。
通道
定义
从远程 SMTP 主机接收入站邮件。根据是否使用智能主机/防火墙配置,可以直接发送出站邮件到远程 SMTP 主机或发送出站邮件到智能主机/防火墙系统。
您可按本节的说明,通过添加或移除通道关键字之方法修改这些通道的定义或创建新通道。此外,还可用一选项文件控制 TCP/IP 通道的各种特性。这种选项文件必须存储在 MTA 配置目录下(ServerRoot/msg-instance/imta/config),并命名为 x_option,其中 x 是通道的名字。有关详细信息,请见 iPlanet Messaging Server Reference Manual。
配置 SMTP 通道选项
配置 SMTP 通道选项
TCP/IP 通道选项文件用于控制 TCP/IP 通道的各种特性。通道选项文件必须存储在 MTA 配置目录下,并命名为 x_option,这里的 x 是通道的名字。例如,/ServerInstance/imta/config/tcp_local_option。选项文件由一个或多个关键字及其相关值组成。例如,在选项文件中包含 DISABLE_EXPAND 关键字并且将它的值设置为 1,即可禁用服务器上的邮件发送列表之扩展功能。
设置每封邮件允许的收件人数量的限制(ALLOW_RECIPIENTS_PER_TRANSACTION)
有关所有通道选项关键字及其语法方面的信息,请参阅 iPlanet Messaging Server Reference Manual。设置每个连接允许的邮件数量的限制(ALLOW_TRANSACTIONS_PER_SESSION)
SMTP 命令和协议支持
可以指定 SMTP 通道是否支持某种 SMTP 命令,例如 EHLO、ETRN 和 VRFY。也可以指定该通道是否支持 DNS 域验证,哪些字符作为行结束符等等。本节描述以下内容:表 8-4 总结了在此部分中说明的关键字。
通道的 AICI 协议选择和行结束符
关键字: smtp, nosmtp, smtp_crlf, smtp_cr, smtp_crorlf, smtp_lf关键字 smtp 和 nosmtp 指定通道是否支持 SMTP 协议。关键字 smtp 或其某一变体对所有 SMTP 通道都是必须的。
关键字 smtp_crlf、smtp_cr、smtp_crorlf 和 smtp_lf 可在 SMTP 通道上使用,用以指定 MTA 将之作为行结束符接受的字符序列。关键字 smtp_crlf 意味着行必须以回车(CR)换行(LF)序列结束。关键字 smtp_lf 或 smtp 意味着所接受的是前面没有 CR 的 LF。最后,smtp_cr 意味着所接受的是后面没有 LF 的 CR。这些选项仅影响外来资料的处理。
由于 SMTP 标准要求以 CRLF 作为行结束符,MTA 总是产生这个标准 CRLF 序列。各种 smtp 关键字因而仅用于控制 MTA 以决定是否接受其它非标准行结束符。例如,如果希望 MTA 仅接受严格合法的 SMTP 邮件并拒绝任何具有非标准行结束符的邮件,则可指定 stmp_crlf。
EHLO 命令支持
关键字: ehlo, noehlo, checkehloSMTP 协议已被扩展(RFC 1869)以允许附加命令的协调。这可通过使用新的 EHLO 命令完成,用以代替 RFC 821 中的 HELO 命令。扩展的 SMTP 服务器通过提供所支持的扩展列表来响应 EHLO。未扩展的服务器将返回一个不可知命令错误,而客户机则发送旧的 HELO 命令。
这种退却策略通常在扩展和未扩展的服务器上都能使用。然而问题会出现在根据 RFC 821 不实施 SMTP 的服务器上。特别的,一些不符合标准的服务器在收到一个不可知的命令时会切断当前连接。
SMTP 客户机实施这样一种策略,即当任何服务器在收到 EHLO 后切断连接时,尝试重新连接和使用 HELO。然而,如果远程服务器在收到 EHLO 时不仅切断了连接而且进入有问题的状态,这种策略将不会起作用。
通道关键字 ehlo、noehlo 和 checkehlo 正是为处理这种情况而提供的。关键字 ehlo 可指示 MTA 对所有初始连接请求使用 EHLO 命令。关键字 noehlo 可禁用所有 EHLO 命令。关键字 checkehlo 可用于检测远程 SMTP 服务器返回的响应标志区中的字符串“ESMTP”。如果发现该字符串,则使用 EHLO,如果未发现,则使用 HELO。默认操作设置是对所有初始连接请求使用 EHLO,除非标志区行包括字符串“fire away”,在这种情况下须使用 HELO,请注意没有关键字对应于这种默认行为,它位于来自关键字 ehlo 和 checkehlo 的行为之间。
ETRN 命令支持
关键字: allowetrn, blocketrn, disableetrn, domainetrn, silentetrn, sendetrn, nosendetrn, novrfy定义于 RFC 1985 中的 ETRN 命令提供了对 SMTP 服务的扩展,因而一 SMTP 客户通过与服务器的相互作用使服务器有机会启动对其队列的处理,以使其中的邮件去往给定的主机。
使用 ETRN 时,SMTP 客户机可请求远程 SMTP 服务器启动对发送到此 SMTP 客户机的邮件队列的处理。这样,ETRN 提供了一种实现为来到自身系统的邮件而“轮询”远程 SMTP 系统的方法。这对于相互间只具瞬态连接的系统很有用,例如,作为只具拨号连接上网的其它网站的第二邮件交换(MX)主机而建立的站点。通过启用此命令,您可允许远程服务器(可能是拨号服务器)请求传递其邮件。
在 SMTP ETRN 命令行上,SMTP 客户机可指定邮件到达系统的名称(通常是 SMTP 客户系统自己的名称)。如果远程 SMTP 服务器支持 ETRN 命令,则可触发执行一分开的进程,以与具该名称的系统连接并为此系统发送任何等待传递的邮件。
响应 ETRN 命令
当发送邮件的 SMTP 客户机发布 ETRN 命令时,关键字 allowetrn、blocketrn、domainetrn 和 silentetrn 可控制 MTA 响应,以请求 MTA 尝试传递 MTA 队列中的邮件。默认状态下,MTA 将尝试执行所有 ETRN 命令,即启用关键字 allowetrn。可以通过在通道定义中包含关键字 blocketrn 以指定 MTA 不执行 ETRN 命令。
您可指定 MTA 执行所有 ETRN 命令,但不回送域所匹配的通道名,并且 MTA 将尝试包含关键字 silentetrn 的运行。关键字 domainetrn 可指定 MTA 仅执行对域有指定的 ETRN 命令,同时也可使 MTA 不回送域所匹配的通道名以及 MTA 将尝试运行者。
disableetrn 可用来全面禁用对 ETRN 命令的支持;SMTP 服务器并不把 ETRN 作为支持的命令而加以通告。
发送 ETRN 命令
通道关键字 sendetrn 和 nosendetrn 可控制 MTA 是否在 SMTP 连接开始时发送 ETRN 命令。默认的关键字是 nosendetrn,意指 MTA 将不发送 ETRN 命令。关键字 sendetrn 可通告 MTA 发送一 ETRN 命令,如果远程 SMTP 服务器支持 ETRN 的话。关键字 sendetrn 后面应跟随正在请求其邮件接收传递尝试的系统名。
VRFY 命令支持
关键字: domainvrfy, localvrfy, vrfyallow, vrfydefault, vrfyhideVRFY 命令可使 SMTP 客户机能够向 SMTP 服务器发送一请求,以检验特定用户名的邮件是否驻留在该服务器上。VRFY 命令在 RFC 821 中定义。
服务器发送的响应可表明用户是否为本地用户,邮件是否将被转发等等。值为 250 的响应表明用户名是本地的,值为 251 的响应表明用户名不是本地的,但服务器能够转发此邮件。服务器的响应包含邮箱名。
发送 VRFY 命令
在正常情况下,不应该将 VRFY 命令作为 SMTP 对话的一部分而发布。SMTP RCPT TO 命令应与 VRFY 执行同样的功能并返回一个适当的错误。然而,存在这样的服务器,它们能够接受 RCPT TO 中的任何地址(并随后将其退回),同样是这些服务器还执行作为 VRFY 命令的一部分的更广泛的检查。默认状态下,MTA 不发送 VRFY 命令(即启用 novrfy 关键字)。
如果必要,可通过在通道定义中包含关键字 domainvrfy 或 localvrfy 的方法配置 MTA,以使其发布 SMTP VRFY 命令。关键字 domainvrfy 可使 VRFY 命令在发布时以完整地址(user@host)作为其参数。关键字 localvrfy 可使 MTA 发布 VRFY 命令时仅包括地址的本地部分(user)。
响应 VRFY 命令
关键字 vrfyallow、vrfydefault 和 vrfyhide 可在发送邮件的 SMTP 客户程序发出 SMTP VRFY 命令时控制 SMTP 服务器的响应。关键字 vrfyallow 可指示 MTA 发布一个详细的、包含丰富参考信息的响应。vrfydefault 可指示 MTA 提供一个详细的、包含丰富参考信息的响应,除非通道选项 HIDE_VERIFY=1 已被指定。关键字 vrfyhide 可指示 MTA 仅发布一个含糊的、不明确的响应。这些关键字允许针对每个通道的 VRFY 响应控制,这与 HIDE_VERIFY 选项相反,后者通常应用于所有外来的通过相同的 SMTP 服务器处理的 TCP/IP 通道。
DNS 域检验
关键字: mailfromdnsverify, nomailfromdnsverify如果在外来 TCP/IP 通道上设置 mailfromdnsverify,则可使 MTA 验证在 DNS 中存在的条目,即与其相关的域用在 SMTP MAIL FROM 命令上,而且若无此条目就拒收邮件。默认关键字 nomailfromdnsverify 意味着不执行这种验证。请注意在返回地址域上执行 DNS 检查会导致拒收一些原本希望有效的邮件。(例如,来自合法的站点而仅仅没有登记域名的邮件,或在 DNS 中有错误信息时的邮件),这与宽容面对接收的邮件和通过对 Internet 主机的要求(见 RFC 1123)得到电子邮件的精神是相违背的。然而,一些站点会希望在具有假地址(来自不存在的域)的大宗商业电子邮件(UBE)被发送的情况下执行这种检查。
字符集标注和八位数据
关键字: charset7, charset8, charsetesc, sevenbit, eightbit, eightnegotiate, eightstrict
字符集标注
MIME 规范提供的机制可用来在纯文本邮件中标注字符集。具体而言,也就是可将 charset= 参数指定为 Content-type: 标题行的一部分。MIME 规范中定义了各种字符集名称,其中包括 US-ASCII(默认值)、ISO-8859-1、ISO-8859-2 以及后来定义的许多字符集名称。有些现有的系统和用户代理程序没有提供生成这些字符集标注的机制;其结果是,某些纯文本邮件将可能无法被适当标注。通道关键字 charset7、charset8 和 charsetesc 提供了一种针对每个通道的机制,对于缺少字符集标注的邮件头,可用来指定插入的字符集名。每个关键字需要一个可给出字符集名的参数。系统不检查这些名称的有效性。但要注意,只能针对 MTA 表目录中的字符集定义文件 charsets.txt 中指定的字符集进行字符集转换。应尽可能地使用这个文件中定义的名字。
charset7 字符集名仅在邮件包含七位字符时使用;charset8 字符集名则在邮件包含八位数据时使用;charsetesc 在邮件仅包含七位数据且恰巧也包含换码符时使用。如果没有指定适当的关键字,则不会有字符集名被插入到 Content-type: 标题行。
许注意的一点是,charset8 关键字还可用来控制邮件头中八位字符的 MIME 编码(此中的八位数据是绝对的非法)。如果没有指定 charset8 值,MTA 通常只以 MIME 对在邮件头中遇到的任何(非法)八位数据进行编码,并将之标注为 UNKNOWN charset。
这些字符集说明不会覆盖现存的标注,也就是说,如果一邮件已具有字符集标注或属于文本类型以外的类型,这些说明将不起作用。通常较为适宜的做法是以下列方式标注 MTA 本地通道:
l ... charset7 US-ASCII charset8 ISO-8859-1 ...
hostname如果邮件中没有内容类型报头,则添加之。该关键字还可添加 MIME 版本:的报头,如果缺失的话。
关键字 charsetesc 对使用包含换码字符的日文或韩文字符集接收未标注邮件的通道非常有用。
八位数据
一些传输方式限制使用序数值大于 127(十进制)的字符。特别需要注意的是,一些 SMTP 服务器会去除高位,从而使使用八位字符的邮件出现乱码。Messaging Server 提供的工具可自动给这种邮件编码,这样麻烦的八位字符就不会直接出现在邮件中了。通过指定关键字 sevenbit,编码可应用于入队到指定通道的所有邮件。如果无此限制存在,通道应标记为 eightbit。
SMTP 协议是不允许有八位数据的,除非远程 SMTP 服务器明确其能支持允许有八位数据的 SMTP 扩展程序。有些传输方式(如扩展 SMTP)可能确实支持某种形式的协商途径,从而确定是否能够传输八位字符。因此,建议用户使用关键字 eightnegotiate,以此指示通道在协商失败时给邮件编码。这对所有通道都是默认的,不支持协商的通道只会认为该传输方式能够处理八位数据。
关键字 eightstrict 可通告 Messaging Server 拒收任何包含未协调的八位数据的入站邮件。
有些邮件协议可以支持流操作。这意味着 MTA 能同时发出一个以上的操作并等待每个操作的回复的成批到达。关键字 streaming 可控制在与一通道相关的协议中使用的协议流等级。此关键字需要一个整数参数,该参数如何解释取决于所使用的协议。
在正常情况下,协议流支持的可用范围需通过 SMTP 流水线扩展程序进行协商。这样,该关键字就决不应在正常情况下使用。
有效的流值为 0 到 3。0 值说明没有流操作,1 表示对 RCPT TO 命令组进行流操作,2 表示对 MAIL FROM/RCPT TO 进行流操作,3 表示对 HELO/MAIL FROM/RCPT TO 或 RSET/MAIL FROM/RCPT TO 进行流操作。默认值为零。
TCP/IP 连接和 DNS 查找支持
您可指定有关服务器如何处理 TCP/IP 连接和地址查找的信息。本节说明以下内容:
TCP/IP 端口号和接口地址
表 8-5 列出了在本节描述的关于 TCP/IP 连接和 DNS 查找的关键字。
TCP/IP 端口号和接口地址
关键字: port, interfaceaddress当发送邮件时 TCP/IP 通道上的 SMTP 通常连接到端口 25。关键字 port 可用于指示 TCP/IP 通道上的 SMTP 连接到一个非标准端口。请注意此关键字是对 Dispatcher 选项 PORT(它控制 MTA 以决定为接受 SMTP 连接须监听哪些端口)的补充。
关键字 interfaceaddress 控制一 TCP/IP 通道为出站连接作为源地址而连通的地址,也就是说,在多接口地址的系统中,此关键字决定了哪个地址将在 MTA 发送外发 SMTP 邮件时作为源 IP 地址使用。请注意此关键字是对 Dispatcher 选项 INTERFACE_ADDRESS(它控制 TCP/IP 通道以决定为接受外来连接和邮件须监听哪个接口地址)的补充。
高速缓存通道连接信息
关键字: cacheeverything, nocache, cachefailures, cachesuccesses使用 SMTP 协议的通道维护着一个包含先前连接尝试的历史记录的缓存。此缓存用于避免多次重复连接不可存取的主机,从而避免浪费许多时间并耽搁其它邮件。缓存是针对每个进程的,它仅在出站 SMTP 传递通道的一次运行期间存在。
高速缓存通常即记录连接成功也记录连接失败。(成功的连接尝试被记录下来以弥补以后的失败 - 曾经连接成功但本次连接失败的主机在进行下次连接尝试前的延迟不会像没有尝试过连接或先前连接失败的主机那样长。)
然而,MTA 使用的缓存策略不是对所有情况都必定适当。因此提供了若干通道关键字用以调整 MTA 缓存。
关键字 cacheeverything 启用所有形式的缓存并且是默认的。关键字 nocache 禁用所有缓存。
关键字 cachefailures 启用连接失败(而非连接成功)的缓存 - 这在一定程度上促使比 cacheeverything 更严格的重新连接。最后,cachesuccesses 仅缓存成功连接。最后这个关键字与 SMTP 通道的 nocache 关键字等效。
反向 DNS 查找
关键字: forwardchecknone, forwardchecktag, forwardcheckdelete通道关键字 forwardchecknone、forwardchecktag 和 forwardcheckdelete 能够改变反向 DNS 查找的效果。这些关键字能够控制 MTA 以决定是否对用 DNS 反向查找所找到的 IP 名进行正向查找,如果这种正向查找被请求,则指定如果 IP 名的正向查找与连接的原 IP 值不匹配时 MTA 如何做。
forwardchecknone 是默认关键字,意味着不进行任何正向查找。关键字 forwardchecktag 告诉 MTA 在每个反向查找后进行正向查找,而且如果用正向查找得到的数字与原始连接值不匹配,则将 IP 名标记上星号(*)。关键字 forwardcheckdelete 告诉 MTA 在每个反向查找后进行正向查找,如果名字的正向查找与原始连接的 IP 地址不匹配,则忽略(删除)反向查找返回的名字,在这种情况下,MTA 使用原 IP 地址取而代之。
备注: 正向查找与原 IP 地址不匹配的情况在许多站点是正常的,在这些站点里,更为“普遍”的 IP 名被用于多个不同的 IP 地址。
IDENT 查找
关键字: identnone, identnonelimited, identtnonnumeric, identnonesymbolic, identtcp, identtcpnumeric, identtcpsymbolic, identtcplimited关键字 IDENT 可通过 IDENT 协议控制 MTA 对连接和查找的处理方式。有关 IDENT 协议的说明,请见 RFC 1413。
关键字 identtcp、identtcpsymbolic 和 identtcpnumeric 可指示 MTA 使用 IDENT 协议执行连接和查找。按下列方式将从 IDENT 协议获得的信息(通常就是进行 SMTP 连接的用户的标识)插入到邮件的 Received: 邮件头:
identtcp 插入与外来 IP 值对应的主机名,也就是从 DNS 反向查找中找到的内容以及 IP 值本身。
identtcpsymbolic 插入与外来 IP 值相应的主机名,也就是从 DNS 反向查找中找到的内容,但 IP 值本身不包含在 Received: 邮件头中。
备注: 远程系统必须为使用 identtcp、identtcpsymbolic 或 identtcpnumeric 所导致的 IDENT 查找运行一个 IDENT 服务器。
要知道,IDENT 查询尝试有可能招致性能受损。路由器会像“黑洞”那样吞食掉大量针对不可识别的端口的连接尝试。如果这种情况发生在 IDENT 查询中,则在连接超时前 MTA 根本侦听不到反馈(由 TCP/IP 栈控制的超时,通常为 1 至 2 分钟)。
另一影响性能的因素发生在 identtcp、indenttcplimited 或 identtcpsymbolic 与 identtcpnumeric 进行比较的时候。使用 identtcp、identtcplimited 或 identtcpsymbolic 调用 DNS 反向查找,会导致某些额外开销,以获得对用户更为友好的主机名。
关键字 identnone 禁用 IDENT 查找,但执行指定 IP 地址到主机名的转换,而且 IP 值和主机名都包含在邮件的 Received: 邮件头中。这是默认值。
关键字 identnonesymbolic 禁用 IDENT 查找,但执行 IP 到主机名的转换,仅主机名包含在邮件的 Received: 邮件头中。
关键字 identnonenumeric 禁用此 IDENT 查找,并禁止通常的从 IP 地址到主机名的 DNS 反向查找转换,并以 Received: 邮件头中较少的用户友好信息为代价而使性能得到改善。
在 IDENT 查找,反向 DNS 查找,和显示于 Received: 邮件头中的信息等方面,关键字 identtcplimited 和 identnonelimited 分别与 identtcp 和 identnone 具有同样的效果。它们的不同之处在于:使用 identtcplimited 或 identnonelimited,IP 常值地址总是作为任何由 switchchannel 引起的通道切换的基础,而不管 DNS 反向查找是否成功地确定了一个主机名。
TCP/IP MX 记录支持
关键字: mx, nomx, defaultmx, randommx, nonrandommx一些 TCP/IP 网络支持 MX(邮件转发)记录的使用而另一些则不支持。如果 MTA 系统所连接的网络不提供对 MX 记录支持,TCP/IP 通道程序可配置成不使用 MX 记录。关键字 mx、nomx、defaultmx、randommx、nonrandommx 控制着对 MX 记录支持。
关键字 randommx 指定应进行 MX 查找并且相等优先级的 MX 记录值应按随机顺序处理。关键字 nonrandommx 指定应进行 MX 查找并且相等优先级的 MX 记录值应按接收顺序处理。
关键字 mx 目前等同于 nonrandommx,在以后的版本中可能改为与 randommx 等同。关键字 nomx 禁用 MX 查找。关键字 defaultmx 指定:如果网络支持 MX 记录则应使用 mx。在支持任何形式的 MX 查找的通道上,关键字 defaultmx 是默认的。
名字服务器查找
关键字: nameservers, defaultnameservers当执行名字服务器查找时,可用通道关键字 nameservers 指定要参考的名字服务器列表,而非参考 TCP/IP 栈自身对名字服务器的选择。关键字 nameservers 需要一个用空格隔开的名字服务器的 IP 地址的列表,如下例所示:
默认关键字 defaultnameservers 意味着使用 TCP/IP 栈自身对名字服务器的选择。
为防止在 UNIX 上进行名字服务器查找,可以修改文件 nsswitch.conf。在 NT 上可以修改 TCP/IP 配置。
关键字 lastresort 用于指定在所有其它连接尝试都失败时须连接的主机。实际上起着一个最后使用的 MX 记录的作用。这仅在 SMTP 通道上有用处。
该关键字一个单一参数,用以指定“最后使用的主机”的名称。例如:
tcp_local single_sys smtp mx lastresort mailhub.siroe.com
TCP-DAEMON
来件的备用通道(转换通道)
关键字:switchchannel、allowswitchchannel、noswitchchannel。另请见 saslswitchchannel 1 和 tlsswitchchannel 1以下关键字可用来控制来件的备用通道选择: switchchannel, allowswitchchannel, noswitchchannel
当 MTA 从远程系统接受一外来连接时,必须选择一个与其相联系的通道。通常此决定基于所使用的传输方式;例如,外来的 SMTP over TCP/IP 连接自动与通道 tcp_local 相联系。
然而,当具有不同特征的多个外发通道以相同的传输用于处理不同系统时,此约定被打破。在这种情况下,外来连接和外发连接不与相同的通道相联系,其结果是对应的通道特征不与远程系统相联系。
关键字 switchchannel 提供了解决这一难题的办法。如果 switchchannel 被指定在服务器所使用的初始通道上,连接的(原)主机的 IP 地址将与通道表进行匹配,如果匹配成功源通道会因此而改变。如果没有找到匹配的 IP 地址或与初始的默认外来通道相匹配,MTA 可以尝试使用通过 DNS 反向查找得到的主机名来进行匹配。源通道可以改变为具有 switchchannel 或 allowswitchchannel(默认)标记的任何一个通道。关键字 noswitchchannel 指定没有通道会与此通道相互切换。
除了针对与一服务器相联系的通道外,针对其他任何对象指定 switchchannel 都不会起作用。目前,switchchannel 仅影响 SMTP 通道,但实际上没有其它通道使用 switchchannel 是合理的。
目标主机选择
关键字: daemon, single, single_sys对 daemon 关键字的解释和使用取决于其所应用的通道类型。
关键字 daemon 用于 SMTP 通道以控制目标主机的选择。
通常,通道要与被处理邮件的信封地址上列出的任何主机连接。关键字 daemon 用于指示通道不考虑信封地址,取而代之的是连接到一特定的远程系统,一般为防火墙或邮件集线器系统。实际的远程系统名应直接出现在 daemon 关键字之后,如下例所示:
tcp_firewall smtp mx daemon firewall.acme.com
TCP-DAEMON如果关键字 daemon 后面的参数不是一个全限定域名,此参数将被忽略并且通道将连接到通道的正式主机。当指定防火墙或网关系统名为正式主机名时,关键字 daemon 的参数通常被指定为路由器,如下例所示:
tcp_firewall smtp mx daemon router
firewall.acme.com
TCP-DAEMON其它重要的关键字有 single 和 single_sys。关键字 single 指定应为每个目标地址在通道上创建一个单独的邮件副本。关键字 single_sys 为每个所使用的目标系统创建一个单一的邮件副本。请注意,对于邮件入队于其中的每个通道,至少为每个邮件创建一个副本,而不考虑所使用的关键字。
SMTP 认证、SASL 和 TLS
关键字: maysaslserver, mustsaslserver, nosasl, nosaslserver, saslswitchchannel, nosaslswitchchannel)您可控制 Messaging Server 是否支持使用 SASL(简单认证和安全层)来认证 SMTP 服务器。SASL 在 RFC 2222 中定义。有关 SASL、SMTP 认证和安全的详细信息,请参阅第 12 篇 “配置安全和访问控制”。
通道关键字 maysaslserver、mustsaslserver、nosasl、nosaslserver、itchchannel 和 saslswitchchannel 都可由 SMTP 通道(例如 TCP/IP 通道)用来配置 SMTP 协议期间的 SASL(SMTP AUTH)之使用。
默认关键字是 notls,这意味着不允许有或尝试 SASL 认证。它包含 nosaslserver,这意味着不允许有 SASL 认证。如果指定了 maysaslserver,则会使 SMTP 服务器允许客户机尝试使用 SASL 认证。如果指定了 mustsaslserver,则会使 SMTP 服务器坚持要客户机使用 SASL 认证;在远程客户机没有成功地验证之前,SMTP 服务器不接受邮件。
在客户成功使用 SASL 的情况下,使用 saslswitchchannel 可使外来连接切换到指定的通道。这需要一个值,用以说明切换到哪个通道。
使用邮件头中 SMTP AUTH 的认证地址
关键字: authrewriteauthrewrite 通道关键字可用于在源通道上使 MTA 将认证的始发者信息(如果有的话)传送到邮件头中。使用的信息通常为 SMTP AUTH,但也可通过 FROM_ACCESS 映射替换之。根据表 8-6,关键字 authrewrite 需有一整数值。
数值
用法
如果已有 Resent-from: 或 Resent-sender:,则添加一个 Sender: 邮件头或 Resent-sender: 邮件头,以包含 AUTH 原发件人。
指定 Microsoft Exchange 网关通道
关键字: msexchange, nomsexchange通道关键字 msexchange 可用于在 TCP/IP 通道上通知 MTA 这是一个可与 Microsoft Exchange 网关和客户机通信的通道。当放置在启用了 SASL 的入站 TCP/IP 通道上时(通过 maysaslserver 或 mustsaslserver 关键字启用),它会使 MTA 的 SMTP 服务器通告 AUTH 使用“不正确的”格式(此乃基于原来的 ESMTP AUTH 规范,而不是较新的修正过的 AUTH 规范,前者实际上不能与正确的 ESMTP 用法兼容)。例如,有些 Microsoft Exchange 客户程序并不能识别正确的 AUTH 格式,而只能识别不正确的 AUTH 格式。
通道关键字 msexchange 还可通告(识别)无效的 TLS 命令。
传输层安全
关键字: maytls, maytlsclient, maytlsserver, musttls, musttlsclient, musttlsserver, notls, notlsclient, notlsserver, tlsswitchchannel通道关键字 maytls、maytlsclient、maytlsserver、musttls、musttlsclient、musttlsserver、notls、notlsclient、notlsserver 和 tlsswitchchannel 用于配置在 SMTP 协议有效期间如 TCP/IP 通道这样的基于 SMTP 的通道对 TLS 的使用。
默认关键字是 notls,意味着 TLS 不被允许或尝试。它包含关键字 notlsclient,其意味着 MTA SMTP 客户不会在外发连接上尝试 TLS 使用(在外发连接中不发布 STARTTLS 命令),还包含关键字 notlsserver,其意味着 MTA SMTP 服务器不会在外来连接上允许 TLS 使用(STARTTLS 扩展没有被 SMTP 服务器公布,其命令本身也未采用)。
指定 maytls 使 MTA 给外来连接提供 TLS 并在外发连接上尝试 TLS。它包含关键字 maytlsclient,其意味着如果发送邮件到一个支持 TLS 的 SMTP 服务器,MTA SMTP 客户在发送时将尝试 TLS 使用,还包含关键字 maytlsserver,其意味着 MTA SMTP 服务器将公布对 STARTTLS 扩展的支持并在接收邮件时允许使用 TLS。
指定 musttls 使 MTA 在外发和外来连接上坚持 TLS 使用;不会与协调 TLS 使用失败的远程系统交换电子邮件。它包含关键字 musttlsclient, 其意味着 MTA SMTP 客户在发送外发邮件时坚持 TLS 使用并且不会发送到没有成功协调 TLS 使用的 SMTP 服务器(MTA 将发布 STARTTLS 命令且此命令必须成功)。它也包含关键字 musttlsserver, 其意味着 MTA SMTP 服务器将公布对 STARTTLS 扩展的支持并当接收外来邮件时坚持使用 TLS,而且将不从没有成功协调 TLS 使用的客户处接收邮件。
关键字 tlsswitchchannel 用于在一客户成功协调 TSL 的情况下使外来连接切换到指定的通道。它需要一个值用以说明切换到哪个通道。
配置邮件处理和传递
可配置服务器以确定何时尝试基于特定标准的邮件传递。还可指定任务处理的参数,如服务任务的处理限制或何时生成新的 SMTP 通道线程。本节描述以下内容:有关邮件处理和传递方面的概念性信息,请参见“作业控制器”和“作业控制器文件”。
表 8-7 总结了在此部分中说明的关键字。
设置通道的方向性
关键字: master, slave, bidirectional可用三个关键字指定某通道是用主程序提供服务(master)还是用从属程序(slave)提供服务,或由两个程序(bidirectional)同时提供服务。如果没有指定任何关键字,则为 bidirectional。这些关键字可在邮件于通道中排队期间决定 MTA 是否启动传递操作。
这些关键字的使用反映了相关通道程序的某些基本特点。针对 MTA 支持的各种通道的说明,可表明这些关键字应在何时何处使用。
执行延迟传递日期
关键字: deferred, nodeferred通道关键字 deferred 可识别并执行 Deferred-delivery: 标题行。标有 deferred 传递日期(将来日期)的邮件将保留在通道队列中,直到其过期退回或到了延迟传递日期时为止。有关 Deferred-delivery: 标题行的格式和使用方面的详细信息,请参见 RFC 1327。
关键字 nodeferred 为默认值。需说明的一点是,虽然 RFC 1327 有规定一定要支持延迟邮件处理功能,但执行时实际上是让用户把邮件系统作为其磁盘配额的扩展而使用。
指定无法传递邮件的重新传递频率
关键字: backoff, nonurgentbackoff, normalbackoff, urgentbackoff, notices系统设置是:对于有传递失败情况的邮件,重新传递的频率取决于邮件的优先级别。以下是尝试传递之间的默认时间间隔(分)。优先级别后面的第一个数表示初次传递失败后第一次尝试重新传递的分钟数:
urgent: 30, 60, 60, 120, 120, 120, 240
normal: 60, 120, 120, 240, 240, 240, 480
nonurgent: 120, 240, 240, 480, 480, 480, 960如果是紧急邮件,则在初次传递失败 30 分钟后尝试重新传递,第一次重新传递 60 分钟后尝试重新传递,第二次重新传递 60 分钟后尝试重新传递,第三次重新传递 120 分钟后尝试重新传递,等等。指定的最后尝试后的重新传递,以相同的时间间隔重复。因此,如果是紧急邮件,则每隔 240 分钟重新传递一次。
传递尝试之持续时间由下列关键字指定:notices、nonurgentnotices、normalnotices 或 urgentnotices。如果无法传递,系统将生成一则无法传递之通知,并将邮件退回给发件人。(有关 notices 关键字的详细说明,请见“设置通知邮件传递间隔”。)
您可通过“backoff”关键字为不同优先等级的邮件指定自定义的重新传递时间间隔。nonurgentbackoff 用于指定非紧急邮件的重新传递时间间隔。normalbackoff 用于指定正常邮件的重新传递时间间隔。urgentbackoff 用于指定紧急邮件的重新传递时间间隔。如果没有指定这些关键字,backoff 指定的时间间隔则适用于所有邮件,不论优先等级为何。
urgentbackoff "pt30m" "pt1h" "pt2h" "pt3h" "pt4h" "pt5h" "pt8h" "pt16h"
此例中,紧急邮件是在初次传递失败后 30 分钟时尝试重新传递的,随后的重新传递尝试如下:第一次后的一个小时(即初次传递失败后的 1 小时 30 分)、第二次后的两个小时、第三次后的三个小时、第四次后的四个小时、第五次后的五个小时、第六次后的八个小时、第七次后的十六个小时。再往后的重新传递尝试将为每 16 小时一次,直至关键字 notices 指定的时限到期为止。如果无法传递,系统将生成一则“无法传递”之通知,并将邮件退回给发件人。有关时间间隔的语法,请见 ISO 8601P,使用方法说明,请见 iPlanet Messaging Server Reference Manual。
normalbackoff "pt30m" "pt1h" "pt8h" "p1d" "p2d" "p1w"
一正常邮件是在初次传递失败后 30 分钟时尝试重新传递的,随后的重新传递尝试如下:第一次后的一个小时、第二次后的八个小时、第三次后的一天、第四次后的两天、第五次后的一星期,然后每星期尝试一次,直至关键字 notices 指定的时限到期为止。如果无法传递,系统将生成一则“无法传递”之通知,并将邮件退回给发件人。
backoff "pt30m" "pt120m" "pt16h" "pt36h" "p3d"
对于所有无法传递的邮件,不论优先级如何,都将在初次传递失败后 30 分钟时尝试重新传递,并在第一次后的两个小时重试,第二次后的十六个小时重试,第三次后的三十六小时重试,第四次后的三天重试,然后每三天重试一次,直至关键字 notices 指定的时限到期为止;除非您用 nonurgentbackoff、normalbackoff 或 urgentbackoff 关键字替换之。如果无法传递,系统将生成一则“无法传递”之通知,并将邮件退回给发件人。
您可通过配置使不同的通道在同一存储池中运行,以便共享资源。还可能需要配置其他通道使之运行于专用于某特定通道的存储池中。在每一个存储池中,根据邮件的优先级自动将其存储到不同的处理队列中。存储池中高优先级的邮件在低优先级邮件之前得到处理。(请参见“基于大小的邮件优先级”。)
通过使用关键字 pool,您可在创建任务项的处理池中,以通道对通道为基础选择处理池。关键字 pool 之后必须有当前通道传递任务应使用的存储池的名称。存储池名称不得超过 12 个字符。
有关 Job Controller 的工作原理和配置信息,请参见“作业控制器文件”、“作业控制器”和“服务任务限制”。)
服务任务限制
关键字: maxjobs, filesperjob每当邮件排入通道的队列时,作业控制器可确保有一项传递邮件的作业在运行。这可能涉及到启动新的作业进程、添加线程,或者仅标示出已有一项作业在运行。但是,一个单独服务任务不能够充分保证即时传递所有邮件。有关 Job Controller 的工作原理和配置信息,请参见“作业控制器文件”、“通道执行任务的处理池”和“作业控制器”。)
对于某给定安装而言,为传递邮件而启动的最大进程数和线程数量应有一个合适的值。最大数量取决于诸如处理器个数、磁盘速度和连接的特性等因素。在 MTA 配置中,可以进行如下的控制:
为一给定通道的运行可启动进程的最大数量(通道关键字 maxjobs)
为一给定通道的运行可启动进程的最大数量应是下面两个值中的较小者:为通道设置的 maxjobs 和为通道运行所用存储池设置的 JOB_LIMIT。为一组通道可启动进程的最大数量(任务控制器配置文件的存储池相关部分的 JOB_LIMIT 参数)
在一新线程或进程启动之前接收的入队邮件个数(通道关键字 threaddepth)
对于某些通道,在给定的传递程序之中可运行线程的最大数量(通道选项文件中的 max_client_threads 参数)。
假设某邮件需要处理。通常,任务控制器按如下所述那样启动新进程:
如果没有为一通道运行的进程并且还没有达到存储池的任务限制,任务控制器启动一新进程。
特别是对于 SMTP 通道,当邮件排入不同主机的队列中时即启动新线程或新进程。因此,对于 SMTP 通道,任务控制器是按如下所述方式启动新进程的。假定有一邮件需要处理:如果通道程序是单线程的或已达到线程限制,待处理邮件的增长超过线程数的倍数(由 threaddepth 指定)时且通道和存储池任务限制都未达到,那么任务控制器启动一新进程。
如果没有为 SMTP 通道运行的进程并且没有达到存储池限制时,任务控制器启动新进程。
还可参阅“SMTP 通道线程”。如果已经达到线程限制(MAX_CLIENT_THREADS),排入主机队列的一邮件没有得到服务,并且通道限制(maxjobs)和存储池任务限制(JOB_LIMIT)都没有达到时,则启动一新进程。
关键字 filesperjob 可用于使 MTA 创建额外的服务任务。此关键字以一单个正整数为参数,用于指定在创建多于一个的服务任务来处理队列条目之前,必须有多少个队列条目(也就是文件)被发送到相关的通道之中。如果给出的参数值小于或等于零,则被解释为只请求一个队列服务任务。没有指定关键字等同于将关键字的值指定为零。应充分重视此关键字的效果;计算出的数值越大,可实际创建的服务任务的个数就越多。
关键字 filesperjob 用给定值去除实际队列条目(即文件)的个数。注意,源于一给定邮件的队列条目的个数受很多因素的影响,包括(但不限于)关键字 single 和 single_sys 的使用以及邮件列表中邮件头修改操作的规定等。
关键字 maxjobs 设置能够同时运行的服务任务个数总和的上限。该关键字后必须跟有一个整数值,如果计算出的服务任务个数大于此值,则实际仅创建 maxjobs 个任务。如果没有指定 maxjobs,此值的默认值为为 100。通常 maxjobs 设置为小于或等于能同时运行在通道所使用的任何服务存储池或存储池组中的任务合计数。
基于大小的邮件优先级
关键字: urgentblocklimit, normalblocklimit, nonurgentblocklimit关键字 urgentblocklimit、normalblocklimit 和 nonurgentblocklimit 可用于指示 MTA 基于大小降低邮件的优先级。这些关键字影响处理邮件时任务控制器所应用的优先级。
多线程 SMTP 客户程序把发送到不同目的地的邮件分发到不同线程中。关键字 threaddepth 可用于指示多线程 SMTP 客户程序在任意一线程中只处理规定数目的邮件,甚至对于所有发向同一目的地的邮件(正常情况下在一个线程中处理)也使用额外的线程。
若与通道相连接的 SMTP 服务器能处理多个并发连接,使用 threaddepth 可能对在一守护程序路由器 TCP/IP 通道 - 一种与单个指定 SMTP 服务器连接的 TCP/IP 通道 - 上实现多线程特别有用。
每当通道待处理邮件的增长超过 threaddepth 的倍数时,任务控制器试图增加专用于处理该通道队列中的邮件的进程总数。对于多线程通道,任务控制器建议任何处理该通道邮件的进程启动新线程,或当所有任务都有该通道所允许的最大线程数(tcp_* 通道选项中的 MAX_CLIENT_THREADS)时启动新进程。对于单线程通道将启动新进程。注意,当达到通道限任务制(maxjobs)或存储池任务限制(JOB_LIMIT)时,任务控制器将不再启动新任务。
多地址扩展
关键字: expandlimit, expandchannel, holdlimit大多数通道在传输每一个入站邮件时都支持指定多个收件人地址。在单个邮件中指定多个收件人地址有可能导致邮件传输处理的延迟(联机延迟)。如果延迟时间太长,可能会发生网络超时,这又可能导致反复尝试邮件提交和其他的问题。
MTA 提供了一个特别的功能,当为单个邮件指定了超过给定数目的地址时,将该邮件强制为延迟(离线)处理。延迟处理能够降低大量的联机延迟。注意,额外的开销也只是被延迟了,而没有完全避免。
该功能需要在一定的组合下才能激活,例如,一般为 reprocessing 通道和 expandlimit 关键字。关键字 expandlimit 取一个整数参数,以指定在延迟处理之前可接受多少来自通道的邮件中的地址。如果没有指定 expandlimit 关键字,默认值为无限大。一 0 值强制延迟处理所有来自通道的地址。
务必不要为本地通道或 reprocessing 通道自身指定关键字 expandlimit,这样指定的后果是无法预测的。
实际用来执行延迟处理的通道可以使用关键字 expandchannel 指定,默认状态下使用 reprocessing 通道,如果没有指定 expandchannel,那么使用另外某些重处理通道或处理通道可能对特定目的来讲是有用的。如果通过 expandchannel 指定了处理延迟的通道,该通道应该是重处理通道或处理通道,指定其他类型的通道可能导致无法预测的结果。
reprocessing 通道或任何用于执行延迟处理的通道,必须添加到 MTA 配置文件中以便 expandlimit 关键字能发挥作用。如果配置是由 MTA 配置实用程序构建,那么一个重处理通道应该已经存在。
格外大的收件人地址列表经常是充斥大宗商业电子邮件的征兆。关键字 holdlimit 通知 MTA 当来自通道的邮件导致超过指定数量的收件人时,将其标记为 .HELD 邮件并且排入到 reprocess 通道(或任何通过 expandchannel 关键字指定的通道)中。这些文件将滞留在 reprocess 队列中不予处理,等待 MTA Postmaster 的人工干预。
启用服务转换功能
关键字: service, noservice不论 CHARSET-CONVERSION 条目为何,关键字 service 都无条件地启用服务转换功能。如果设定了 noservice 关键字,则进入此通道的邮件服务转换就必须通过 CHARSET-CONVERSION 启用。
配置地址处理功能
本节说明处理地址所需使用的关键字。这一部分由下列分节组成:
启用服务转换功能
地址类型和约定
关键字: 822, 733, uucp, header_822, header_733, header_uucp这组关键字用于对通道支持的地址类型进行控制。类型有传输层使用的地址(邮件信封)和邮件头使用的地址之别。
822(sourceroute)
源路由信封地址。该通道全面支持 RFC 822 格式的信封寻址约定,其中包括源路由。关键字 sourceroute 也可作为 822 的同义词使用。如果没有指定其它信封地址类型关键字,则为默认关键字。
733(percents)
百分号信封地址。除了源路由外,该通道全面支持 RFC 822 格式的信封寻址;源路由则应用百分号约定重写。关键字 percents 也可作为 733 的同义词使用。
备注: 在 SMTP 通道上使用 733 地址约定可致使这些常规被携带到 SMTP 信封中的传输层地址中。这种情况是违反 RFC 821 规定的。所以只有在确信必要时,才使用 733 地址约定。
uucp(bangstyle)
Bang-style(惊叹号式)信封地址。这种通道在信封中采用与 RFC 976 bang-style 地址约定相符的地址(例如,此乃 UUCP 通道)。关键字 bangstyle 也可作为 uucp 的同义词使用。
header_822
源路由邮件头地址。该通道全面支持 RFC 822 格式的邮件头寻址约定,其中包括源路由。如果没有指定其它邮件头地址类型关键字,则为默认关键字。
header_733
百分号邮件头地址。除了源路由外,该通道全面支持 RFC 822 格式的邮件头寻址;源路由则应用百分号约定重写。
备注: 在邮件头中使用 733 地址约定可能会违反 RFC 822 和 RFC 976 之规定。所以,请只在确信该通道所连接的系统不能处理源路由地址时,才使用该关键字。
header_uucp
UUCP 或 bang-style 邮件头地址。建议不要使用该关键字。因为这种用法违反 RFC 976 规约。
解释使用 ! 和 % 的地址
关键字: bangoverpercent, nobangoverpercent, percentonly地址须永远依照 RFC 822 和 RFC 976 进行解释。然而,对于没有包括在这些标准内的某些复合地址,在处理上还是有些含糊。特别是具有 A!B%C 格式的地址,既可解释为:
A 为路由主机;C 为最终目的地主机
或
C 为路由主机;A 为最终目的地主机
虽然 RFC 976 暗示邮件程序可以使用后者之约定解释地址,但并未说明是否要求如此。有些情况下,前面的第一种解释可能更适用。关键字 bangoverpercent 可强制使用第一种 A!(B%C) 解释。关键字 nobangoverpercent 则强制使用后面的(A!B)%C 解释。nobangoverpercent 是默认设置。
备注: 该关键字对 A!B@C 格式的地址处理没有影响。因为这些地址永远被当作 (A!B)@C 进行处理。这种处理是 RFC 822 和 RFC 976 的共同要求。
关键字 percentonly 可忽略 bang 路由。当设定了这个关键字时,百分号则被解释为路由。
在地址中添加路由信息
关键字: exproute, noexproute, improute, noimprouteMTA 处理地址时采用的寻址模型假定:所有系统都知道所有其它系统的地址,并知道如何获取这些地址。不幸的是,这种理想的处理方法并非适用于所有情况,如:当某一通道所连接到的一个或多个系统不为世界其它地区所知时,则无法处理(例如,专用 TCP/IP 网上的内部机器)。该通道上的系统地址对于网站外的远程系统而言可能是非法的。如果您想回复这些地址,其中必须含源路由信息,以此通告远程系统使用本地机器路由邮件。如此,本地的机器才能(自动)将邮件传递到这些机器。
关键字 exproute(“explicit routing”之缩写)用于通告 MTA 相关的通道(在其地址被传送到远程系统时)需要显式路由。如果某通道上指定了该关键字,MTA 就会在所有与该通道匹配的邮件头地址和所有信封 From: 地址中添加含本地系统名称(或本地系统目前使用之别名)的信息。默认关键字 noexproute,则可指定不在其中添加路由信息。
选项 EXPROUTE_FORWARD 可用来将 exproute 之操作限制为“反向指向地址”(backward-pointing addresse)。当 MTA 通过某通道与之连接的系统不能自身执行正确的路由时,则会出现另一种情形。在这种情况中,与其它通道相关的所有地址都需有明确的路由,特别是当邮件中使用了这些地址,而发送通道与不能执行路由的系统相连接的时候,尤其如此。
隐式路由和关键字 improute 可用来为这种情况解围。MTA 知道所有与其它通道匹配的地址,在其被用于发送至标有 improute 的通道时需要进行路由选择。默认关键字 noimproute 用于指定不在通过特定通道外发的邮件地址中添加路由信息。选项 IMPROUTE_FORWARD 可用来将 improute 之操作限制为“反向指向地址”。
关键字 exproute 和 improute 应尽量少使用。因为着两个关键字会使地址变长,使之更复杂,而且可能会逾越其它系统使用的智能路由方案。显式和隐式路由不应与指定的路由相混淆。指定路由用于将重写规则中的路由信息插入到地址。这乃是通过特殊的 A@B@C 重写规则模板启用的。
当指定路由被启用时,它将应用于所有地址,邮件头和信封无一例外。指定路由是由特定重写规则启用的,因此通常独立于目前在用的通道。而显式和隐式路由则是在每条通道的基础上加以控制,所插入的路由地址也总是本地系统的地址。
通道关键字 routelocal 可使 MTA 在通道上重写地址时以“短路”方式中断地址中的任何显式路由。显式路由(使用 !、%,或 @ 字符)现已得以简化。
若在“内部”通道(如内部 TCP/IP 通道)上使用该关键字,则可用较简单的方式配置 SMTP 转节阻塞功能。
请注意,此关键字不要应在要求有显式 % 或其它路由的通道上使用。
邮件出队时的地址重写
关键字: connectalias, connectcanonicalMTA 通常在将邮件排列到其通道队列时对地址进行重写。而邮件出队时则没有任何重写操作。这就可能会在主机名称更换时,而通道队列还有仍送往旧名称的邮件时,带来潜在的问题。
关键字 connectalias 可指示 MTA 将邮件发送至收件人地址中列出的任何主机。这是默认关键字。关键字 connectcanonical 可指示 MTA 连接到应该与之连接的那个系统的主机别名。
指定更正不完全地址时应使用的主机名
关键字: remotehost, noremotehost, defaulthost, nodefaulthostMTA 常常会收到一些因邮件程序和 SMTP 客户程序配置不当或不符合标准而在其中没有域名的地址。在出现这种情况时,MTA 会在允许其通过之前,尝试使这种地址合法。其具体做法是:MTA 将在地址中附加一个域名(例如,将 @siroe.com 附加到 mrochek)。
对于缺失域名的信封 To: 地址,永远假定应附加本地主机名称。然而对于其它地址(如 From: 地址),在使用 MTA SMTP 服务器的情况下,则至少有两个可选择的域名,即本地 MTA 主机名和客户 SMTP 报告的远程主机名。或在某些情况下,可能还有第三个可用的选择,即在通过该通道入站的邮件上添加一个特定的域名。由于前两个选择的操作都会在一定频率上出现,所以看上去似乎都是正确的。在处理配置不当的 SMTP 客户程序时,最好使用远程主机的域名。而在处理轻型远程邮件客户程序(如使用 SMTP 传递邮件的 POP 或 IMAP 客户程序),则最好使用本地主机的域名。或如果是 POP 或 IMAP 等轻型远程邮件客户程序,则客户程序应该有其各自的特定域名,即非本地主机域名者。在此种情况下,最好添加特定的其它域名。MTA 能做到的是允许按通道进行选择。
通道关键字 noremotehost 可指定系统使用本地知己名。关键字 noremotehost 为默认值。
通道关键字 defaulthost 用于指定需添加在入站基本用户 id 中的特定主机名。其后必须跟有主机名,用以完成进入该通道的地址(在信封 From: 和邮件头中)。(如果是提交通道,defaulthost 关键字的第一个参数也会影响基本信封 To: 地址。)供选用的第二个域名(至少有一个英文句号者)可被指定用来完成信封 To: 的地址。而 nodefaulthost 是默认值。
正如前面“来件的备用通道(转换通道)” 所描述的那样,关键字 switchchannel 可用来将入站 SMTP 连接与某一特定通道相关联。这一工具可用来在某一通道上把远程邮件客户程序分成组,以便给予适当的处理。另一种方法是:统一部署符合标准的远程邮件客户程序(即使在使用多种不兼容的客户程序情况下),而不是试图在您的 MTA 主机上更正网络上的问题;相比之下,前者更为简单。
使收件人标题行的邮件合法化
关键字: missingrecipientpolicyRFC 822 要求(因特网)邮件必须含收件人标题行,即 To:、Cc: 或 Bcc: 标题行。没有此类标题行的邮件是非法的。但是,有些老掉牙的用户代理程序和邮件程序(例如许多旧版本的 sendmail 程序)仍会吐出一些非法邮件。
关键字 missingrecipientpolicy 可用一整数值指定使用这种邮件的方法;如果没有明确的关键字在用,默认值则为 0,其意思是将信封 To: 的地址放入 To: 邮件头中。
表 8-8 missingrecipientpolicy 的值
值
操作
请注意,选项 MISSING_RECIPIENT_POLICY 可用于设置这种行为的 MTA 系统默认值。初始的 Messaging Server 配置应将 MISSING_RECIPIENT_POLICY 设置为 1。
去除非法的空白收件人报头
关键字: dropblank, nodropblank在 RFC 822(因特网)邮件中,任何 To:、Resent-To:、Cc: 或 Resent-Cc: 报头或邮件头都需含至少一个地址,这种报头不能为空值。尽管如此,有的邮件程序还是会发放出此类非法报头或邮件头。通道关键字 dropblank 如果被指定于某源通道,则可使 MTA 从入站邮件中去除任何此种非法的空白报头。
启用针对具体通道的反向数据库的使用
关键字: reverse, noreverse关键字 reverse 可指示 MTA 按照地址反向数据库或 REVERSE 映射(如果二者之一有一个存在的话)检查并可能修改排列在通道中的邮件的地址。关键字 noreverse 则可免除对排列在通道中的邮件的地址进行地址反向处理。关键字 reverse 为默认值。有关详细说明,请参见“将内部格式地址转换为公共格式地址”。
启用受限邮箱编码
关键字: restricted, unrestricted有些邮件系统难于处理 RFC 822 允许的全长地址时。比较常见的例子是基于 sendmail 的邮件程序,特别是当其配置文件设置有误的情况下,尤其如此。引用的本地部分(或邮箱规范)是常见的麻烦来源:
这一问题变得如此严重,以至 RFC 1137 不得不制订相应的方法以迂回方式解决这一问题。基本方法是从地址中移除引用,然后通过翻译将需引用的字符映射成为 atom(组合单位)允许的字符(有关此处使用的 atom 一词的定义,请见 RFC 822)。例如,全面的地址可能变成:
通道关键字 restricted 可告知 MTA 与该通道连接的邮件系统需要这种编码。当邮件写入通道时,MTA 便可在报头和信封地址两处,对引用的本地部分进行编码处理。通道上的入站地址可自动解码。关键字 unrestricted 可指示 MTA 不进行 RFC 1137 编码和解码。关键字 unrestricted 是默认设置。
备注: 对于不能接受引用的本地部分的系统,当有通道与之连接时,则应使用关键字 restricted。但不应该应用于可实际生成援引本地地址部分的通道。(这种情况假定凡能生成这种地址的通道,也能处理这种这种地址。)
生成 Return-path: 标题行
关键字: addreturnpath, noaddreturnpath在通常情况下,添加 Return-path: 标题行是执行最终传递通道的作业项。但对某些通道而言(如 ims-ms 通道),由 MTA 添加 Return-path: 报头的效率比允许通道添加之作业法更好。关键字 addreturnpath 可使 MTA 在邮件于该通道入队时添加 Return-path: 报头。
从信封的 To: 和 From: 地址构建 Received: 标题行
关键字: receivedfor, noreceivedfor, receivedfrom, noreceivedfrom关键字 receivedfor 可指示 MTA:如果某邮件只定址给一个信封收件人,则将该信封的 To: 地址包括在构建的 Received: 标题行中。关键字 receivedfor 为默认值。关键字 noreceivedfor 将指示 MTA 构建 Received:标题行,但不包括任何信封地址信息。
关键字 receivedfrom 用于指示 MTA:如果 MTA 由于某种邮件发送列表的扩展(举例)而更改了信封 From: 地址,则在构建入站邮件的 Received: 标题行时包括原信封的 From: 地址。receivedfrom 是默认设置。关键字 noreceivedfor 将指示 MTA 构建 Received:标题行,但不包括原信封的 From: 地址。
处理地址 标题行中的注释
关键字: commentinc, commentmap commentomit, commentstrip, commenttotal, sourcecommentinc, sourcecommentmap, sourcecommentomit, sourcecommentstrip, sourcecommenttotalMTA 只在必要时解释标题行的内容。然而,所有含地址的注册标题行必须在分析后重写,并去除短格式地址,或将其转换为合法地址。在此过程中,系统将在重新构建标题行时抽取并可能修改或排除注释(即括号中的字串)。
对这一系统行为的控制,可通过使用关键字 commentinc、commentmap、commentomit、commentstrip 和 commenttotal 加以实现。关键字 commentinc 将指示 MTA 保留标题行中的注释。这是默认值。关键字 commentomit 将指示 MTA 从寻址报头中移除任何注释,例如:To:、From: 或 Cc: 标题行。
关键字 commenttotal 将指示 MTA 从所有标题行中移除任何注释,但 Received: 标题行除外;这个关键字通常用处不大,也不建议用户使用。关键字 commentstrip 可指示 MTA 从所有注释字段中去除任何非基本单元之字符。关键字 commentmap 可通过 COMMENT_STRINGS 映射表运行注释字串。
在源通道上时,对这种系统行为的控制可通过下列关键字的使用加以实现:sourcecommentinc、sourcecommentmap、sourcecommentomit、sourcecommentstrip 和 sourcecommenttotal。关键字 sourcecommentinc 将指示 MTA 保留标题行中的注释。这是默认值。关键字 sourcecommentomit 用于指示 MTA 从寻址报头中(例如,To:、From: 和 Cc: 报头)移除任何注释。关键字 sourcecommenttotal 用于指示 MTA 从所有标题行中移除任何注释,但 Received: 报头除外;因为这个关键字通常用处不大,也不建议用户使用。最后,关键字 sourcecommentstrip 用于指示 MTA 从所有注释字段中去除任何非基本单元之字符。关键字 sourcecommentmap 可通过源通道运行注释字串。
如果该条目模板设定有 $Y 标志,原注释则由特定的文本(应包括括号)予以替换。
处理地址标题行中的人名
关键字: personalinc, personalmap, personalomit, personalstrip, sourcepersonalinc, sourcepersonalmap, sourcepersonalomit, sourcepersonalstrip在重写过程中,所有含地址的注册标题行必须在分析后重写,并去除短格式地址,或将其转换为合法地址。在此过程中,系统将在重新构建标题行时抽取并可能修改或排除人名(即用尖括号分割的地址前面的字串)。
对这一系统行为的控制,可通过使用关键字 personalinc、personalmap、personalomit 和 personalstrip 加以实现。关键字 personalinc 可指示 MTA 保留报头中的人名。这是默认值。关键字 personalomit 用于指示 MTA 移除所有人名。关键字 personalstrip 用于指示 MTA 从所有人名字段中去除任何非基本单元之字符。关键字 personalmap 用于指示 MTA 通过 PERSONAL_NAMES 映射表运行人名。
在源通道上时,对这种系统行为的控制可通过下列关键字的使用加以实现:sourcepersonalinc、sourcepersonalmap、sourcepersonalomit 或 sourcepersonalstrip。关键字 sourcepersonalinc 可指示 MTA 保留报头中的人名。这是默认值。关键字 sourcepersonalomit 用于指示 MTA 移除所有人名。最后,关键字 sourcepersonalstrip 用于指示 MTA 从所有人名字段中去除任何非基本单元之字符。关键字 sourcepersonalmap 用于指示 MTA 通过源通道运行人名。
指定别名文件和别名数据库探查项
关键字: aliaslocal在一般情况下,只有被重写到本地通道(即 UNIX 上的通道 1)的地址可在别名文件和别名数据库中查找。关键字 aliaslocal 可被放置在某一通道上,以使被重写到该通道的地址也可在别名文件和别名数据库中查找。查找所造之探查句的具体格式由 ALIAS_DOMAINS 选项控制。
子地址的处理
关键字: subaddressexact, subaddressrelaxed, subaddresswild作为有关子地址的概念的背景资料,本地和 ims-ms 通道需特别解释地址(邮箱部分)的本地部分中的 + 字符:在格式为 name+subaddress@domain 的地址中,MTA 将 + 字符后面的邮箱部分视为子地址。本地通道把子地址当作附加的修饰信息加以处理,并在不考虑子地址的情况下将其传递到帐户名;ims-ms 通道则将子地址解释为文件夹名,即需将其传递到的文件夹。
子地址还对下列各项有影响:按本地通道查找的别名(即 UNIX 上的 L 通道)、按标记有 aliaslocal 关键字之任何通道查找的别名,以及按目录通道查找的邮箱。对以此种方式匹配的子地址的具体处理,其方法是可以配置的:当对照一个条目比较子地址时,MTA 总是先检查包括全字匹配的子地址的整个邮箱;另外,MTA 是否在此后需进行其它或额外检查,这也是可以配置的。
关键字 subaddressexact 用于指示 MTA 在匹配条目期间不进行特殊的子地址处理;整个邮箱(包括子地址)必须与一条目匹配,以使别名被视为与之匹配。系统将不进行额外的比较(特别是不进行通配符的比较或子地址已被移除项的比较)。关键字 subaddresswild 将指示 MTA 在寻找包括整个子地址在内的精确匹配项后,MTA 下一步应寻找格式为名称 +* 的条目。关键字 subaddressrelaxed 用于指示 MTA 在寻找精确匹配以及与之匹配的格式为名+* 的项目后,MTA 应只对名称部分的匹配情况再次检查。使用关键字 subaddressrelaxed 时,具下列格式的别名条目可匹配于名称或名称 + 子地址,从而将原名转换为新名称,并将名称 + 子地址转换为新名称 + 子地址。关键字 subaddressrelaxed 为默认值。
因此,关键字 subaddresswild 或关键字 subaddressrelaxed 可在别名或目录通道被占用但用户想接收用任意子地址定址的邮件时使用。这些关键字免除了为一个地址上的每一单个子地址变体提供分开的条目之必要。
需注意的一点是,这些关键字只对本地通道(即 UNIX 上的 L 通道)和目录通道,或任何有 aliaslocal 关键字标记的通道有意义。
标准的 Messaging Server 配置只转接到真正有 subaddressrelaxed 行为的 L 通道(当其它关键字没有明确使用时,此乃默认关键字)。
启用具体通道的重写规则检查
关键字: rules, norules关键字 rules 用于指示 MTA 强制对该通道的重写规则进行检查。这是默认值。关键字 norules 用于指示 MTA 不检查该通道。这两个关键通常在调试时使用,很少在实际应用中使用。
移除源路由
关键字: dequeue_removeroute关键字 dequeue_removeroute 可用来在邮件出队时从信封 To: 地址中移除源路由。该关键字目前只能在 tcp-* 通道上执行。当把邮件传送到不能正确处理源路由的系统时,可用此关键字。
指定必须来自别名的地址
关键字: viaaliasoptional, viaaliasrequiredviaaliasrequired 可指定:与通道匹配的最终收件人地址必须由一别名生成。最终收件人地址是指进行别名扩展后(如果相关的话)的匹配项。该地址不能作为收件人地址直接交与 MTA;也就是说,只将地址重写到通道是不够的。在重写至通道后,地址还需通过别名扩展,然后才能被视为真正与通道匹配。
例如,关键字 viaaliasrequired 可在一本地通道上使用,以防止被传送到任意帐户(如 UNIX 系统上的任意本地 Berkeley 邮箱)。
默认关键字为 viaaliasoptional,这意味系统并不要求与通道匹配的最终收件人地址一定要从一别名而生。
配置邮件头处理功能
本节将就处理邮件头或报头以及信封信息的关键字加以说明。这一部分由下列分节组成:
重写嵌入邮件头
标题行的内容只在必要时才予以解释。然而,由于 MIME 邮件能在邮件中嵌入邮件(message/RFC822),故可含多套邮件头。MTA 通常只解释和重写邮件头的最外围的部分。也可通过选择指示 MTA 对邮件内的内部邮件头同样应用邮件头重写。
此项操作可通过使用 noinner 和 inner 两个关键字得以控制。关键字 noinner 可指示 MTA 不重写邮件内的标题行。这是默认值。关键字 inner 可指示 MTA 对邮件语法进行分析并重写邮件内的邮件头。这些关键字可应用于任何通道。
移除选定的邮件标题行
关键字: headertrim, noheadertrim, headerread, noheaderread, innertrim noinnertrimMTA 可提供针对每一通道的工具,用以修剪或移除所选邮件的标题行。这项操作可通过通道关键字与相关的一个或两个报头选项文件之结合而实现。关键字 headertrim 可指示 MTA 在对原邮件头进行处理后,先查找与通道相关的邮件头选项文件,然后对排列在该目的地通道中的邮件之报头进行相应的修剪。关键字 noheadertrim 可免除对邮件头的修剪。关键字 noheadertrim 是默认值设置。
关键字 innertrim 用于指示 MTA 同时在里面的邮件部分进行邮件头修剪,即嵌入的 MESSAGE/RFC822 部分。默认关键字 noinnertrim 可用于指示 MTA 不对里面的邮件部分进行邮件头修剪。
关键字 headerread 可指示 MTA 在对原邮件头进行处理前,先查找与通道相关的邮件头选项文件,然后对排列在该源通道中的邮件之报头进行相应的修剪。请注意,headertrim 邮件头的修剪却是在邮件处理后应用的,而且是目的地通道,而非源通道。关键字 noheaderread 可免除入队邮件报头修剪。noheaderread 是默认关键字。
与关键字 headeromit 和 headerbottom 不同的是,关键字 headertrim 和 headerread 可应用于任何通道。然而须注意的情况是,从邮件中去除重要的报头信息可能会使 MTA 出现不正常的操作。因此在选择需移除或限制的报头时,须务必谨慎为佳。之所以要提供这种工具,是因为被选取的标题行有时必须移除或通过其它方式加以限制。
从邮件中去除报头信息可能会使 MTA 出现不正常的操作。因此在选择需移除或限制的报头时,须谨慎为佳。之所以要提供这 ie 关键字,是因为被选取的标题行有时必须移除或加以限制。在修剪或移除任何标题行之前,您必须理解标题行的用途,并考虑到移除后可能带来的影响。
关键字 headertrim 和 innertrim 的报头选项文件所具有的名称呈 channel_headers.opt 格式加上通道,即报头选项文件与之相关的通道名称。同样,关键字 headerread 所具有的名称呈 channel_read_headers.opt 格式。这些文件储存于 MTA 配置目录:server_root/msg-instance/imta/config/。
生成/移除 X-Envelope-to: 标题行
关键字: x_env_to, nox_env_to关键字 x_env_to 和 nox_env_to 用于控制在排列于具体通道中的邮件副本上生成或抑制 X-Envelope-to 标题行。在标记有 single 关键字的通道上,关键字 x_env_to 可启用这些报头的生成,而 nox_env_to 则可从入队的邮件中移除此类报头。默认关键字是 nox_env_to。
关键字 x_env_to 还需要有 single 关键字与之一起使用才能起作用。
将日期转换为二或四位数
关键字: datefour, datetwo原有的 RFC 822 规范要求邮件头中的日期字段应为两位数年份。后来出版的 RFC 1123 将日期格式改为四位数,然而,有些老邮件系统却无法接受四位数日期。更麻烦的是,较新的邮件系统又不能忍受两位数的日期。
备注: 凡是不能处理这两种日期格式的系统,都属违反标准。
关键字 datefour 和 datetwo 可用来控制 MTA 在处理邮件头中的年份字段的方法。默认的关键字 datefour 可指示 MTA 将所有年份字段扩展为四位数。系统将在小于 50 的两位数日期值中添加 2000,而在大于 50 的值中添加 1900。
关键字 datetwo 可指示 MTA 从四位数日期中删除前面的两位数。这是为需要使用两位数日期的不符合标准的邮件系统提供兼容性;但决不应用于任何其它目的。
指定日期中的星期
关键字: dayofweek, nodayofweekRFC 822 规范允许在邮件头的日期字段中存在主要的星期格式。然而,有些系统则不能接受有关星期的信息。致使某些系统不愿将星期信息包括在内,即使在邮件头中包括这样的信息很有用处。
关键字 dayofweek 和 nodayofweek 可控制 MTA 处理星期信息的方式。默认关键字 dayofweek 可用来指示 MTA 保留任何星期信息,并在缺失的情况下将其添加到日期和时间报头中。
关键字 nodayofweek 可指示 MTA 从日期和时间报头中移除任何主要的星期信息。这是为不能处理星期信息的不符合标准的邮件系统提供的一种兼容方式;但决不应用于任何其它目的。
自动分割长标题行
关键字: maxheaderaddrs, maxheaderchars有些邮件传递程序,特别是有些 sendmail 系统,不能妥善地处理长标题行。其结果往往不仅是使报头损坏,而且会误使邮件遭到拒绝。虽然这种操作严重违反了标准,但却是一个较常见的问题。
MTA 提供的、针对具体通道的工具可将长标题行分割(拆开)成多个独立的标题行。关键字 maxheaderaddrs 用于控制一行上可以显示多少个地址。关键字 maxheaderchars 用于控制一行上可以显示多少个字符。这两个关键字都需要一个单一的整数参数,用以指定相关的限制。默认设置是:不限制标题行的长度,也不限制显示的地址数量。
报头对齐和折行
关键字: headerlabelalign, headerlinelength关键字 headerlabelalign 用于控制在该通道上排列的邮件头的成行点;需使用一整数值的变量。对齐点乃是报头内容对齐的页边距。例如,取 10 为样本标题行的对齐点时,其格式为下列:
To: joe@siroe.com
From: mary@siroe.com
Subject: Alignment test默认 headerlabelalign 是 0,可使报头不对齐。关键字 headerlinelength 用于控制在该通道上排列的邮件标题行的长度。长度超过这一限制的行将按照 RFC 822 折行规则折行。
这些关键字只控制邮件队列中的邮件报头格式;报头的实际显示通常由用户代理程序控制。此外,当邮件在因特网上传输的时候,报头会定期被重新格式处理,所以这些关键字可能没有显著的效果,即使与不能重新格式处理邮件头的简单用户代理程序一起使用时,也是如此。
处理含许多地址的长标题行是一项非常耗用系统资源的操作。关键字 maxprocchars 可用来指定 MTA 能处理并重写的最大报头长度。报头长度超过此限的邮件仍可被接受和传递,但唯一不同的是长标题行将不会被以任何方式重写。此项操作需使用单一的整数参数。默认设置是处理任何长度的报头。
阅读权限检查
关键字: sensitivitynormal, sensitivitypersonal, sensitivityprivate sensitivitycompanyconfidential阅读权限检查关键字可设定某通道可接受的邮件阅读权限的上限。默认关键字是 sensitivitycompanyconfidential;即任何阅读权限的邮件都可通过。无 Sensitivity: 报头的邮件被视为正常邮件,即最低的阅读权限。邮件阅读权限高于由此关键字指定之限制者,将在其于通道入队之时予以拒收,并拌以下列出错讯息:
message too sensitive for one or more paths used
请注意,MTA 的这种阅读权限检查是根据每封邮件的情况,而不是在每个收件人级上进行的:即如果一个收件人的目的地通道没有通过阅读权限检查,则所有收件人的邮件都将被退回,而不是只退回与此阅读权限通道相关的收件人的邮件。
报头中的编码文字可以为某种特定语言。关键字 language 可指定所需的默认语言。
附件与 MIME 处理
本节将就附件和 MIME 处理所需使用的关键字加以说明。这一部分由下列分节组成:
忽略 Encoding:标题行
忽略 Encoding:标题行
关键字: ignoreencoding, interpretencodingMTA 可用 Yes CHARSET-CONVERSION 将各种非标准的邮件格式转换为 MIME。特别是 RFC 1154 格式,因为这种格式使用了一种非标准的 Encoding: 标题行。然而,有些网关会在这种标题行上传送一些不正确的信息,其结果是有时最好忽略这种标题行。关键字 ignoreencoding 可用来指示 MTA 忽略任何 Encoding: 标题行。
备注: 除非 MTA 启用了 CHARSET-CONVERSION,否则这种报头在任何情况下都予以忽略。关键字 interpretencoding 可用来指示 MTA 严加注意任何有 Encoding: 的标题行(如果是通过其它方式如此配置的话);该关键字是默认设置。
自动重组邮件/部分邮件
关键字: defragment, nodefragmentMIME 标准规定了可将邮件分成几个小部分的邮件/部分内容类型。这一规定的用处在于:当邮件需在有大小限制的网络上传输时,或在不可靠的网络上传输时邮件分段可被“检查点”阻挡,从而使邮件在传输期间因网络故障而无法随后进行全面复制还原。这一标准规定了邮件每一部分中应包括的信息,以便邮件可在抵达目的地后自动重新组装。
通道关键字 defragment 和重组通道为在 MTA 中重新组装邮件提供了有效的手段。当某通道被标记为 defragment 时,通道中排列的任何部分邮件都将被转到重组通道队列。待所有“部分”抵达后,系统将重建邮件,然后发送出去。关键字 nodefragment 用于关闭此特殊处理功能。关键字 nodefragment 为默认值。
大型邮件自动拆分
关键字: maxblocks, maxlines有些电子邮件系统或网络传输装置不能处理超过一定大小限制的邮件。MTA 提供的工具可用来在每一通道的基础上实行这种限制。超过设定限制的邮件将自动被拆分(分段)为几个小邮件。用于这种拆分作业的内容类型是 message/partial,并添加有一独特的 ID 参数,以便同一邮件的各个部分可相互关联,并可由接收邮件程序自动重新组装。
关键字 maxblocks 和 maxlines 用于实施大小限制,一旦有超限的邮件,拆分功能便可自动启用。这两个关键字后面都需跟有单一的整数值。关键字 maxblocks 用于指定邮件中允许的最大信息块数量。MTA 的一个信息快通常为 1024 字节;这一数量可用 MTA 选项文件中的 BLOCK_SIZE 选项进行变换。关键字 maxlines 用于指定邮件中允许的最多行数。需要时,这两个极限可同时实施。
从某种程度上讲,邮件的大小包括邮件头。因为邮件头不能被分成多个邮件,但邮件头本身却能超过指定的大小限制,故须使用一个非常复杂的机制来计算邮件头的大小。这一逻辑受控于 MTA 选项文件中的 MAX_HEADER_BLOCK_USE 和 MAX_HEADER_LINE_USE 选项。
MAX_HEADER_BLOCK_USE 用于指定 0 和 1 之间的一个实数。默认值是 0.5。系统只允许邮件头占用邮件可消耗的总信息块数量的一定数量(由关键字 maxblocks 指定)。如果邮件头较大,MTA 则取 MAX_HEADER_BLOCK_USE 和 maxblocks 的乘积作为邮件头的大小(邮件头的大小取实际邮件头大小和 maxblocks 之间的较小者)* MAX_HEADER_BLOCK_USE。
例如,如果 maxblocks 是 10 且 MAX_HEADER_BLOCK_USE 是默认值(即 0.5),则任何大于 5 个信息块的邮件头都将作为 5-block 报头处理,如果邮件的大小是 5 个信息块或更少,则不予以拆分。就邮件大小极限而言,0 值会使报头有效地得以忽略。
该值为 1 时,系统则允许邮件头使用所有可用的量。每一拆分的部分至少要有一行,不论其是否超过极限。MAX_HEADER_LINE_USE 在与关键字 maxlines 一起使用时,其作业方法与此相同。
SMTP 规范允许文本行数可含 1000 字节。然而,有些传输装置则可对行长度实施严格的限制。关键字 linelength 提供的机制可用来以通道为基础限制最大允许的邮件行长度。如果在特定通道入队的邮件,其长度超过了为该通道指定的极限,系统则自动对其进行编码处理。
MTA 中可用的各种编码功能总能将行长度降至少于 80 个字符。原邮件可在经过这种编码后得以还原,方法是:应用适当的解码过滤器。
备注: 编码功能只能将行长度减至不多于 80 个字符。小于 80 的行长度值规范可能不会真正地生成符合所述限制的行长。
关键字 linelength 可使数据的编码作业为传输目的而进行“软”折行。编码通常在接收端解码,以便恢复原来的“长”行。有关“硬”折行的说明,请见“Record, text”CHARSET-CONVERSION。
邮件大小限制、用户定额和特权
本节说明设定邮件大小限制、用户定额和特权所需使用的关键字。这一部分由下列分节组成:
指定邮件的绝对大小极限
指定邮件的绝对大小极限
关键字: blocklimit, noblocklimit, linelimit, nolinelimit, sourceblocklimit虽然拆分可自动将邮件分成小块,但在有些情况下,较为适宜的做法是拒收那些超过管理部门界定之极限的邮件(例如,为了防止因蓄意的攻击而出现拒绝服务现象)。
关键字 blocklimit、linelimit 和 sourceblocklimit 用于实施绝对大小限制。这几个关键字后面都需跟有单一的整数值。
关键字 blocklimit 用于指定邮件中允许的最大信息块数量。对于信息块数量超过此限量的邮件,MTA 将拒绝把其排入通道的尝试。MTA 的一个信息快通常为 1024 字节;这一数量可用 MTA 选项文件中的 BLOCK_SIZE 选项进行变换。
关键字 sourceblocklimit 用于指定入站邮件中允许的最大信息块数量。对于信息块数量超过此限量的邮件,MTA 将拒绝把其提交到通道的尝试。换言之,blocklimit 适用于目的地通道;sourceblocklimit 适用于源通道。MTA 的一个信息快通常为 1024 字节;这一数量可用 MTA 选项文件中的 BLOCK_SIZE 选项进行变换。
关键字 linelimit 用于指定邮件中允许的最多行数。对于行数超过此限量的邮件,MTA 将拒绝把其排入通道的尝试。必要时,关键字 blocklimit 和 linelimit 可同时施加。
MTA 选项 LINE_LIMIT 和 BLOCK_LIMIT 可在所有通道上实施类似的限制。这些极限的好处是它们可在所有通道上使用。因此,MTA 服务器可在获得邮件收件人信息之前,使邮件客户程序对此有所准备。对于某些通信协议而言,这种限制简化了邮件拒收过程。
通道关键字 nolinelimit 和 noblocklimit 都是默认值,这意味着除了通过 LINE_LIMIT 或 BLOCK_LIMIT MTA 选项施加的任何全局限制外,没有其它限制。
处理超定额用户的邮件传递
关键字: holdexquota, noexquota关键字 noexquota 和 holdexquota 可用来控制如何处理传送给 Berkeley 邮箱用户(UNIX)的邮件,即用户传递到 uid 本地通道,但用户超过了他们的磁盘定额。
noexquota 可指示 MTA 将传送给超定额用户的邮件退回给邮件的发件人。holdexquota 则指示 MTA 暂时保留传送给超定额用户的邮件;这类邮件将保留在 MTA 队列中,直至被传递或超时为止,然后通过邮件退回作业将其退回给发件人。
在 MTA 队列 中创建文件
本节描述您可用之控制磁盘资源的关键字,具体方法是在 MTA 队列中指定需创建的文件。这一部分由下列分节组成:
控制如何处理邮件上的多地址
控制如何处理邮件上的多地址
关键字: multiple, addrsperfile, single, single_sysMTA 允许每一入队的邮件显示多个目的地址。有些通道程序只能处理有一个收件人的邮件,或有有限数量收件人的邮件,或每个邮件副本只有一个目的地系统的邮件。例如,SMTP 通道主程序在特定的事务处理中只能与单一远程主机建立连接,至此只有定址到该主机的地址能够得到处理(即尽管某单一通道通常可用于所有 SMTP 业务)。
另一个例子是,有些 SMTP 服务器可能会就其一次处理收件人的数量施加限量,同时又不能处理此类错误。
关键字 multiple、addrsperfile、single 和 single_sys 可用于控制如何处理多个地址。关键字 single 可指定为每个目的地址在通道上创建一个单独的邮件副本。关键字 single_sys 可为每个所用目标系统创建一个单一的邮件副本。默认关键字 multiple 可用来为整个通道创建邮件的单一副本。
备注: 不论使用哪个关键字,系统都将为邮件入队的每个通道至少创建一个邮件副本。
关键字 addrsperfile 用于在限制收件人的最大数量,即与通道队列中单一邮件文件相关的收件人数量,这样便可限制一次作业处理的收件人数量。该关键字需要使用单一整数变量,用以指定邮件文件中允许的最大收件人地址数量;如果达到了这个数,MTA 将自动创建额外的邮件文件将其容纳在其中。(默认关键字 multiple 总体上相当有于不在邮件文件中施加收件人数量限制,但 SMTP 通道的默认设置为 99。)
其默认设置是:所有入队的邮件都作为文件储存在
/imta/queue/channel-name 目录中,其中 channel-name 为通道名。然而,对于需处理大量邮件的通道而言,如 TCP/IP 通道,因为总是累积有大量等待处理的邮件文件,所以若把这些邮件文件分布到几个子目录,文件系统的性能可能会有所改善。通道关键字 subdirs 提供了这一能力:其后应跟有一个整数,用以指定在其上分布该通道邮件的子目录的数量;例如:tcp_local single_sys smtp subdirs 10
配置日志记录和调试
本节说明关键字 logging 和 debugging。
日志记录关键字
日志记录关键字
关键字: logging, nologgingMTA 提供的工具可记录入队和出队的每一封邮件的情况。关键字 logging 和 nologging 可针对每个通道控制邮件的日志记录。在默认状态下,初始配置将打开所有通道的日志记录功能。在通道定义中替换成 nologging 关键字可禁用某个特定通道的日志记录功能。
有关日志记录的详细说明,请见第 13 篇 “日志记录和日志分析”。
关键字 Debugging
关键字: master_debug, slave_debug, nomaster_debug, noslave_debug一些通道程序包含有可选代码,以便产生附加的诊断输出来协助调试。有两个通道关键字可用来启用产生针对每一个通道的调试输出。这两个关键字是:在主程序中启用调试输出的 master_debug 和在从属程序中启用调试输出的 slave_debug。默认状态下,两类调试输出都被禁用,相应关键字为 nomaster_debug 和 noslave_debug。
启用后,调试输出将出现在与通道程序相关的日志文件中。日志文件的位置因程序而异。日志文件通常保存在日志目录中。主程序日志文件名的形式通常为 x_master.log,此处的 x 为通道名。从属程序日志文件名的形式通常为 x_slave.log。
在 UNIX 中,当 master_debug 和 slave_debug 启用用于 l 通道时,用户随后会在含 MTA 调试信息的当前目录中收到 imta_sendmail.log-uniqueid 文件(如果他们有写入该目录的权限的话;否则调试输出转到 stdout)。
设置循环检查
关键字: loopcheck, noloopcheck关键字 loopcheck 可将字串放置在 SMTP EHLO 应答标志区,以便 MTA 检查其自身是否在与之通信。当设定了 loopcheck 时,SMTP 服务器将以 XLOOP 扩展文件出面。
当它与支持 XLOOP 的 SMTP 服务器通信时,MTA 的 SMTP 客户程序将用其 MTA 值比较显示的字串,并在客户程序与 SMTP 服务器实际通信之时立即退回邮件。
其它关键字
本节描述其它关键字的使用方法。这一部分由下列分节组成:
通道操作类型
Messaging Server 支持 RFC 2476 的邮件提交协议。关键字 submit 可用于将一通道标记为仅用于提交的通道。这通常对 TCP/IP 通道最为有用,如一个运行在专用于提交邮件的特殊端口上 SMTP 服务器;RFC 2476 将端口 587 确定为用于此类邮件提交。
请注意,user 的参数或变量通常被强制使用小写,但如果是引用参数,则保留原来的大小写字样。
指定邮箱过滤器文件的位置
关键字: filter, nofilter, channelfilter, nochannelfilter, destinationfilter nodestinationfilter, sourcefilter, nosourcefilter, fileinto, nofileinto)关键字 filter 可用来在本机和 ims-ms 通道上指定该通道的用户过滤器文件的位置。描述过滤器文件位置时,须用 URL 参数。nofilter 是默认设置,它意味着用户邮箱过滤器没有为该通道而启用。
关键字 sourcefilter 和 destinationfilter 可用来在一般的 MTA 通道上指定通道级过滤器,以分别应用于入站和出站邮件。这些关键字需使用 URL 参数描述通道过滤器文件的位置。nosourcefilter 和 nodestinationfilter 是默认设置,它意味着没有为通道的任何后一个方向启用通道邮箱过滤器。
已废弃的关键字 channelfilter 和 nochannelfilter 分别与 destinationfilter 和 nodestinationfilter 同义。
目前只支持 ims-ms 通道的关键字 fileinto 用于指定施加了邮箱过滤器的 fileinto 算符后如何改变地址。对于 ims-ms 通道而言,通常的用法为:
上述例子指定:文件夹名称应作为子地址插入到原地址,以此替换任何原有的子地址。
上一页 目录 索引 下一页
(c) 2002 年 Sun Microsystems, Inc. 版权所有。
更新日期:2002 年 2 月 27 日