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

配置 SMTP 通道

根据安装的类型,Messaging Server 在安装时提供了多个 SMTP 通道(请参见下表)。这些通道将实现基于 TCP/IP 的 SMTP。多线程的 TCP SMTP 通道包含一个多线程的 SMTP 服务器,该服务器在分发程序的控制下运行。外发 SMTP 邮件由通道程序 tcp_smtp_client 处理,并根据需要在作业控制器的控制下运行。

表 12–20 SMTP 通道

通道 

定义 

tcp_local

接收来自远程 SMTP 主机的入站邮件。根据是否使用智能主机/防火墙配置,将出站邮件直接发送到远程 SMTP 主机,或者将出站邮件发送到智能主机/防火墙系统。 

tcp_intranet

在内部网中接收和发送邮件。 

tcp_auth

用作 tcp_local 的切换通道;经过验证的用户将切换到 tcp_auth 通道,以避免中继阻止限制。

tcp_submit

在保留的提交端口 587(请参见 RFC 2476)上接受邮件提交(通常来自用户代理)。 

tcp_tas

各站点用来进行统一邮件服务的 IA 特殊通道。 

您可以修改上述通道的定义,或通过添加或删除本节中说明的关键字来创建新通道。此外,还可以使用选项文件来控制 TCP/IP 通道的各种特性。此类选项文件必须存储于 MTA 配置目录 (msg_svr_base/config) 中,并命名为 x_option,其中 x 为通道的名称。有关详细信息,请参阅 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“Option File”

本节分为以下小节:

配置 SMTP 通道选项

TCP/IP 通道选项文件控制 TCP/IP 通道的各种特性。通道选项文件必须存储在 MTA 配置目录中,并命名为 x_option,其中 x 是通道的名称。例如,/msg_svr_base/config/tcp_local_option

选项文件由一个或多个关键字及其关联的值组成。例如,通过在选项文件中包含 DISABLE_EXPAND 关键字并将值设置为 1,可以在服务器上禁用邮递列表扩展。

使用其他选项文件关键字可以进行以下设置:

有关所有通道选项关键字和语法的信息,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》

SMTP 命令和协议支持

您可以指定 SMTP 通道是否支持特定的 SMTP 命令,例如 EHLO、ETRN、EXPN 和 VRFY。您也可以指定通道是否支持 DNS 域验证,通道接受为行终止符的字符等。本节说明了以下内容:

表 12–21 汇总了本节中说明的关键字。

表 12–21 SMTP 命令和协议关键字

通道关键字 

说明 

协议选定和行终止符

指定通道是否支持 SMTP 协议并指定接受为行终止符的字符序列。

smtp

支持 SMTP 协议。关键字 smtp 对所有 SMTP 通道都具有强制性。(此关键字等效于 smtp_crorlf。)

nosmtp

不支持 SMTP 协议。该值为默认值。 

smtp_cr

接受以回车 (CR)(不跟换行符 [LF])终止的行。 

smtp_crlf

必须以回车 (CR) 加换行符 (LF) 序列终止行。 

smtp_lf

接受以换行符 (LF)(前面没有 CR)终止的行。 

smtp_crorlf

可以使用回车 (CR)、换行符 (LF) 序列或完整的 CRLF 终止行。 

EHLO 关键字

指定通道处理 EHLO 命令的方式

ehlo

在初始连接中使用 SMTP EHLO 命令。 

checkehlo

检查 SMTP 响应标题,以确定使用 EHLO 还是 HELO。 

noehlo

不使用 EHLO 命令。 

ETRN 关键字

指定通道处理 ETRN 命令(请求队列处理)的方式

allowetrn

执行 ETRN 命令。 

blocketrn

阻止 ETRN 命令。 

domainetrn

仅执行指定域的那些 ETRN 命令。 

silentetrn

执行 ETRN 命令,不回显通道信息。 

sendetrn

发送 ETRN 命令。 

nosendetrn

不发送 ETRN 命令。 

VRFY 关键字

指定通道处理 VRFY 命令的方式

domainvrfy

使用完整地址发出 VRFY 命令。 

localvrfy

使用本地地址发出 VRFY 命令。 

novrfy

不发出 VRFY 命令。 

vrfyallow

向 VRFY 命令提供信息响应。 

vrfydefault

根据通道的 HIDE_VERIFY 选项设置向 VRFY 命令提供默认响应。 

vrfyhide

向 SMTP VRFY 命令提供模糊的响应。 

EXPN 关键字

指定通道处理 EXPN 关键字的方式 

expnallow

允许 EXPN,即使已使用 DISABLE_EXPAND SMTP 通道选项在 SMTP 服务器级别禁用 EXPN

expndisable

无条件禁用 EXPN

expndefault

如果已将 SMTP 服务器设置为允许 EXPN,则允许 EXPN。(默认值)

DNS 域验证

指定通道是否执行 DNS 域验证

mailfromdnsverify

验证 MAIL FROM: 命令中使用的域存在于 DNS 中。

nomailfromdnsverify

不验证 MAIL FROM: 命令中使用的域存在于 DNS 中。

字符集和八位数据

指定通道处理八位数据的方式(注意:尽管这些关键字通常用于 SMTP 通道中但是它们与所有类型的通道都具有潜在的相关性。

charset7

与 7 位文本邮件关联的默认字符集 

charset8

与 8 位文本邮件关联的默认字符集 

charsetesc

与包含换码符的 7 位文本关联的默认字符集 

eightbit

通道支持八位字符。 

eightnegotiate

如果可能,通道应对使用八位传输进行协商。 

eightstrict

通道应拒绝包含非法的八位数据的邮件。 

sevenbit

通道不支持八位字符;必须对八位字符进行编码。 

协议流

指定通道要使用的协议流的程度。

streaming

控制与通道关联的协议中使用的协议流的程度。 

通道协议选定和行终止符

关键字:smtpnosmtpsmtp_crlf smtp_crsmtp_crorlfsmtp_lf

smtpnosmtp 关键字指定通道是否支持 SMTP 协议。smtp 关键字或其变量之一对所有 SMTP 通道都具有强制性。

关键字 smtp_crlfsmtp_crsmtp_crorlfsmtp_lf 可用于在 SMTP 通道上指定 MTA 将接受为行终止符的字符序列。关键字 smtp_crlf 的意思是必须以回车 (CR) 加换行符 (LF) 序列终止行。关键字 smtp_lfsmtp 的意思是接受前面不带 CR 的 LF。最后,smtp_cr 的意思是接受后面不跟 LF 的 CR。上述选项只对外来内容的处理有影响。

由于 SMTP 标准要求将 CRLF 作为行终止符,因此 MTA 始终生成标准的 CRLF 序列。各种 smtp 关键字只控制 MTA 是否接受其他非标准行终止符。例如,如果希望 MTA 只接受完全合法的 SMTP 邮件并拒绝所有带有非标准行终止符的邮件,则可以指定 stmp_crlf

EHLO 命令支持

关键字:ehlonoehlocheckehlo

SMTP 协议已经被扩展 (RFC 1869) 为允许附加命令的协商。这是通过使用新的 EHLO 命令(替代 RFC 821 的 HELO 命令)来进行的。扩展的 SMTP 服务器通过提供其支持的扩展列表来响应 EHLO。未扩展的服务器返回未知命令错误,然后客户机发送旧的 HELO 命令。

这种应变策略通常与扩展的服务器和未扩展的服务器都能协同工作。但是不按照 RFC 821 实现 SMTP 的服务器却会出现问题。尤其是,某些不兼容的服务器在收到未知命令后会断开连接。

当任何服务器收到 EHLO 后断开连接时,SMTP 客户机实现尝试重新连接并使用 HELO 的策略。但是,如果远程服务器在收到 EHLO 后不仅断开连接而且进入问题状态,则该策略可能无法工作。

提供了通道关键字 ehlonoehlocheckehlo,用于处理此类情况。关键字 ehlo 通知 MTA 在所有初始连接尝试中使用 EHLO 命令。关键字 noehlo 禁用所有对 EHLO 命令的使用。关键字 checkehlo 测试远程 SMTP 服务器返回的响应标题中是否含有字符串 "ESMTP"。如果找到该字符串,则使用 EHLO;否则,使用 HELO。默认行为将在所有初始连接尝试中使用 EHLO,除非标题行含有字符串 "fire away",在这种情况下将使用 HELO;请注意,没有与此默认行为相对应的关键字,它介于 ehlocheckehlo 关键字产生的行为之间。

ETRN 命令支持

关键字:allowetrnblocketrndisableetrndomainetrnsilentetrnsendetrnnosendetrnnovrfy

ETRN 命令(在 RFC 1985 中定义)对 SMTP 服务进行了扩展,使 SMTP 客户机和服务器可以交互操作,从而使服务器有机会启动对将进入给定主机的邮件队列的处理。

SMTP 客户机可以使用 ETRN 请求远程 SMTP 服务器启动对将发送到 SMTP 客户机的邮件队列的处理。这样,ETRN 提供了对进入自身系统的邮件实现远程 SMTP 系统“轮询”的方法。这对于彼此之间只有瞬态连接的系统(例如,设置为其他站点 [只能拨号连接到 Internet] 的辅助邮件交换 [MX] 主机的站点)可能会很有用。通过启用该命令,远程(可能是拨号)服务器可以请求对其邮件的传送。

SMTP 客户机在 SMTP ETRN 命令行中指定要向其发送邮件的系统的名称(通常为 SMTP 客户机系统自身的名称)。如果远程 SMTP 服务器支持 ETRN 命令,它将触发一个单独进程的执行过程,以重新连接到指定的系统,并为该系统发送所有正在等待传送的邮件。

对 ETRN 命令的响应

当发送邮件的 SMTP 客户机发出 ETRN 命令,请求 MTA 尝试传送 MTA 队列中的邮件时,allowetrnblocketrndomainetrnsilentetrn 关键字将控制 MTA 的响应。

默认情况下,MTA 将尝试执行所有 ETRN 命令;也就是说,将启用 allowetrn 关键字。通过在通道定义中包含 blocketrn 关键字可以指定 MTA 不执行 ETRN 命令。

通过包含 silentetrn 关键字,可以指定 MTA 执行所有 ETRN 命令,但不回显域所匹配且 MTA 将尝试运行的通道的名称。domainetrn 关键字指定 MTA 仅执行指定了域的 ETRN 命令;另外它还使 MTA 不回显域所匹配且 MTA 将尝试运行的通道的名称。

disableetrn 完全禁用对 ETRN 命令的支持;SMTP 服务器不将 ETRN 公布为支持的命令。

发送 ETRN 命令

sendetrnnosendetrn 通道关键字控制 SMTP 连接开始时 MTA 是否发送 ETRN 命令。默认设置为 nosendetrn,表示 MTA 将不发送 ETRN 命令。如果远程 SMTP 服务器声称支持 ETRNsendetrn 关键字将通知 MTA 发送 ETRN 命令。sendetrn 关键字后面应跟请求尝试传送其邮件的系统的名称。

VRFY 命令支持

关键字:domainvrfylocalvrfyvrfyallowvrfydefaultvrfyhide

VRFY 命令使 SMTP 客户机能够向 SMTP 服务器发送请求,请求验证特定用户名称的邮件是否位于服务器中。VRFY 命令是在 RFC 821 中定义的。

服务器将发送响应,表明用户是否本地用户、是否要转发邮件等。编号为 250 的响应表示用户名是本地的;编号为 251 的响应表示用户名不是本地的,但服务器可以转发邮件。服务器响应包含邮箱名称。

发送 VRFY 命令

正常情况下,没有理由将 VRFY 命令作为 SMTP 对话的一部分发出。SMTP RCPT TO 命令应执行与 VRFY 相同的功能并返回相应的错误。但是,存在这样一些服务器,它们可以接受 RCPT TO 中的所有地址(以后退回),但是在 VRFY 命令中同样的服务器却执行更全面的检查。

默认情况下,MTA 不发送 VRFY 命令(启用 novrfy 关键字)。

如果需要,可以通过在通道定义中包含 domainvrfylocalvrfy 关键字将 MTA 配置为发出 SMTP VRFY 命令。使用关键字 domainvrfy 可以发出 VRFY 命令,并将完整地址 (user@host) 作为其参数。localvrfy 关键字使 MTA 发出仅带有地址中本地部分 (user) 的 VRFY 命令。

响应 VRFY 命令

当发送邮件的 SMTP 客户机发出 SMTP VRFY 命令时,vrfyallowvrfydefaultvrfyhide 关键字将控制 SMTP 服务器的响应。

vrfyallow 关键字通知 MTA 发出提供详细信息的响应。除非已经指定通道选项 HIDE_VERIFY=1,否则 vrfydefault 将通知 MTA 提供具有详细信息的响应。vrfyhide 关键字通知 MTA 只发出模糊的响应。上述关键字允许控制每个通道的 VRFY 响应,与 HIDE_VERIFY 选项相反,而后者通常适用于通过同一 SMTP 服务器处理的所有外来 TCP/IP 通道。

EXPN 支持

关键字:expnallowexpndisableexpndefault

即使已使用 DISABLE_EXPAND SMTP 通道选项在 SMTP 服务器级别禁用 EXPN,expnallow 也允许 EXPNexpndisable 无条件禁用 EXPN。如果 SMTP 服务器设置为允许 EXPN(默认设置),expndefault 将允许 EXPN。可以基于列表禁用扩展,但如果在服务器级别禁用扩展,基于列表的设置将是不相关的设置。

DNS 域验证

关键字:mailfromdnsverifynomailfromdnsverify

在外来 TCP/IP 通道中设置 mailfromdnsverify 会导致 MTA 验证 DNS 中是否存在 SMTP MAIL FROM 命令中使用的域条目,如果不存在该条目,则拒绝邮件。默认设置 nomailfromdnsverify 的意思是不执行上述检查。请注意,对返回的地址域执行 DNS 检查将导致某些需要的有效邮件(例如,来自仅仅是未注册域名的合法站点的邮件,或 DNS 中有错误信息时)被拒绝;这违背了“RFC 1123:Internet 主机要求”中表达的大量接收信息以及尽量让 e-mail 通过的精神。但是某些站点可能需要执行上述检查,以防使用伪造的电子邮件地址从不存在的域发送主动提供的批量电子邮件 (UBE)。

因为 COMORG 顶层域中引入 DNS 通配符条目导致 mailfromdnsverify 作用减少,所以修改了 mailfromdnsverify 代码。DNS 返回一个或多个 A 记录时,系统会将这些值与新 MTA 选项 BLOCKED_MAIL_FROM_IPS 指定的域文字进行比较。如果找到匹配项,则该域被视为无效。为了恢复正常操作,当前的正确设置为:

BLOCKED_MAIL_FROM_IPS=[64.94.110.11]

此选项的默认值为空字符串。

字符集标记和 8 位数据

关键字:charset7charset8charsetescsevenbiteightbiteightnegotiateeightstrict

字符集标记

MIME 规范提供了一种机制,用以标记纯文本邮件中使用的字符集。特别是,可以将 charset= 参数指定为 Content-type: 标题行的一部分。MIME 中定义了各种字符集名称,包括 US-ASCII(默认)、ISO-8859-1、ISO-8859-2 以及随后定义的许多其他字符集。

某些现有系统和用户代理不提供生成上述字符集标记的机制;因此某些纯文本邮件可能未被正确标记。charset7charset8charsetesc 通道关键字提供了针对每个通道的机制,用以指定字符集名称,该名称将被插入到缺少字符集标记的邮件标题中。每个关键字都需要一个参数来指定字符集名称。系统不检查名称的有效性。但是请注意,只能对 MTA 表格目录的字符集定义文件 charsets.txt 中指定的字符集进行字符集转换。如果可能,请使用该文件中定义的名称。

如果邮件仅包含七位字符,则使用 charset7 字符集名称;如果在邮件中发现八位数据,则使用 charset8 字符集名称;如果邮件仅包含七位数据并同时包含转义符,则使用 charsetesc。如果未指定正确的关键字,字符集名称将不被插入到 Content-type: 标题行。

请注意,charset8 关键字还控制邮件标题中 8 位字符的 MIME 编码(标题中 8 位数据是绝对非法的)。如果未指定 charset8 值,MTA 通常对邮件标题中遇到的所有(非法)8 位数据进行 MIME 编码,将其标记为未知字符集。

这些字符集规范不会覆盖现有的标记,也就是说,如果邮件已经具有字符集标记或者不属于文本类型的邮件,则字符集规范没有任何影响。通常应当对 MTA 本地通道进行如下标记:


l ... charset7 US-ASCII charset8 ISO-8859-1 ...
hostname

如果邮件中没有 Content-type 标题,将添加该标题。如果缺少 MIME-version: 标题行,此关键字还将添加该标题行。

如果通道接收的未标记邮件使用了日语或韩语字符集并包含转义符,charsetesc 关键字将尤其有用。

八位数据

某些传输限制使用带有大于 127(十进制)的序数值的字符。尤其需要注意的是,某些 SMTP 服务器会删除高位值,因而使用上述八位范围中的字符的邮件将出现乱码。

Messaging Server 提供了对这类邮件进行自动编码的功能,以便有问题的八位字符不直接出现在邮件中。通过指定 sevenbit 关键字,可以将该编码功能应用到所有加入给定通道队列的邮件。如果不存在此类限制,通道应标记为 eightbit

SMTP 协议不允许使用 eightbit,“除非远程 SMTP 服务器明确声称支持允许 eightbit 的 SMTP 扩展”。某些传输(例如扩展的 SMTP)可能会实际支持某种形式的协商,以确定是否可以传输八位字符。因此,强烈建议使用 eightnegotiate 关键字,以便在协商失败时指示通道对邮件进行编码。这是所有通道的默认设置;不支持协商的通道将假定传输可以处理八位数据。

eightstrict 关键字通知 Messaging Server 拒绝所有标题包含非法八位数据的外来邮件。

协议流

关键字:streaming

某些邮件协议支持流操作。这意味着 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 进行流操作。默认值是 0。

TCP/IP 连接和 DNS 查找支持

可以指定有关服务器如何处理 TCP/IP 连接和地址查找的信息。本节说明了以下内容:

表 12–22 列出了本节说明的 TCP/IP 连接和 DNS 查找关键字。

表 12–22 TCP/IP 连接和 DNS 查找关键字

通道关键字 

说明 

端口选定和接口地址

指定用于 SMTP 连接的默认端口号和接口地址 

port

指定用于 SMTP 连接的默认端口号。标准端口为 25。 

interfaceaddress

绑定到指定的 TCP/IP 接口地址。 

缓存关键字 

指定对连接信息进行缓存的方式 

cacheeverything

缓存所有连接信息。 

cachefailures

仅缓存连接失败信息。 

cachesuccesses

仅缓存连接成功信息。 

nocache

不缓存任何连接信息。 

反向 DNS 查找 

指定对外来 SMTP 连接进行反向 DNS 查找的方式 

forwardcheckdelete

如果已执行反向 DNS 查找,则接下来对返回的名称执行正向查找,以检查返回的 IP 号是否与原号相匹配;如果不匹配,则删除名称并使用 IP 地址。 

forwardchecknone

DNS 反向查找后不执行正向查找。 

forwardchecktag

如果已执行反向 DNS 查找,则接下来对返回的名称执行正向查找,以检查返回的 IP 号是否与原号相匹配;如果不匹配,则用 * 标记名称。 

IDENT 查找/DNS 反向查找 

指定对外来 SMTP 连接进行 IDENT 查找和 DNS 反向查找的方式 

identnone

不执行 IDENT 查找;执行 IP 到主机名的转换;在 Received: 标题中包含主机名和 IP 地址。

identnonelimited

不执行 IDENT 查找;执行 IP 到主机名的转换,但在通道切换期间不使用主机名;在 Received: 标题中包含主机名和 IP 地址。

identnonenumeric

不执行 IDENT 查找或 IP 到主机名的转换。 

identnonesymbolic

不执行 IDENT 查找;执行从 IP 到主机名的转换;在 Received: 标题中仅包含主机名。

identtcp

对外来 SMTP 连接执行 IDENT 查找并执行 IP 到主机名的转换;在 Received: 标题中包含主机名和 IP 地址。

identtcplimited

对外来 SMTP 连接执行 IDENT 查找以及 IP 到主机名的转换,但在通道切换期间不使用主机名。在 Received: 标题中包含主机名和 IP 地址。

indenttcpnumeric

对外来 SMTP 连接执行 IDENT 查找,但不执行 IP 到主机名的转换。 

identtcpsymbolic

对外来 SMTP 连接执行 IDENT 查找并执行 IP 到主机名的转换;在 Received: 标题中仅包含主机名。

MX 记录支持和 TCP/IP 名称服务器 

指定通道是否支持 MX 记录查找以及支持的方式 

mx

TCP/IP 网络和软件支持 MX 记录查找。 

nomx

TCP/IP 网络不支持 MX 查找。 

defaultmx

通道确定是否从网络中查找 MX。 

randommx

执行 MX 查找;对返回的具有同等优先级的条目进行随机化处理。 

nonrandomemx

执行 MX 查找;对返回的具有同等优先级的条目不进行随机化处理。 

nameservers

指定要查看的名称服务器列表,而不查看 TCP/IP 栈自身选择的名称服务器;nameservers 需要用于名称服务器且以空格分隔的 IP 地址列表。

defaultnameservers

查看 TCP/IP 栈选择的名称服务器。 

lastresort

指定最后可用的主机。 

切换关键字 

控制外来邮件的备用通道的选定 

allowswitchchannel

允许从 switchchannel 通道切换到此通道

noswitchchannel

停留在服务器通道;不切换到与发件主机关联的通道;不允许被切换。 

switchchannel

从服务器通道切换到与发件主机关联的通道。 

tlsswitchchannel

TLS 协商成功后,切换到其他通道。 

saslswitchchannel

SASL 验证成功后,切换到其他通道。 

目标主机的选择和邮件副本的存储 

指定目标主机系统及存储邮件副本的方式。 

daemon

连接到特定主机系统而不考虑信封地址。 

single

指定应该为通道中每个目标地址分别创建一个邮件副本。 

single_sys

为所用的每个目标系统创建一个邮件副本。 

TCP/IP 端口号和接口地址

关键字:portinterfaceaddress

发送邮件时,基于 TCP/IP 的 SMTP 通道通常连接到端口 25。可以使用 port 关键字来指示基于 TCP/IP 的 SMTP 通道连接到非标准端口。请注意,该关键字是分发程序选项 PORT 的补充,该选项控制 MTA 侦听的用于接受 SMTP 连接的端口。

interfaceaddress 关键字控制 TCP/IP 通道绑定为出站连接源地址的地址;也就是说,在具有多个接口地址的系统中,当 MTA 发送外发 SMTP 邮件时,该关键字控制哪些地址将用作源 IP 地址。请注意,该关键字是分发程序选项 INTERFACE_ADDRESS 的补充,该选项控制 TCP/IP 通道侦听的用于接受外来连接和邮件的接口地址。

缓存通道连接信息

关键字:cacheeverythingnocachecachefailurescachesuccesses

使用 SMTP 协议的通道保留一个包含以前连接尝试的历史记录的高速缓存。使用该高速缓存可以避免多次重新连接到不可访问的主机,多次连接会浪费很多时间并造成其他邮件的延迟。这是基于每个进程的高速缓存,仅存在于出站 SMTP 传送通道的单次运行期间。

高速缓存通常记录连接成功信息和失败信息。(记录成功的连接尝试是为了抵消以后的失败- - 以前成功但现在失败的主机并不保证在进行另一次连接尝试之前的延迟时间会与从未尝试连接或以前曾经连接失败的主机一样长。)

但是 MTA 使用的缓存策略不一定适合所有情况。因此我们提供了通道关键字以调整 MTA 缓存。

cacheeverything 关键字启用所有形式的高速缓存,其为默认设置。nocache 关键字禁用所有高速缓存。

cachefailures 关键字启用连接失败的高速缓存,但不启用连接成功的高速缓存—这比 cacheeverything 对重试的限制更严。最后,cachesuccesses 只对成功连接进行高速缓存。对于 SMTP 通道,该关键字与 nocache 的效果相同。

反向 DNS 查找

关键字:forwardchecknoneforwardchecktagforwardcheckdelete

forwardchecknoneforwardchecktagforwardcheckdelete 通道关键字可以修改进行反向 DNS 查找的结果。上述关键字可以控制 MTA 是否正向查找使用 DNS 反向查找发现的 IP 名,如果请求正向查找,则指定当 IP 名称的正向查找与原来的连接 IP 号不匹配时 MTA 要执行的操作。

forwardchecknone 关键字是默认设置,表示不进行正向查找。forwardchecktag 关键字通知 MTA 在每次反向查找后进行正向查找,如果使用正向查找发现的号码与原来的连接号码不匹配,则用星号 (*) 标记 IP 名称。forwardcheckdelete 关键字通知 MTA 在每次反向查找后进行正向查找,如果该名称的正向查找与原来的连接 IP 地址不匹配,则忽略(删除)反向查找返回的名称;在这种情况下,MTA 使用原来的 IP 地址。


注 –

在很多站点中正向查找与原来的 IP 地址不匹配是很正常的因为这些站点将较为普通的 IP 名称用于多个不同的 IP 地址。


IDENT 查找

关键字:identnoneidentnonelimitedidenttnonnumericidentnonesymbolicidenttcpidenttcpnumericidenttcpsymbolicidenttcplimited

IDENT 关键字控制 MTA 使用 IDENT 协议处理连接和查找的方式。在 RFC 1413 中有对 IDENT 协议的说明。

identtcpidenttcpsymbolicidenttcpnumeric 关键字通知 MTA 使用 IDENT 协议执行连接和查找。从 IDENT 协议获取的信息(通常是进行 SMTP 连接的用户的身份)将按照以下方式插入到邮件的 Received: 标题中:


注 –

远程系统必须运行 IDENT 服务器,identtcpidenttcpsymbolicidenttcpnumeric 引起的 IDENT 查找才有用。


请注意,IDENT 查询尝试可能会使性能下降。不断增加的路由器将使尝试连接到无法识别的端口的操作进入“黑洞”。如果在 IDENT 查询时出现这种情况,则 MTA 直到连接超时(TCP/IP 栈控制的超时,一般为大约一至二分钟)后才能收到返回的结果。

identtcpindenttcplimitedidenttcpsymbolicidenttcpnumeric 进行比较时,会出现另一个性能方面的因素。用 identtcpidenttcplimitedidenttcpsymbolic 调用的 DNS 反向查找为了获得对用户更加友好的主机名会导致额外的系统开销。

identnone 关键字禁用 IDENT 查找,但会指定 IP 到主机名的转换,并在邮件的 Received: 标题中包含 IP 号和主机名。

identnonesymbolic 关键字禁用 IDENT 查找,但会进行 IP 到主机名的转换;在邮件的 Received: 标题中仅包含主机名。

identnonenumeric 关键字禁用此 IDENT 查找,并禁止通常的 IP 号到主机名的 DNS 反向查找转换,这可能会使性能得到改善,但会减少 Received: 标题中的用户友好信息。该值为默认值。

IDENT 查找、反向 DNS 查找以及 Received: 标题中显示的信息而言,identtcplimitedidentnonelimited 关键字的效果分别与 identtcpidentnone 相同。不同点在于,使用关键字 identtcplimitedidentnonelimited 时,始终将 IP 字面地址作为所有通道切换(由于使用 switchchannel 关键字)的基础,而不考虑 DNS 反向查找是否成功确定了主机名。

TCP/IP MX 记录支持

关键字:mxnomxdefaultmxrandommxnonrandommx

某些 TCP/IP 网络支持使用 MX(邮件转发)记录,另外一些网络则不支持。如果 MTA 系统连接到的网络未提供 MX 记录,可以将某些 TCP/IP 通道程序配置为不使用 MX 记录。mxnomxdefaultmxrandommxnonrandommx 关键字控制 MX 记录支持。

关键字 randommx 指定应该执行 MX 查找,并且应该按随机顺序处理具有同等优先级的 MX 记录的值。关键字 nonrandommx 指定应该执行 MX 查找,并且应该按与接收顺序相同的顺序处理具有同等优先级的 MX 值。

mx 关键字当前与 nonrandommx 等效;在将来的版本中可能将其更改为与 randommx 等效。nomx 关键字禁用 MX 查找。defaultmx 关键字指定如果网络声称支持 MX 记录,则应该使用 mx。在支持任何形式的 MX 查找的通道中,关键字 defaultmx 是默认设置。

名称服务器查找

关键字:nameserversdefaultnameservers

执行名称服务器查找时,可以使用 nameservers 通道关键字指定要查看的名称服务器列表,而不查看 TCP/IP 栈自身选择的名称服务器。nameservers 关键字要求用于名称服务器的以空格分隔的 IP 地址列表,如以下示例所示:

nameservers 1.2.3.1 1.2.3.2

默认设置 defaultnameservers 表示使用 TCP/IP 栈自身选择的名称服务器。

为了在 UNIX 中防止名称服务器查找,可以修改 nsswitch.conf 文件。在 NT 中,请修改 TCP/IP 配置。

最后可用的主机

关键字:lastresort

lastresort 关键字用于指定要连接的主机,即使所有其他连接尝试均失败。实际上,它充当最后可用的 MX 记录。它只在 SMTP 通道中有用。

此关键字需要一个参数用以指定“最后可用的系统”的名称。例如:

tcp_local single_sys smtp mx lastresort mailhub.siroe.com
TCP-DAEMON

外来邮件的备用通道(切换通道)

关键字:switchchannelallowswitchchannelnoswitchchannel。另请参见SMTP 验证、SASL 和 TLS中的 saslswitchchannel传输层安全性中的 tlsswitchchannel

以下关键字控制对外来邮件的备用通道的选择:switchchannelallowswitchchannelnoswitchchannel

MTA 在接受来自远程系统的外来连接时,必须选择与该连接关联的通道。通常该选择取决于所使用的传输;例如,外来的基于 TCP/IP 的 SMTP 连接将自动与 tcp_local 通道关联。

但是,如果使用具有不同特性的多个外发通道来处理基于相同传输的不同系统,则无法再使用该约定。发生这种情况时,外来连接无法关联到与外发连接相同的通道,造成相应的通道特性无法关联到远程系统。

switchchannel 关键字提供了解决上述问题的方法。如果在服务器使用的初始通道中指定了切换通道,则连接(发件)主机的 IP 地址将与通道表进行匹配,如果匹配,将对源通道进行相应更改。如果未查找到匹配的 IP 地址,或查找到的匹配地址与原来默认的外来通道相同,MTA 可以选择尝试使用进行 DNS 反向查找时查找到的主机名进行匹配。可以将源通道更改为标记为 switchchannelallowswitchchannel(默认设置)的任意通道。noswitchchannel 关键字指定不对通道或从通道执行通道切换操作。

默认情况下,在与服务器关联的通道以外的通道中指定 switchchannel 将没有效果。目前,switchchannel 只影响 SMTP 通道,但是实际上在任何其他通道中使用 switchchannel 都不合理。

目标主机选择

关键字:daemonsinglesingle_sys

daemon 关键字的解释和用法取决于应用该关键字的通道的类型。

daemon 关键字用于 SMTP 通道控制目标主机的选择。

通常,连接到任意主机的通道都被列在正被处理的邮件的信封地址中。使用 daemon 关键字可以通知通道连接到特定的远程系统(一般是防火墙或邮件集线器系统),而不考虑信封地址。实际远程系统的名称应该直接出现在 daemon 关键字之后,如以下示例所示:

tcp_firewall smtp mx daemon firewall.acme.com
TCP-DAEMON

如果 daemon 关键字之后的参数不是全限定域名,则参数将被忽略,通道将连接到它的正式主机。正式主机是与通道相关的全限定主机名。可以在包含三行的通道块的第二行中指定:

tcp_firewall smtp mx daemon router
firewall.acme.com
TCP-DAEMON

也可以在包含两行的通道块的 TCP-DAEMON 之后指定正式主机,这样,出站连接便可以将其自身识别为特定的主机:

tcp_firewall smtp mx daemon router
TCP-DAEMON firewall.acme.com

如果将防火墙或网关系统名称指定为正式主机名,通常将 daemon 关键字的给定参数指定为路由器,如以下示例所示:

tcp_firewall smtp mx daemon router
firewall.acme.com
TCP-DAEMON

其他重要关键字包括 singlesingle_syssingle 关键字指定应该为通道中的每个目标地址分别创建一个邮件副本。single_sys 关键字为所用的每个目标系统创建一个邮件副本。请注意,不管使用哪个关键字,至少为邮件在其排队的每个通道创建每个邮件的一个副本。

SMTP 验证、SASL 和 TLS

关键字:maysaslservermustsaslservernosaslnosaslserversaslswitchchannelnosaslswitchchannel)

您可以控制 Messaging Server 是否支持使用 SASL(Simple Authentication and Security Layer,简单验证和安全层)对 SMTP 服务器进行验证。在 RFC 2222 中定义了 SASL,有关 SASL、SMTP 验证和安全性的更多信息,请参见第 19 章,配置安全和访问控制

maysaslservermustsaslservernosaslnosaslserver、switchchannelsaslswitchchannel 通道关键字用于 SMTP 协议期间配置 SMTP 通道(例如 TCP/IP 通道)对 SASL (SMTP AUTH) 的使用。

nosasl 是默认设置,表示不允许或不尝试 SASL 验证。它包括 nosaslserver,表示不允许 SASL 验证。指定 maysaslserver 使 SMTP 服务器允许客户机尝试使用 SASL 验证。指定 mustsaslserver 使 SMTP 服务器坚持让客户机使用 SASL 验证;除非远程客户机验证成功,否则 SMTP 服务器不接受邮件。

使用 saslswitchchannel 使外来连接在客户机成功使用 SASL 后切换到指定的通道。它使用一个必需的值,以指定将切换到的通道。

在标题中使用来自 SMTP AUTH 的已验证的地址

关键字:authrewrite

authrewrite 通道关键字和相关的 AUTH_REWRITE 映射表允许使用从验证操作中获得的寻址信息修改标题和信封地址。特别是,可以将 SASL 验证配置为提供授权的电子邮件地址。通常使用 SMTP AUTH 信息,尽管通过 FROM_ACCESS 映射可能会覆盖该信息。authrewrite 关键字根据表 12–23 使用要求的位值。

表 12–23 authrewrite 位值

位 

值 

说明 

不做任何更改(默认) 

添加 Sender: 或 Resent-sender: 标题字段其中包含验证操作提供的地址。Resent- 变量在具有其他 resent- 字段时使用。 

添加 Sender: 标题字段其中包含验证操作提供的地址。 

在映射表中构造具有以下格式的名为 AUTH_REWRITE 的探测:

mail-from|sender|from|auth-sender

其中 mail-from 是信封的 From: 地址,sender 是来自 Sender:Resent-sender: 标题字段的地址,from 是来自 From:Resent-From: 标题字段的地址,而 auth-sender 是验证操作提供的地址。

结果是通过 AUTH_REWRITE 映射运行得到的。该映射应返回一个用垂直条 (|) 分隔的项目列表。这些项目通过设置下列标志并按顺序使用:

$J $K 替换邮件的信封 From: 地址。

$Y $T 添加适当的 Sender:Resent-sender: 标题字段。

$N 拒绝邮件。映射结果提供错误消息的文本。如果未提供文本,则显示使用的创始者地址无效错误消息。

$Z 添加适当的 From:Resent-from: 标题字段。(请注意,一般情况下,覆盖 From: 字段是很不可取的做法。)

Resent- 变量在标题中具有其他 Resent- 字段时使用。

16 

即使验证未提供已验证的地址,也应用 AUTH_REWRITE 映射。如果清除了此位,则仅在已验证的地址可用时才应用映射。

32 

包含位于 AUTH_REWRITE 映射探测开头的源通道。该位以 | 与其他信息分隔开。如果清除了此位,则不包含通道。


注意 – 注意 –

应严格限制 $Z 标志,因为很少合法地用它们来修改信封和标题地址。


指定 Microsoft Exchange 网关通道

关键字:msexchangenomsexchange

msexchange 通道关键字可以用于 TCP/IP 通道,它通知 MTA 此通道是与 Microsoft Exchange 网关及客户机通信的通道。当被放置到已启用 SASL(通过 maysaslservermustsaslserver 关键字)的外来 TCP/IP 通道中时,它使 MTA 的 SMTP 服务器公布 AUTH 使用的是“不正确”格式(基于原来的 ESMTP AUTH 规范,该规范实际上与正确的 ESMTP 用法不兼容,不是基于更正后的较新 AUTH 规范)。例如,某些 Microsoft Exchange 客户机不能识别正确的 AUTH 格式,只能识别错误的 AUTH 格式。

msexchange 通道关键字还使损坏的 TLS 命令得以公布(和识别)。

nomsexchange 是默认设置。

传输层安全性

关键字:maytlsmaytlsclientmaytlsservermusttlsmusttlsclientmusttlsservernotlsnotlsclientnotlsservertlsswitchchannel

maytlsmaytlsclientmaytlsservermusttlsmusttlsclientmusttlsservernotlsnotlsclientnotlsservertlsswitchchannel 通道关键字用于 SMTP 协议期间配置基于 SMTP 的通道(例如 TCP/IP 通道)对 TLS 的使用。

默认设置是 notls,表示不允许或不尝试 TLS。它包括 notlsclient 关键字和 notlsserver 关键字,前者表示 MTA SMTP 客户机不对外发连接尝试使用 TLS(外发连接期间不发出 STARTTLS 命令),后者表示 MTA SMTP 服务器不允许对外来连接使用 TLS(SMTP 服务器不公布 STARTTLS 扩展,也不接受命令本身)。

指定 maytls 将使 MTA 向外来连接提供 TLS,并对外发连接尝试 TLS。它包括 maytlsclientmaytlsserver,前者表示发送外发邮件时,如果是发送到支持 TLS 的 SMTP 服务器,MTA SMTP 客户机将尝试使用 TLS,后者表示 MTA SMTP 服务器将公布支持 STARTTLS 扩展,并允许在接收邮件时使用 TLS。

请注意,要使 TLS 正常工作,必须具备以下条件:

指定 musttls 将使 MTA 坚持在外来和外发连接中使用 TLS;电子邮件将不与未能成功协商 TLS 使用的远程系统进行交换。它包括 musttlsclient,表示 MTA SMTP 客户机坚持在发送外发邮件时使用 TLS,并且不对未能成功协商 TLS 使用的 SMTP 服务器发送邮件(MTA 将发出 STARTTLS 命令,并且该命令必须成功)。它还包括 musttlsserver,表示 MTA SMTP 服务器将公布支持 STARTTLS 扩展,并坚持在接收外来邮件时使用 TLS,将不接受来自未能成功协商 TLS 使用的客户机的邮件。

tlsswitchchannel 关键字用于使外来连接在客户机的 TLS 协商成功后切换到指定的通道。它使用一个必需的值,以指定将切换到的通道。