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

第 12 章 配置通道定义

本章介绍如何在 MTA 配置文件 imta.cnf 中使用通道关键字定义。阅读本章之前,请先阅读第 10 章,关于 MTA 服务和配置通道定义MTA 配置文件。本章包含以下各节:


注 –

如果在 imta.cnf 中更改了通道定义,则必须使用 imsimta restart 命令重新启动仅在启动时才装入一次配置数据的所有程序或通道(例如,SMTP 服务器)。如果使用的是编译的配置,则必须重新编译然后再重新启动。有关编译配置信息和启动程序的更多信息,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》


配置通道默认值

许多配置使各种通道关键字在所有或几乎所有通道上重复。维护这样的配置不但麻烦而且容易出错。要简化某些配置,可以为各种通道指定默认的关键字。

例如,某个配置文件中的以下行表示该行后面所有通道块都将继承行中指定的关键字:

defaults keyword1 keyword2 keyword3 ...

defaults 行可看作无需实际指定通道即可更改关键字默认值的一个特殊通道块。defaults 行也不需要任何附加的通道块信息行(将忽略指定的信息行)。

对于可以指定的 defaults 行数没有限制,多个 defaults 行的影响可以累积,最后遇到的(从上向下读取)行具有较高的优先级。

从配置文件的某个点(例如,外部文件中通道块的独立部分的开始处)开始无条件消除 defaults 行的影响可能很有用。为此我们提供了 nodefaults 行。例如,在配置文件中插入以下行将取消前面所有的默认通道创建的所有设置,并使配置返回到未指定默认值时所应用的状态:

nodefaults

与常规通道块一样,必须使用空行将每个 defaultsnodefaults 通道块与其他通道块分隔开来。在配置文件中,defaultsnodefaults 通道块是可以出现在本地通道之前的仅有的通道块。但是,与所有其他通道块一样,它们必须出现在最后的重写规则之后。

按字母顺序列出的通道关键字

下表是按字母顺序排列的关键字列表。

表 12–1 按字母顺序排列的通道关键字列表

关键字 

有关更多信息... 

733 

地址类型和约定

822 

地址类型和约定

addreturnpath

生成 Return-path 标题行

addrsperfile

处理对超过配额用户的邮件传送

Aliasdetourhost

地址验证之后扩展之前的路由

aliaslocal

指定别名文件和别名数据库探测

aliaspostmaster

邮寄主管返回的邮件内容

allowetrn

ETRN 命令支持

allowswitchchannel

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

alternatechannel

重新定向超过大小限制或收件人限制的邮件

alternateblocklimit

重新定向超过大小限制或收件人限制的邮件

alternatelinelimit

重新定向超过大小限制或收件人限制的邮件

alternaterecipientlimit

重新定向超过大小限制或收件人限制的邮件

authrewrite

TCP/IP 连接和 DNS 查找支持

backoff

为传送失败的邮件指定重试频率

bangoverpercent

在地址中添加路由信息

bangstyle

地址类型和约定

bidirectional

设置通道方向性

blocketrn

ETRN 命令支持

blocklimit

指定绝对邮件大小限制

cacheeverything

缓存通道连接信息

cachefailures

缓存通道连接信息

cachesuccesses

缓存通道连接信息

channelfilter

指定邮箱过滤器文件位置

charset7

字符集标记和 8 位数据

charset8

字符集标记和 8 位数据

charsetesc

字符集标记和 8 位数据

checkehlo

EHLO 命令支持

commentinc

处理地址标题行中的注释

commentmap

处理地址标题行中的注释

commentomit

处理地址标题行中的注释

commentstrip

处理地址标题行中的注释

commenttotal

处理地址标题行中的注释

connectalias

邮件出队后的地址重写

connectcanonical

邮件出队后的地址重写

copysendpost

返回的失败邮件

copywarnpost

警告消息

daemon

目标主机选择

datefour

将日期转换为两位数或四位数

datetwo

将日期转换为两位数或四位数

dayofweek

在日期中指定星期几

defaulthost

指定修正不完整地址时使用的主机名

defaultmx

TCP/IP MX 记录支持

defaultnameservers

名称服务器查找

deferralrejectlimit

对错误的 RCPT TO 地址设置限制

deferred

实现延迟传送日期

defragment

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

dequeue_removeroute

删除源路由

destinationfilter

指定邮箱过滤器文件位置

destinationnosolicit

NO-SOLICIT SMTP 扩展支持

destinationspamfilter Xoptin 

垃圾邮件过滤器关键字

disableetrn

ETRN 命令支持

dispositionchannel

进程通道覆盖

disconnectbadauthlimit

对不成功验证尝试的次数的限制

disconnectbadcommand limit 

设置会话限制

domainetrn

ETRN 命令支持

domainvrfy

VRFY 命令支持

dropblank

删除非法的空收件人标题

ehlo

EHLO 命令支持

eightbit

字符集标记和 8 位数据

eightnegotiate

字符集标记和 8 位数据

eightstrict

字符集标记和 8 位数据

errsendpost

返回的失败邮件

errwarnpost

警告消息

expandchannel

多个地址扩展

expandlimit

多个地址扩展

expnallow

EXPN 支持

expndisable

EXPN 支持

expndefault

EXPN 支持

exproute

在地址中添加路由信息

fileinto

指定邮箱过滤器文件位置

filesperjob

服务作业限制

filter

指定邮箱过滤器文件位置

forwardcheckdelete

反向 DNS 查找

forwardchecknone

反向 DNS 查找

forwardchecktag

反向 DNS 查找

header_733

地址类型和约定

header_822

地址类型和约定

header_uucp

地址类型和约定

headerlabelalign

标题对齐和折叠

headerlimit

限制标题大小

headerlinelength

标题对齐和折叠

headerread

删除选定的邮件标题行

headertrim

删除选定的邮件标题行

holdexquota

处理对超过配额用户的邮件传送

holdlimit

多个地址扩展

identnone

IDENT 查找

identnonelimited

IDENT 查找

identnonenumeric

IDENT 查找

identnonesymbolic

IDENT 查找

identtcp

IDENT 查找

identtcplimited

IDENT 查找

identtcpsymbolic

IDENT 查找

ignoreencoding

忽略 Encoding 标题行

immnonurgent

实现延迟传送日期

improute

在地址中添加路由信息

includefinal

在状态通知邮件中包含已变更的地址

inenttcpnumeric

IDENT 查找

inner

重写嵌入式标题

innertrim

删除选定的邮件标题行

interfaceaddress

TCP/IP 端口号和接口地址

interpretencoding

忽略 Encoding 标题行

language

设置标题中的默认语言

lastresort

最后可用的主机

linelength

实施邮件行长度限制

linelimit

指定绝对邮件大小限制

localvrfy

VRFY 命令支持

logging

记录关键字

logheader

记录关键字

loopcheck

设置 Loopcheck

mailfromdnsverify

DNS 域验证

master

设置通道方向性

master_debug

调试关键字

maxblocks

大型邮件的自动分段

maxheaderaddrs

自动分割长标题行

maxheaderchars

自动分割长标题行

maxjobs

服务作业限制

maxlines

大型邮件的自动分段

maxprocchars

标题对齐和折叠

maysaslserver

SMTP 验证、SASL 和 TLS

maytls

传输层安全性

maytlsclient

传输层安全性

maytlsserver

传输层安全性

missingrecipientpolicy

使缺少收件人标题行的邮件合法化

msexchange

指定 Microsoft Exchange 网关通道

multiple

处理对超过配额用户的邮件传送

mustsaslserver

SMTP 验证、SASL 和 TLS

musttls

传输层安全性

musttlsclient

传输层安全性

musttlsserver

传输层安全性

mx

TCP/IP MX 记录支持

namelengthlimit

控制通用内容类型参数、文件名内容类型参数和内容处理参数的长度

nameservers

名称服务器查找

noaddreturnpath

生成 Return-path 标题行

nobangoverpercent

在地址中添加路由信息

noblocklimit

指定绝对邮件大小限制

nocache

缓存通道连接信息

nochannelfilter

指定邮箱过滤器文件位置

nodayofweek

在日期中指定星期几

nodefaulthost

指定修正不完整地址时使用的主机名

nodeferred

实现延迟传送日期

nodefragment

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

nodestinationfilter

指定邮箱过滤器文件位置

nodropblank

删除非法的空收件人标题

noehlo

EHLO 命令支持

noexproute

在地址中添加路由信息

noexquota

处理对超过配额用户的邮件传送

nofileinto

指定邮箱过滤器文件位置

nofilter

指定邮箱过滤器文件位置

noheaderread

删除选定的邮件标题行

noheadertrim

删除选定的邮件标题行

noimproute

在地址中添加路由信息

noinner

重写嵌入式标题

noinnertrim

删除选定的邮件标题行

nolinelimit

指定绝对邮件大小限制

nologging

记录关键字

noloopcheck

设置 Loopcheck

nomailfromdnsverify

DNS 域验证

nomaster_debug

调试关键字

nomsexchange

TCP/IP 连接和 DNS 查找支持

nomx

TCP/IP MX 记录支持

norandomemx

TCP/IP MX 记录支持

nonurgentbackoff

为传送失败的邮件指定重试频率

nonurgentblocklimit

基于大小的邮件优先级

nonurgentnotices

设置通知邮件传送间隔

noreceivedfor

从信封 To 和 From 地址构建 Received 标题行

noreceivedfrom

从信封 To 和 From 地址构建 Received 标题行

noremotehost

指定修正不完整地址时使用的主机名

norestricted

启用限制的邮箱编码

noreturnaddress

邮寄主管返回的邮件内容

noreturnpersonal

邮寄主管返回的邮件内容

noreverse

启用特定于通道的反向数据库使用

normalbackoff

为传送失败的邮件指定重试频率

normalblocklimit

基于大小的邮件优先级

normalnotices

设置通知邮件传送间隔

norules

启用特定于通道的重写规则检查

nosasl

SMTP 验证、SASL 和 TLS

nosaslserver

SMTP 验证、SASL 和 TLS

nosaslswitchchannel

SMTP 验证、SASL 和 TLS

nosendetrn

ETRN 命令支持

nosendpost

返回的失败邮件

noservice

启用服务转换

noslave_debug

调试关键字

nosmtp

通道协议选定和行终止符

nosourcefilter

指定邮箱过滤器文件位置

noswitchchannel

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

notices

设置通知邮件传送间隔

notificationchannel

进程通道覆盖

notls

传输层安全性

notlsclient

传输层安全性

notlsserver

传输层安全性

novrfy

VRFY 命令支持

nowarnpost

警告消息

nox_env_to

生成/删除 X-Envelope-to 标题行

parameterlengthlimit

控制通用内容类型参数、文件名内容类型参数和内容处理参数的长度

percentonly

在地址中添加路由信息

percents

地址类型和约定

personalinc

处理地址标题行中的个人名称

personalmap

处理地址标题行中的个人名称

personalomit

处理地址标题行中的个人名称

personalstrip

处理地址标题行中的个人名称

pool

用于通道执行作业的处理池

port

TCP/IP 端口号和接口地址

postheadbody

邮寄主管返回的邮件内容

postheadonly

邮寄主管返回的邮件内容

randommx

TCP/IP MX 记录支持

receivedfor

从信封 To 和 From 地址构建 Received 标题行

receivedfrom

从信封 To 和 From 地址构建 Received 标题行

recipientcutoff

对邮件收件人进行限制

recipientlimit

对邮件收件人进行限制

rejectsmtplonglines

处理包含超过 1000 个字符的行的 SMTP 邮件

remotehost

指定修正不完整地址时使用的主机名

restricted

启用限制的邮箱编码

returnaddress

邮寄主管返回的邮件内容

returnenvelope

空的信封返回地址

returnpersonal

邮寄主管返回的邮件内容

reverse

启用特定于通道的反向数据库使用

routelocal

禁用显式路由地址的重写

rules

启用特定于通道的重写规则检查

saslswitchchannel

SMTP 验证、SASL 和 TLS

sendetrn

ETRN 命令支持

sendpost

返回的失败邮件

sensitivitycompany confidential 

敏感度检查

sensitivitynormal

敏感度检查

sensitivitypersonal

敏感度检查

sensitivityprivate

敏感度检查

service

启用服务转换

sevenbit

字符集标记和 8 位数据

silentetrn

ETRN 命令支持

single

处理对超过配额用户的邮件传送

single_sys

目标主机选择

slave

设置通道方向性

slave_debug

调试关键字

smtp

通道协议选定和行终止符

smtp_cr

通道协议选定和行终止符

smtp_crlf

通道协议选定和行终止符

smtp_crorlf

通道协议选定和行终止符

smtp_lf

通道协议选定和行终止符

sourceblocklimit

指定绝对邮件大小限制

sourcecommentinc

处理地址标题行中的注释

sourcecommentmap

处理地址标题行中的注释

sourcecommentomit

处理地址标题行中的注释

sourcecommentstrip

处理地址标题行中的注释

sourcecommenttotal

处理地址标题行中的注释

sourcefilter

指定邮箱过滤器文件位置

sourcenosolicit

NO-SOLICIT SMTP 扩展支持

sourcepersonalinc

处理地址标题行中的个人名称

sourcepersonalmap

处理地址标题行中的个人名称

sourcepersonalomit

处理地址标题行中的个人名称

sourcepersonalstrip

处理地址标题行中的个人名称

sourceroute

地址类型和约定

sourcespamfilterXoptin

垃圾邮件过滤器关键字

streaming

协议流

subaddressexact

子地址处理

subaddressrelaxed

子地址处理

subaddresswild

子地址处理

subdirs

将通道邮件队列分布到多个子目录中

submit

通道操作类型

suppressfinal

在状态通知邮件中包含已变更的地址

switchchannel

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

threaddepth

SMTP 通道线程

tlsswitchchannel

传输层安全性

transactionlimit

设置连接事务限制

truncatesmtplonglines

处理包含超过 1000 个字符的行的 SMTP 邮件

unrestricted

启用限制的邮箱编码

urgentbackoff

为传送失败的邮件指定重试频率

urgentblocklimit

基于大小的邮件优先级

urgentnotices

设置通知邮件传送间隔

useintermediate

在状态通知邮件中包含已变更的地址

user

Pipe 通道

uucp

地址类型和约定

viaaliasoptional

必须从别名指定地址

viaaliasrequired

必须从别名指定地址

vrfyallow

VRFY 命令支持

vrfydefault

VRFY 命令支持

vrfyhide

VRFY 命令支持

warnpost

警告消息

wrapsmtplonglines

处理包含超过 1000 个字符的行的 SMTP 邮件

x_env_to

生成/删除 X-Envelope-to 标题行

按功能分类的通道关键字

以下各表是分类后的关键字列表。表和类别如下所示:

表 12–2 地址处理关键字

关键字 

页 

定义 

地址处理 

733 

在信封中使用 % 路由;与 percents 同义。地址类型和约定

822 

地址类型和约定

在信封中使用源路由;与 sourceroute 相同。

addreturnpath 

生成 Return-path 标题行

向加入此通道队列的邮件添加 Return-path: 标题。

aliaslocal 

指定别名文件和别名数据库探测

在别名文件和别名数据库中查找重写的地址。 

authrewrite 

TCP/IP 连接和 DNS 查找支持

用于源通道中,它使 MTA 将已验证的创始者信息(如果可用)传播到标题中。 

bangoverpercent 

在地址中添加路由信息

将 A!B%C 分组为 A!(B%C) 

bangstyle 

地址类型和约定

在信封中使用 UUCP ! 路由;与 uucp 同义。

defaulthost 

指定修正不完整地址时使用的主机名

指定用于完成地址的域名 

dequeue_removeroute 

删除源路由

从信封 To: 地址中删除源路由。

exproute 

在地址中添加路由信息

将地址传递到远程系统时,要求显式路由。 

holdlimit 

多个地址扩展

当信封收件人地址的数量超过此限制时,将保留邮件。 

improute 

在地址中添加路由信息

此通道地址的隐式路由 

missingrecipientpolicy 

使缺少收件人标题行的邮件合法化

为缺少收件人标题的邮件设置如何使其合法化(添加何种标题)的策略。 

noaddreturnpath 

生成 Return-path 标题行

使邮件入队时不要添加 Return-path: 标题。

nobangoverpercent 

在地址中添加路由信息

将 A!B%C 分组为 (A!B)%C 

nodefaulthost 

指定修正不完整地址时使用的主机名

不指定用于完成地址的域名 

noexproute 

在地址中添加路由信息

没有用于此通道地址的显式路由 

noimproute 

在地址中添加路由信息

没有用于此通道地址的隐式路由 

noreceivedfrom 

从信封 To 和 From 地址构建 Received 标题行

构建 Received: 标题行,不包含原始信封的 From: 地址。

noremotehost 

指定修正不完整地址时使用的主机名

使用本地主机的域名作为默认域名来完成地址 

norestricted 

启用限制的邮箱编码

unsrestricted 相同。

noreverse 

启用特定于通道的反向数据库使用

使邮件地址免受地址反向处理 

norules 

启用特定于通道的重写规则检查

不对此通道强制执行特定于通道的重写规则检查。 

percentonly 

在地址中添加路由信息

忽略 bang 路径。在信封中使用 % 路由。 

percents 

地址类型和约定

在信封中使用 % 路由;与 733 同义。

remotehost 

指定修正不完整地址时使用的主机名

使用远程主机的名称作为默认域名来完成地址 

restricted 

启用限制的邮箱编码

通道连接到需要编码的邮件系统。 

reverse 

启用特定于通道的反向数据库使用

已根据地址反向数据库或 REVERSE 映射检查地址 

routelocal 

禁用显式路由地址的重写

向通道重写地址时,使 MTA 尝试让地址中的所有显式路由“短路”。 

rules 

启用特定于通道的重写规则检查

对此通道强制执行针对通道的重写规则检查。 

sourceroute 

地址类型和约定

822 同义。

subaddressexact 

子地址处理

在条目匹配期间不执行特殊的子地址处理;整个邮箱包含子地址都与条目匹配时,才认为该别名匹配。 

subaddressrelaxed 

子地址处理

对完全匹配以及名称+* 格式的匹配进行查找后,MTA 应另外检查仅名称部分相同的匹配。 

subaddresswild 

子地址处理

对完全匹配(包含整个子地址)进行查找后,接下来 MTA 应查找名称+* 格式的条目。 

unrestricted 

启用限制的邮箱编码

通知 MTA 不执行 RFC 1137 编码和解码。 

uucp 

地址类型和约定

在信封中使用 UUCP! 路由;与 bangstyle 同义。 

viaaliasoptional 

必须从别名指定地址

不要求别名生成与通道相匹配的最终收件人地址。 

viaaliasrequired 

必须从别名指定地址

与通道匹配的最终收件人地址必须由别名生成。 

表 12–3 附件和 MIME 处理

关键字 

定义 

defragment 

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

将在通道排队的部分邮件放置到片段整理通道队列中。 

ignoreencoding 

忽略 Encoding 标题行

忽略外来邮件中的“编码:”标题。

interpretencoding 

忽略 Encoding 标题行

解释外来邮件中的“编码:”标题(如果需要)。

nodefragment 

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

禁用片段整理。 

表 12–4 字符集和八位数据

关键字 

定义 

charset7 

字符集标记和 8 位数据

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

charset8 

字符集标记和 8 位数据

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

charsetesc 

字符集标记和 8 位数据

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

eightbit 

字符集标记和 8 位数据

通道支持八位字符。 

eightnegotiate 

字符集标记和 8 位数据

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

eightstrict 

字符集标记和 8 位数据

拒绝包含未经协商的八位数据标题的邮件。 

sevenbit 

字符集标记和 8 位数据

不支持 8 位字符;必须对 8 位字符进行编码。 

表 12–5 MTA 队列区域中的文件创建

关键字 

页 

定义 

addrsperfile 

处理对超过配额用户的邮件传送

可与通道队列中单个邮件文件相关联的收件人最大数量的限制 

expandchannel 

多个地址扩展

指定由于应用 expandlimit 而在其中执行延迟扩展的通道。 

expandlimit 

多个地址扩展

地址数目超过此限制时,“脱机”处理外来邮件。 

multiple 

处理对超过配额用户的邮件传送

对邮件文件中收件人的数量未作限制,但将 SMTP 通道默认为 99。 

single 

处理对超过配额用户的邮件传送

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

single_sys 

处理对超过配额用户的邮件传送

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

subdirs 

将通道邮件队列分布到多个子目录中

指定将在其中分布通道队列的邮件的子目录的数量。 

表 12–6 标题关键字

关键字 

定义 

authrewrite 

TCP/IP 连接和 DNS 查找支持

用于源通道中,它使 MTA 将已验证的创始者信息(如果可用)传播到标题中。 

commentinc 

处理地址标题行中的注释

完好保留邮件标题行中的注释。 

commentmap 

处理地址标题行中的注释

通过 COMMENT_STRINGS 映射表运行邮件标题行中的注释字符串。

commentomit 

处理地址标题行中的注释

从邮件标题行中删除注释。 

commentstrip 

处理地址标题行中的注释

从邮件标题行的注释字段中删除有问题的字符。 

commenttotal 

处理地址标题行中的注释

删除除 Received: 标题行以外的所有标题行中的注释(括号中的内容)标题行。不建议使用。 

datefour 

将日期转换为两位数或四位数

将所有年份字段扩展为四位数。 

datetwo 

将日期转换为两位数或四位数

删除四位数日期中的前两位数。提供与要求两位数日期的邮件系统的兼容性;不得用于其他用途。 

dayofweek 

在日期中指定星期几

保留星期几信息,并将其添加到缺少此信息的日期和时间标题中。 

defaulthost 

指定修正不完整地址时使用的主机名

指定用于完成地址的域名 

dropblank 

删除非法的空收件人标题

删除外来邮件中的非法空标题。 

header_733 

地址类型和约定

在邮件标题中使用 % 路由。 

header_822 

地址类型和约定

在邮件标题中使用源路由。 

headerlabelalign 

标题对齐和折叠

控制加入此通道队列的邮件标题的对齐点,它使用整数参数。 

headerlinelength 

标题对齐和折叠

控制加入此通道队列的标题行的长度。 

headerread 

删除选定的邮件标题行

在处理原来的邮件标题之前,邮件加入队列后对邮件标题应用选项文件中的标题剪裁规则(请小心使用)。 

headertrim 

删除选定的邮件标题行

在处理原来的邮件标题之后,对邮件标题应用选项文件中的标题剪裁规则。 

header_uucp 

地址类型和约定

在标题中使用 ! 路由 

inner 

重写嵌入式标题

分析邮件并重写内部标题。 

innertrim 

删除选定的邮件标题行

对内部邮件标题应用选项文件中的标题剪裁规则(请小心使用)。 

语言 

设置标题中的默认语言

指定标题的默认语言。 

maxheaderaddrs 

自动分割长标题行

控制一行中可以显示的地址数量。 

maxheaderchars 

自动分割长标题行

控制一行中可以显示的字符数量。 

missingrecipientpolicy 

使缺少收件人标题行的邮件合法化

为缺少收件人标题的邮件设置如何使其合法化(添加何种标题)的策略。 

nodayofweek 

在日期中指定星期几

从日期和时间标题中删除星期几。提供与不能处理此信息的邮件系统的兼容性;不得用于其他用途。 

nodefaulthost 

指定修正不完整地址时使用的主机名

不指定用于完成地址的域名 

nodropblank 

删除非法的空收件人标题

不删除外来邮件中的非法空标题。 

noheaderread 

删除选定的邮件标题行

不应用选项文件中的标题剪裁规则。 

noheadertrim 

删除选定的邮件标题行

不应用选项文件中的标题剪裁规则。 

noinner 

重写嵌入式标题

不重写内部邮件标题行。 

noinnertrim 

删除选定的邮件标题行

不对内部邮件标题应用标题剪裁。 

noreceivedfor 

从信封 To 和 From 地址构建 Received 标题行

构建 Received: 标题行而不包含任何信封收件人信息。

noreceivedfrom 

从信封 To 和 From 地址构建 Received 标题行

构建 Received: 标题行,不包含原始信封的 From: 地址。

noremotehost 

指定修正不完整地址时使用的主机名

使用本地主机的域名作为默认域名来完成地址 

noreverse 

启用特定于通道的反向数据库使用

使在此通道排队的邮件地址免受地址反向处理 

norules 

启用特定于通道的重写规则检查

不对此通道强制执行特定于通道的重写规则检查。 

nox_env_to 

生成/删除 X-Envelope-to 标题行

删除 X-Envelope-to 标题行。

personalinc 

处理地址标题行中的个人名称

完好保留邮件标题行中的个人名称字段。 

personalmap 

处理地址标题行中的个人名称

通过 PERSONAL_NAMES 映射表运行个人名称。 

personalomit 

处理地址标题行中的个人名称

从邮件标题行中删除个人名称字段。 

personalstrip 

处理地址标题行中的个人名称

从标题行的个人名称字段中删除有问题的字符。 

receivedfor 

从信封 To 和 From 地址构建 Received 标题行

如果邮件只发送给一个信封收件人,则将该信封的 To: 地址包含在它构建的 Received: 标题行中。

receivedfrom 

从信封 To 和 From 地址构建 Received 标题行

如果 MTA 已更改信封的 From: 地址,则为外来邮件构建 Received: 标题行时,应包含原始信封的 From: 地址。

remotehost 

指定修正不完整地址时使用的主机名

使用远程主机的名称作为默认域名来完成地址 

restricted 

启用限制的邮箱编码

通道连接到需要此编码的邮件系统。 

reverse 

启用特定于通道的反向数据库使用

根据地址反向数据库或 REVERSE 映射检查地址 

rules 

启用特定于通道的重写规则检查

对此通道强制执行针对通道的重写规则检查。 

sensitivitycompany confidential 

敏感度检查

Companyconfidential 是所接受的邮件的敏感度上限。

sensitivitynormal 

敏感度检查

Normal 是所接受的邮件的敏感度上限。

sensitivitypersonal 

敏感度检查

Personal 是所接受的邮件的敏感度上限。

sensitivityprivate 

敏感度检查

Private 是所接受的邮件的敏感度上限。

sourcecommentinc 

处理地址标题行中的注释

保留外来邮件标题行中的注释。 

sourcecommentmap 

处理地址标题行中的注释

通过源通道运行标题行中的注释字符串。 

sourcecommentomit 

处理地址标题行中的注释

删除来自外来邮件标题行(例如,To:、、From: 和 Cc: 标题)删除所有注释。 

sourcecommentstrip 

处理地址标题行中的注释

从外来标题行的注释字段中删除有问题的字符。 

sourcecommenttotal 

处理地址标题行中的注释

删除外来邮件中的注释(扩号中的内容)。 

sourcepersonalinc 

处理地址标题行中的个人名称

完好保留外来邮件标题行中的个人名称。 

sourcepersonalmap 

处理地址标题行中的个人名称

通过源通道中运行个人名称。 

sourcepersonalomit 

处理地址标题行中的个人名称

从外来邮件标题行中删除个人名称字段。 

sourcepersonalstrip 

处理地址标题行中的个人名称

从外来邮件标题行的个人名称字段中删除有问题的字符。 

unrestricted 

启用限制的邮箱编码

通知 MTA 不执行 RFC 1137 编码和解码。 

x_env_to 

生成/删除 X-Envelope-to 标题行

启用生成 X-Envelope-to 标题行。

表 12–7 传入通道匹配和切换关键字

关键字 

定义 

allowswitchchannel 

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

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

nosaslswitchchannel 

SMTP 验证、SASL 和 TLS

SASL 验证成功完成后,不切换到此通道 

noswitchchannel 

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

不应该切换到此通道或从此通道切换到其他通道。 

switchchannel 

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

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

saslswitchchannel 

SMTP 验证、SASL 和 TLS

使外来连接在客户机成功使用 SASL 后切换到指定的通道。 

tlsswitchchannel 

传输层安全性

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

表 12–8 日志记录和调试通道关键字

关键字 

定义 

日志记录 

记录关键字

将邮件入队和出队信息记录到日志文件中,并为特定通道激活记录。 

loopcheck 

设置 Loopcheck

在 SMTP EHLO 响应标题中放入字符串,以便 MTA 检查它是否在与自身通信。 

master_debug 

调试关键字

在通道的主程序输出中创建调试输出。 

nologging 

记录关键字

不将邮件入队和出队信息记录到日志文件中。 

noloopcheck 

设置 Loopcheck

不在 SMTP EHLO 响应标题中放入字符串。 

nomaster_debug 

调试关键字

通道的主程序输出中无调试输出。 

noslave_debug 

调试关键字

不生成从属调试输出。 

slave_debug 

调试关键字

生成从属调试输出。 

表 12–9 长型地址列表或标题通道关键字

关键字 

定义 

expandchannel 

多个地址扩展

指定由于应用 expandlimit 而在其中执行延迟扩展的通道。 

expandlimit 

多个地址扩展

地址数目超过此限制时,“脱机”处理外来邮件。 

holdlimit 

多个地址扩展

地址数量超过此限制时保留邮件。 

maxprocchars 

标题对齐和折叠

可以处理和重写的最大长度的标题。 

表 12–10 邮箱过滤器通道关键字

关键字 

定义 

channelfilter 

指定邮箱过滤器文件位置

通道过滤器文件的位置;与 destinationfilter 相同。

destinationfilter 

应用到外发邮件的通道过滤器文件的位置。 

destinationspamfilter Xoptin 

垃圾邮件过滤器关键字

通过垃圾邮件过滤软件 X 运行发送到此通道的邮件。 

fileinto 

指定邮箱过滤器文件位置

指定应用邮箱过滤器 fileinto 操作时对地址的影响。

filter 

指定邮箱过滤器文件位置

指定用户过滤器文件的位置。 

nochannelfilter 

指定邮箱过滤器文件位置

不对外发邮件进行通道过滤。也称为 nodestinationfilter

nodestinationfilter 

指定邮箱过滤器文件位置

不对外发邮件执行通道过滤。 

nofileinto 

指定邮箱过滤器文件位置

邮箱过滤器 fileinto 操作无影响。 

nofilter 

指定邮箱过滤器文件位置

不执行用户邮箱过滤。 

nosourcefilter 

指定邮箱过滤器文件位置

不对外来邮件执行通道过滤。 

sourcefilter 

指定邮箱过滤器文件位置

为外来邮件指定通道过滤器文件的位置。 

sourcespamfilter Xoptin 

垃圾邮件过滤器关键字

通过垃圾邮件过滤软件 X 运行源自此通道的邮件。 

表 12–11 NO-SOLICIT SMTP 扩展支持关键字

关键字 

定义 

sourcenosolicit 

NO-SOLICIT SMTP 扩展支持

指定一个以逗号分隔的列表,此列表包括将在此通道提交的邮件中阻塞的请求字段值。 

destinationnosolicit 

NO-SOLICIT SMTP 扩展支持

指定一个以逗号分隔的列表,此列表包括不会被此通道中排队的邮件接受的请求字段值。 

表 12–12 通知和邮寄主管邮件关键字

关键字 

定义 

(有关完整的通知过程,请参见控制传送状态通知邮件

aliaspostmaster 

邮寄主管返回的邮件内容

将发送给正式通道名称中用户名称邮寄主管的邮件重定向到 postmaster@local-host,其中 local-host 是本地主机名(本地通道中的名称)。 

copysendpost 

返回的失败邮件

将失败通知的副本发送给邮寄主管,除非失败邮件中的创始者地址为空。 

copywarnpost 

警告消息

向邮寄主管发送警告消息的副本(除非未传送邮件上的创始者地址为空)。 

errsendpost 

返回的失败邮件

仅在无法将通知返回创始者时向邮寄主管发送错误通知的副本。 

errwarnpost 

警告消息

在无法将通知返回创始者时向邮寄主管发送警告消息的副本。 

includefinal 

在状态通知邮件中包含已变更的地址

传送通知时包含收件人地址的最终格式。 

nonurgentnotices 

设置通知邮件传送间隔

指定在发送通知和返回非紧急优先级邮件前可能经过的时间。 

noreturnaddress 

邮寄主管返回的邮件内容

RETURN_ADDRESS 选项值用作邮寄主管地址名称。

noreturnpersonal 

邮寄主管返回的邮件内容

RETURN_PERSONAL 选项值用作邮寄主管个人名称。

normalnotices 

设置通知邮件传送间隔

指定在发送通知和返回普通优先级邮件前可能经过的时间。 

nosendpost 

返回的失败邮件

禁用向邮寄主管发送所有失败邮件的副本。 

notices 

设置通知邮件传送间隔

指定在发送通知和返回邮件之前可能经过的时间。 

nowarnpost 

警告消息

禁用向邮寄主管发送警告消息的副本。 

postheadbody 

邮寄主管返回的邮件内容

同时返回邮件的标题和内容。 

postheadonly 

邮寄主管返回的邮件内容

仅向邮寄主管返回标题。 

returnaddress 

邮寄主管返回的邮件内容

指定本地邮寄主管的返回地址。 

returnenvelope 

空的信封返回地址

控制空的信封返回地址的使用。 

returnpersonal 

邮寄主管返回的邮件内容

设置本地邮寄主管的个人名称。 

sendpost 

返回的失败邮件

启用向邮寄主管发送所有失败邮件的副本。 

suppressfinal 

在状态通知邮件中包含已变更的地址

抑制通知邮件中的最终地址格式(如果通知邮件中存在原始地址格式)。 

urgentnotices 

设置通知邮件传送间隔

指定在发送通知和返回紧急优先级邮件之前可能经过的时间。 

useintermediate 

在状态通知邮件中包含已变更的地址

使用在列表扩展之后,但在用户邮箱名称生成之前生成的地址的中间格式。 

warnpost 

警告消息

启用向邮寄主管发送警告消息的副本。 

表 12–13 处理控制和作业提交关键字

关键字 

定义 

(有关功能说明的详细信息,请参见配置邮件处理和传送

backoff 

为传送失败的邮件指定重试频率

尝试重新传送未成功传送的邮件的频率。可以被关键字 normalbackoffnonurgentbackoffurgentbackoff 覆盖。

bidirectional 

设置通道方向性

主程序和从程序为其服务的通道。 

deferred 

实现延迟传送日期

识别 Deferred-delivery: 标题行并使其生效。

expandchannel 

多个地址扩展

指定由于应用 expandlimit 而在其中执行延迟扩展的通道。 

expandlimit 

多个地址扩展

地址数目超过此限制时,“脱机”处理外来邮件。 

filesperjob 

服务作业限制

将由单个作业处理的队列条目的数量。 

immnonurgent

实现延迟传送日期

紧急、正常和不紧急邮件提交后,立即开始传送。 

主 

设置通道方向性

主程序 (master) 所服务的通道。

maxjobs 

服务作业限制

可以同时为通道运行的作业的最大数量。 

nodeferred 

实现延迟传送日期

指定不使 Deferred-delivery: 标题行生效。

nonurgentbackoff 

为传送失败的邮件指定重试频率

尝试重新传送非紧急邮件的频率。 

nonurgentblocklimit 

基于大小的邮件优先级

将超过此大小的邮件强制降到非紧急优先级(二类优先级)以下,意味着邮件将始终等待下一个周期的作业以进一步处理。 

normalbackoff 

为传送失败的邮件指定重试频率

尝试重新传送普通邮件的频率。 

normalblocklimit 

基于大小的邮件优先级

将超过此大小的邮件强制降到非紧急优先级。 

noservice 

启用服务转换

必须通过 CHARSET-CONVERSION 启用进入此通道的邮件的服务转换。

pool 

用于通道执行作业的处理池

为通道指定池。后面必须跟池名称,当前通道的传送作业将被置于该池名称中。 

service 

启用服务转换

无条件启用服务转换,不考虑 CHARSET-CONVERSION 条目。

从 

设置通道方向性

由从程序(从)提供服务的通道。 

threaddepth 

SMTP 通道线程

使用多线程 SMTP 客户机触发新线程的邮件的数目。 

transactionlimit 

限制每个连接允许的邮件数目。 

urgentbackoff 

为传送失败的邮件指定重试频率

尝试重新传送紧急邮件的频率。 

urgentblocklimit 

基于大小的邮件优先级

将超过此大小的邮件强制降至普通优先级。 

用户 

Pipe 通道

用于 pipe 通道中,指明通道将在其下运行的用户名称。 

表 12–14 敏感度限制关键字

关键字 

定义 

sensitivitycompany confidential 

敏感度检查

所接受的邮件的敏感度上限。 

sensitivitynormal 

敏感度检查

Normal 是所接受的邮件的敏感度上限。

sensitivitypersonal 

敏感度检查

Personal 是所接受的邮件的敏感度上限。

sensitivityprivate 

敏感度检查

Private 是所接受的邮件的敏感度上限。

表 12–15 对邮件、用户配额、权限和验证尝试次数的限制关键字

关键字 

定义 

alternatechannel 

重新定向超过大小限制或收件人限制的邮件

alternateblocklimit、alternatelinelimit 及 alternaterecipientlimit 的备用目标通道。 

alternateblocklimit 

重新定向超过大小限制或收件人限制的邮件

指定将邮件发送到 alternativechannel 之前邮件中的块数限制。 

alternatelinelimit 

重新定向超过大小限制或收件人限制的邮件

指定将邮件发送到 alternativechannel 之前邮件中的行数限制。 

alternaterecipientlimit 

重新定向超过大小限制或收件人限制的邮件

指定将邮件发送到 alternativechannel 之前邮件中收件人数量的限制。 

blocklimit 

指定绝对邮件大小限制

每个邮件中允许的 MTA 块的最大数量。 

disconnectbadauthlimit 

对不成功验证尝试的次数的限制

断开会话连接之前,对允许在会话中进行的不成功验证尝试的次数的限制。 

disconnectbadcommand limit 

设置会话限制

限制会话错误命令的数量。 

disconnectrecipientlimit 

设置会话限制

限制会话收件人的数量。 

disconnectrejectlimit 

设置会话限制

限制被拒绝的收件人的数量。 

disconnecttransactionlimit 

设置会话限制

限制事务的数量。 

headerlimit 

限制标题大小

限制主(最外层)邮件标题的最大大小 

holdexquota 

处理对超过配额用户的邮件传送

为超过配额的用户保留邮件。 

holdlimit 

多个地址扩展

地址数目超过此限制时保留外来邮件。 

linelength 

实施邮件行长度限制

基于各个通道限制允许的最大邮件行长度。 

linelimit 

指定绝对邮件大小限制

每个邮件中允许的最大行数。 

maxblocks 

大型邮件的自动分段

指定邮件中允许的最大块数。 

maxlines 

大型邮件的自动分段

指定邮件中允许的最大行数。 

nameparameterlengthlimit 

控制通用内容类型参数、文件名内容类型参数和内容处理参数的长度

控制 name content-type 和 filename content-disposition 参数的截断点。 

noblocklimit 

指定绝对邮件大小限制

不限制每个邮件中允许的 MTA 块的数量。 

noexquota 

处理对超过配额用户的邮件传送

将发给超过配额的用户的所有邮件返回创始者。 

nolinelimit 

指定绝对邮件大小限制

不对每个邮件中允许的行数指定限制。 

nonurgentblocklimit 

基于大小的邮件优先级

将超过此大小的邮件强制降到非紧急优先级(二类优先级)以下,意味着邮件将始终等待下一个周期的作业以进一步处理。 

normalblocklimit 

基于大小的邮件优先级

将超过此大小的邮件强制降到非紧急优先级。 

parameterlengthlimit 

控制通用内容类型参数、文件名内容类型参数和内容处理参数的长度

控制通用内容类型和内容处理参数的截断点。 

recipientcutoff. 

对邮件收件人进行限制

如果收件人超过此值,则拒绝邮件。 

recipientlimit 

对邮件收件人进行限制

限制接受的邮件收件人地址的数量。 

rejectsmtplonglines 

处理包含超过 1000 个字符的行的 SMTP 邮件

拒绝包含超过 1000 个字符(包括 CRLF)的行的邮件。 

sourceblocklimit 

指定绝对邮件大小限制

每个外来邮件中允许的 MTA 块的最大数量。 

truncatesmtplonglines 

处理包含超过 1000 个字符的行的 SMTP 邮件

当行超过 1000 个字符时,将其截断。 

wrapsmtplonglines 

处理包含超过 1000 个字符的行的 SMTP 邮件

当行超过 1000 个字符时换行。 

urgentblocklimit 

基于大小的邮件优先级

将超过此大小的邮件强制降至普通优先级。 

表 12–16 SMTP 验证、SASL 和 TLS 关键字

关键字 

定义 

(有关功能说明的详细信息,请参见SMTP 验证、SASL 和 TLS

authrewrite 

TCP/IP 连接和 DNS 查找支持

用于源通道中,它使 MTA 将已验证的创始者信息(如果可用)传播到标题中。 

maysaslserver 

SMTP 验证、SASL 和 TLS

允许客户机尝试使用 SASL 验证。 

maytls 

传输层安全性

使 MTA 向外来连接提供 TLS,并对外发连接尝试 TLS。 

maytlsclient 

传输层安全性

发送外发邮件时,如果是发送到支持 TLS 的 SMTP 服务器,MTA SMTP 客户机将尝试使用 TLS。 

maytlsserver 

传输层安全性

MTA SMTP 服务器将公布支持 STARTTLS 扩展,并允许在接收邮件时使用 TLS。 

msexchange 

指定 Microsoft Exchange 网关通道

用于 TCP/IP 通道,通知 MTA 此通道是与 Microsoft Exchange 网关及客户机通信的通道。 

mustsaslserver 

SMTP 验证、SASL 和 TLS

除非远程客户机验证成功,否则 SMTP 服务器不接收邮件。 

musttls 

传输层安全性

坚持在外发和外来连接中使用 TLS。 

musttlsclient 

传输层安全性

MTA SMTP 客户机将坚持在发送外发邮件时使用 TLS(MTA 将发出 STARTTLS 命令,并且该命令必须成功)。 

musttlsserver 

传输层安全性

MTA SMTP 服务器将公布支持 STARTTLS 扩展,并坚持在接收外来邮件时使用 TLS。 

nomsexchange 

TCP/IP 连接和 DNS 查找支持

默认设置。 

nosasl 

SMTP 验证、SASL 和 TLS

不允许或不尝试 SASL 验证。 

nosaslserver 

SMTP 验证、SASL 和 TLS

不允许 SASL 验证。 

notls 

传输层安全性

不允许或不尝试 TLS。 

notlsclient 

传输层安全性

MTA SMTP 客户机不对外发连接尝试使用 TLS(外发连接期间不发出 STARTTLS 命令)。 

notlsserver 

传输层安全性

MTA SMTP 服务器不允许对外来连接使用 TLS(SMTP 服务器不公布 STARTTLS 扩展,也不接受命令本身)。 

saslswitchchannel 

SMTP 验证、SASL 和 TLS

使外来连接在客户机成功使用 SASL 后切换到指定的通道。 

tlsswitchchannel 

传输层安全性

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

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

关键字 

定义 

(有关功能说明的详细信息,请参见SMTP 命令和协议支持

allowetrn 

ETRN 命令支持

执行 ETRN 命令。 

blocketrn 

ETRN 命令支持

阻止 ETRN 命令。 

checkehlo 

EHLO 命令支持

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

disableetrn 

ETRN 命令支持

禁用对 ETRN SMTP 命令的支持。 

domainetrn 

ETRN 命令支持

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

domainvrfy 

VRFY 命令支持

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

ehlo 

EHLO 命令支持

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

eightbit 

字符集标记和 8 位数据

通道支持八位字符。 

eightnegotiate 

字符集标记和 8 位数据

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

eightstrict 

字符集标记和 8 位数据

拒绝包含未经协商的八位数据标题的邮件。 

expnallow 

EXPN 支持

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

expndisable 

EXPN 支持

无条件禁用 EXPN

expndefault 

EXPN 支持

如果已将 SMTP 服务器设置为允许 EXPN,则允许 EXPN

localvrfy 

VRFY 命令支持

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

mailfromdnsverify 

DNS 域验证

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

noehlo 

EHLO 命令支持

不使用 EHLO 命令。 

nomailfromdnsverify 

DNS 域验证

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

nosendetrn 

ETRN 命令支持

不发送 ETRN 命令。 

nosmtp 

通道协议选定和行终止符

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

novrfy 

VRFY 命令支持

不发出 VRFY 命令。 

sendetrn 

ETRN 命令支持

发送 ETRN 命令。 

sevenbit 

字符集标记和 8 位数据

不支持 8 位字符;必须对 8 位字符进行编码。 

silentetrn 

ETRN 命令支持

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

smtp 

通道协议选定和行终止符

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

smtp_cr 

通道协议选定和行终止符

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

smtp_crlf 

通道协议选定和行终止符

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

smtp_crorlf 

通道协议选定和行终止符

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

smtp_lf 

通道协议选定和行终止符

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

streaming 

协议流

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

vrfyallow 

VRFY 命令支持

向 VRFY 命令提供信息响应。 

vrfydefault 

VRFY 命令支持

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

vrfyhide 

VRFY 命令支持

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

表 12–18 TCP/IP 连接和 DNS 查找支持关键字

关键字 

定义 

TCP/IP 连接和 DNS 查找支持 

(有关功能说明的详细信息,请参见TCP/IP 连接和 DNS 查找支持

cacheeverything 

缓存通道连接信息

缓存所有连接信息。 

cachefailures 

缓存通道连接信息

仅缓存连接失败信息。 

cachesuccesses 

缓存通道连接信息

仅缓存连接成功信息。 

connectalias 

邮件出队后的地址重写

传送到收件人地址中列出的任意主机。 

connectcanonical 

邮件出队后的地址重写

连接到 MTA 原本应该连接的系统的主机别名。 

daemon 

目标主机选择

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

defaultmx 

TCP/IP MX 记录支持

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

defaultnameservers 

名称服务器查找

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

forwardcheckdelete 

反向 DNS 查找

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

forwardchecknone 

反向 DNS 查找

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

forwardchecktag 

反向 DNS 查找

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

identnone 

IDENT 查找

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

identnonelimited 

IDENT 查找

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

identnonenumeric 

IDENT 查找

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

identnonesymbolic 

IDENT 查找

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

identtcp 

IDENT 查找

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

identtcplimited 

IDENT 查找

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

indenttcpnumeric 

IDENT 查找

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

identtcpsymbolic 

IDENT 查找

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

interfaceaddress 

TCP/IP 端口号和接口地址

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

lastresort 

最后可用的主机

指定最后可用的主机。 

mailfromdnsverify 

DNS 域验证

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

mx 

TCP/IP MX 记录支持

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

nameservers 

名称服务器查找

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

nocache 

缓存通道连接信息

不缓存任何连接信息。 

nomailfromdnsverify 

DNS 域验证

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

nomx 

TCP/IP MX 记录支持

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

nonrandomemx 

TCP/IP MX 记录支持

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

port 

TCP/IP 端口号和接口地址

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

randommx 

TCP/IP MX 记录支持

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

single 

目标主机选择

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

single_sys 

目标主机选择

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

threaddepth 

SMTP 通道线程

使用多线程 SMTP 客户机触发新线程的邮件的数目。 

表 12–19 其他关键字

关键字 

定义 

deferralrejectlimit 

对错误的 RCPT TO 地址设置限制

设置错误 RCPT TO: 的数量限制地址 

dispositionchannel 

进程通道覆盖

将进程通道替换为用于初始队列传送状态通知 (DSN) 的位置。 

destinationfilter 

指定邮箱过滤器文件位置

用于在一般 MTA 通道中指定应用于外发邮件的通道级别的过滤器。 

filter 

指定邮箱过滤器文件位置

使用一个必需的 URL 参数,该参数说明过滤器文件的位置 

nodestinationfilter 

指定邮箱过滤器文件位置

通道的两个方向都没有启用通道邮箱过滤器。 

nosourcefilter 

指定邮箱过滤器文件位置

没有为源通道启用通道邮箱过滤器。 

nofilter 

指定邮箱过滤器文件位置

没有为通道启用用户邮箱过滤的默认值和方法。 

notificationchannel 

进程通道覆盖

将进程通道替换为用于初始队列邮件处理通知 (MDN) 的位置。 

sourcefilter 

指定邮箱过滤器文件位置

用于在一般 MTA 通道中指定应用于外来邮件的通道级别的过滤器。 

submit 

通道操作类型

用于将通道标记为仅用来提交的通道。 

用户 

Pipe 通道

用于 pipe 通道中,指明通道将在其下运行的用户名称。 

配置 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 协商成功后切换到指定的通道。它使用一个必需的值,以指定将切换到的通道。

配置邮件处理和传送

您可以配置服务器何时基于特定条件尝试传送邮件。您也可以为作业处理指定参数,例如服务作业的处理限制或何时产生新的 SMTP 通道线程。本节说明了以下内容:

有关邮件处理和传送的概念信息,请参见表 12–24

配置邮件处理和传送 汇总了本节中说明的关键字。

表 12–24 邮件处理和传送关键字

关键字 

定义 

立即传送

定义邮件立即传送的规范。

immnonurgent

紧急、正常和不紧急邮件提交后,立即开始传送。 

通道方向性

指定为通道服务的程序的类型

bidirectional 

主程序和从程序为通道服务。 

主 

主程序 (master) 为通道服务。

从 

从程序 (slave) 为通道服务。

延迟传送

指定延迟作业的传送规范。

backoff

指定尝试重新传送延迟邮件的频率。可以被 normalbackoffnonurgentbackoffurgentbackoff 覆盖。

deferred

识别 Deferred-delivery: 标题行并使其生效。

nodeferred

默认设置。指定不使 Deferred-delivery: 标题行生效。

nonurgentbackoff

尝试重新传送非紧急邮件的频率。 

normalbackoff

尝试重新传送普通邮件的频率。 

urgentbackoff

尝试重新传送紧急邮件的频率。 

基于大小的邮件优先级

定义基于邮件大小的邮件优先级。

nonurgentblocklimit

将超过此大小的邮件强制降到非紧急优先级(二类优先级)以下,意味着邮件将始终等待下一个周期的作业以进一步处理。 

normalblocklimit

将超过此大小的邮件强制降到非紧急优先级。 

urgentblocklimit

将超过此大小的邮件强制降至普通优先级。 

用于通道执行作业的处理池

指定用于处理有各种作业紧急程度和延迟时间的邮件的池

pool

指定通道在其中运行的池。 

after

指定通道运行前的时间延迟。 

服务作业限制

指定服务作业的数量和每个作业中处理的邮件文件的最大数量

maxjobs

指定可以同时为通道运行的作业的最大数量。 

filesperjob

指定将由单个作业处理的队列条目的数量。 

SMTP 通道线程

 

threaddepth

使用多线程 SMTP 客户机触发新线程的邮件的数目。 

多个地址扩展

定义对具有多个收件人的邮件的处理

expandlimit

地址数目超过此限制时,“脱机”处理外来邮件。 

expandchannel

指定由于应用 expandlimit 而在其中执行延迟扩展的通道。 

holdlimit

地址数目超过此限制时保留外来邮件。 

事务限制

指定连接事务限制

transactionlimit 

限制每个连接允许的邮件数目。 

无法传送邮件的通知

指定何时发送无法传送邮件的通知。

notices

指定在发送通知和返回邮件之前可能经过的时间。 

nonurgentnotices

指定在发送通知和返回非紧急优先级邮件前可能经过的时间。 

normalnotices

指定在发送通知和返回普通优先级邮件前可能经过的时间。 

urgentnotices

指定在发送通知和返回紧急优先级邮件之前可能经过的时间。 

设置通道方向性

关键字:masterslavebidirectional

这些关键字用于指定通道是由主程序 (master) 或从程序 (slave) 还是这两者 (bidirectional) 为其服务。如果不指定关键字,则默认设置为 bidirectional。这些关键字确定当邮件在通道中排队时,MTA 是否启动传送活动。

这些关键字的使用反映了相应通道程序的某些基本特性。MTA 支持的各种通道的说明表明了应该在何时何处使用这些关键字。

实现延迟传送日期

关键字:deferrednodeferredimmnonurgent

deferred 通道关键字实现 Deferred-delivery: 标题行的识别和生效。具有 deferred 将来传送日期的邮件将保留在通道队列中,直到过期并返回,或者到达延迟传送日期。有关 Deferred-delivery: 标题行格式和操作的详细信息,请参见 RFC 1327。

关键字 nodeferred 是默认设置。请务必注意,尽管 RFC 1327 强制支持对延迟邮件的处理,但事实上该功能的实际实现使人们将邮件系统用作其磁盘配额的扩展。

提交紧急、正常和不紧急邮件后,关键字 immnonurgent 将立即开始传送。

为传送失败的邮件指定重试频率

关键字:backoffnonurgentbackoffnormalbackoffurgentbackoffnotices

默认情况下曾经传送失败的邮件的传送重试的频率取决于邮件的优先级。传送尝试之间的默认间隔(以分钟计)如下所示。优先级后面的第一个数字表示初始传送失败后经过多少分钟进行第一次传送重试:

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 分钟重试一次。

传送尝试将在一定的时间周期内继续,该时间周期由关键字 noticesnonurgentnoticesnormalnoticesurgentnotices 指定。如果无法进行成功的传送,则生成传送失败通知并将邮件返回给发件人。(有关 notices 关键字的详细信息,请参见设置通知邮件传送间隔。)

backoff 关键字可以使您能为不同优先级的邮件指定传送重试间隔的自定义设置。nonurgentbackoff 指定不紧急邮件的间隔。normalbackoff 指定正常邮件的间隔。urgentbackoff 指定紧急邮件的间隔。如果不指定上述关键字,backoff 将为所有邮件指定间隔,而不考虑优先级。

下面显示了一个示例:

urgentbackoff "pt30m" "pt1h" "pt2h" "pt3h" "pt4h" "pt5h" "pt8h" "pt16h"

此实例中,紧急邮件在初始传送失败后过 30 分钟尝试重新传送,第一次传送尝试后过 1 小时(初始失败后 1 小时 30 分钟)重试,第二次传送尝试后过 2 小时重试,第三次传送尝试后过 3 小时重试,第四次传送尝试后过 4 小时重试,第五次传送尝试后过 5 小时重试,第六次传送尝试后过 8 小时重试,第七次传送尝试后过 16 小时重试。之后每 16 小时进行一次尝试,直到 notices 关键字指定的时间周期结束。如果无法进行成功的传送,则生成传送失败通知并将邮件返回给发件人。请注意,间隔语法位于 ISO 8601P 中,Sun Java System Messaging Server Administration Reference 中对其进行了说明。

在接下来的示例中,

normalbackoff "pt30m" "pt1h" "pt8h" "p1d" "p2d” "p1w"

正常邮件在初始传送失败后过 30 分钟尝试重新传送,第一次传送尝试后过 1 小时重试,第二次尝试后过 8 小时重试,第三次尝试后过 1 天重试,第四次尝试后过 2 天重试,第五次尝试后过 1 周重试,之后每周重复一次,直到 notices 关键字指定的时间周期结束。如果无法进行成功的传送,则生成传送失败通知并将邮件返回给发件人。

在最后的示例中,

backoff "pt30m" "pt120m" "pt16h" "pt36h" "p3d"

无论邮件的优先级是什么,所有传送失败的邮件(除非被 nonurgentbackoffnormalbackoffurgentbackoff 覆盖)将在初始传送失败后过 30 分钟重试,第一次重试后过 2 小时重试,第二次尝试后过 16 小时重试,第三次尝试后过 36 小时重试,第四次尝试后过 3 天重试,之后每 3 天重复一次,直到 notices 关键字指定的时间周期结束。如果无法进行成功的传送,则生成传送失败通知并将邮件返回给发件人。

用于通道执行作业的处理池

关键字:pool

通过让各种通道在同一池中运行,可以将各种通道配置为共享资源。您可能还希望配置其他通道,使其能够在专用于特定通道的池中运行。在每个池中,根据邮件的优先级将邮件自动分成不同的处理队列。池中高优先级的邮件在低优先级的邮件之前处理。(请参见基于大小的邮件优先级

通过使用 pool 关键字,可以基于通道在通道中选择创建作业的池。pool 关键字后面必须跟池名称,当前通道的传送作业将应置于该池中。池的名称不能多于 12 个字符。

有关作业控制器的概念和配置的更多信息,请参阅作业控制器文件作业控制器文件服务作业限制

服务作业限制

关键字:maxjobsfilesperjob

每次将邮件加入通道队列时,作业控制器将确保存有一个运行的作业,用于传送邮件。这可能涉及启动一个新作业进程、添加一个线程或只是通知一个作业已经在运行。但是,单个服务作业可能不足以确保所有邮件的及时传送。(有关作业控制器的概念和配置的更多信息,请参阅作业控制器文件用于通道执行作业的处理池作业控制器。)

对于任何给定安装,都存在一个合理的为传送邮件而启动的进程和线程的最大数量。该最大数量取决于诸如处理器的数量、磁盘的速度以及连接的特性等因素。在 MTA 配置中,可以控制以下内容:

为给定通道启动运行的最大进程数是通道中 maxjobs 设置的最小值,也是通道在其中运行的池的 JOB_LIMIT 设置的最小值。

假定需要处理一个邮件。通常作业控制器按照以下方法启动新进程:

特定于 SMTP 通道而言,当邮件加入不同主机的队列时,将启动新线程或新进程。因此,对于 SMTP 通道,作业控制器按照以下方法启动新进程。假定需要处理一个邮件,将进行以下操作:

另请参见SMTP 通道线程

filesperjob 关键字可用于使 MTA 创建附加服务作业。该关键字使用一个正整数参数,指定必须将多少队列条目(即文件)发送到关联的通道之后才能创建一个以上的服务作业用以处理队列条目。如果给定的值小于或等于零,则被解释为请求仅加入一个服务作业。不指定关键字等效于指定零。该关键字的效果将被最大化;计算的较大数量为实际创建的服务作业的数量。

filesperjob 关键字按给定值划分实际队列条目或文件的数量。请注意,给定邮件产生的队列条目的数量由许多因素控制,包括但不仅限于关键字 singlesingle_sys 的使用以及邮件列表中标题修改操作的规范。

maxjobs 关键字对于可以同时运行的服务作业的总数设置了上限。此关键字后面必须跟一个整数值,如果计算的服务作业的数量大于该值,则实际只创建 maxjobs 作业。如果未指定 maxjobs,则默认值为 100。通常将 maxjobs 值设置为小于或等于可以在任意服务池或通道使用的池中同时运行的作业的总数。

设置连接事务限制

关键字:transactionlimit

transactionlimit 限制每个连接允许的邮件数量。可以按照以下的方式使用此关键字来阻止攻击者:

攻击者可以通过 SMTP 进行连接并发送大量 RCPT TO 命令以尝试猜出合法的电子邮件地址。通过限制事务中允许的无效 RCPT TO 的数量,可以阻止这样的攻击。攻击者可能使用多个事务进行应答,但是通过 transactionlimit,您可以限制 SMTP 会话中允许的事务数量。攻击者可以使用多个会话,但是其成本是高昂的。可以使用连接限制以各种方式来限制会话的数量,使其成本在大多数情况下真正变得高昂。

但是,我们也必须付出代价。某些 SMTP 客户机对收件人限制、事务限制或二者的响应相当差。需要对这些客户机设置例外。但是,TCP 通道选项将无条件应用到 SMTP 服务器。解决方案是使用通道关键字和 switchchannel 将有问题的代理路由到限制数量更大的通道。

基于大小的邮件优先级

关键字:urgentblocklimitnormalblocklimitnonurgentblocklimit

关键字 urgentblocklimitnormalblocklimitnonurgentblocklimit 可用于指示 MTA 根据邮件大小对邮件的优先级进行降级处理。这些关键字影响作业控制器处理邮件时应用的优先级。

SMTP 通道线程

关键字:threaddepth

多线程 SMTP 客户机将发向不同目标的外发邮件分到不同的线程中。threaddepth 关键字可用于指示多线程 SMTP 客户机在任何一个线程中只处理指定数量的邮件,即使所有邮件都发向同一目标(因此通常在一个线程中进行处理),也对这些邮件使用附加线程。此关键字的默认值为 10。

每当通道的待办事项增加到超过多个 threaddepth 时,作业控制器将试图增加专用于处理在该通道排队的邮件的处理数量。对于多线程通道,作业控制器建议处理该通道邮件的任意作业启动新线程,或者,如果所有作业都具有允许用于此通道的最大线程数(tcp_* 通道的选项中的 MAX_CLIENT_THREADS),则启动新进程。对于单线程通道,将启动新进程。请注意,如果已达到通道的作业限制 (maxjobs) 或池的作业限制 (JOB_LIMIT),作业控制器将不启动新作业。

实质上,threaddepth 控制如何安排主动作业。让我们考虑两种不同的情况:

(1) 正常(出站)SMTP 通道

(2) 转发到智能主机的 SMTP 通道

作业控制器将按照目标主机对发往特定通道的邮件进行排序,并基于这些目标主机上的待办事项安排作业处理邮件的顺序。

在第一个实例中,将有大量目标主机,而且大部分目标主机的代办事项都比较小。将有大量线程处于运行状态并且一切都运行良好,不过,对于像 aol、yahoo、hotmail 这样的通信量非常大的目标主机可能会出现例外。如果使用 128 的线程深度,则当代办事项达到 128 时,您只能将第二个线程传送到 yahoo。这不是一种理想的状况。

在第二个实例中,只有一个目标主机,将多个线程传送到该主机是比较理想的。美中不足的是,默认值 10 可能太小。

当通道连接到的 SMTP 服务器可以处理多个同时连接时,使用 threaddepth 对于在守护进程路由器 TCP/IP 通道(连接到单个特定 SMTP 服务器的 TCP/IP 通道)中实现多线程可能会尤其有用。

多个地址扩展

关键字:expandlimitexpandchannelholdlimit

大多数通道支持在每个入站邮件的传输中指定多个收件人地址。在一个邮件中指定多个收件人地址可能会导致邮件传输处理的延迟(联机延迟)。如果延迟时间太长,则可能出现网络超时,这又会导致重复的邮件提交和其他问题。

MTA 提供了一种特殊的功能,如果为一个邮件指定了超过给定数量的地址,则强制执行延迟(脱机)处理。邮件处理的延迟可以大幅度减少联机延迟。但是请注意,处理开销是被延迟,而不是被完全避免了。

例如,通过结合使用普通的 reprocessing 通道和 expandlimit 关键字,可以激活这一特殊功能。expandlimit 关键字使用整数参数,该参数指定进行延迟处理之前来自通道的邮件中应被接受的地址数。如果不指定 expandlimit 关键字,则默认值为无穷大。如果值为 0,则对来自通道的所有外来地址强制执行延迟处理。

在本地通道或 reprocessing 通道本身中不应指定 expandlimit 关键字,如果指定,将产生不可预料的结果。

可以使用 expandchannel 关键字指定用以实际执行延迟处理的通道;如果不指定 expandchannel,将默认使用 reprocessing 通道,但是使用其他某个重新处理通道或处理通道对于某些特殊目的会很有用。如果通过 expandchannel 指定了用于延迟处理的通道,则该通道应为重新处理通道或处理通道;指定其他种类的通道可能会导致不可预料的结果。

必须将 reprocessing 通道或用于执行延迟处理的任意其他通道添加到 MTA 配置文件中,以使 expandlimit 关键字生效。如果您的配置是通过 MTA 配置实用程序构建的,那么您应该已经具有重新处理通道。

收件人地址列表非常大通常是主动提供的批量电子邮件的特点。holdlimit 关键字告诉 MTA,如果进入通道的邮件使收件人超过指定数量,则应该将其标记为 .HELD 邮件,并让其加入 reprocess 通道(或通过 expandchannel 关键字指定的任意通道)队列。该文件将不被处理,它将在 reprocess 队列中等待 MTA 邮寄主管手动介入。

启用服务转换

关键字:servicenoservice

service 关键字无条件启用服务转换,不考虑 CHARSET-CONVERSION 条目。如果设置了 noservice 关键字,则必须通过 CHARSET-CONVERSION 为进入该通道的邮件启用服务转换。

配置地址处理

本节说明了涉及地址处理的关键字。其中包含以下各节:

地址类型和约定

关键字:822733uucpheader_822header_733header_uucp

这组关键字控制通道支持的地址类型。传输层(邮件信封)中使用的地址和邮件标题中使用的地址是有区别的。

822 (sourceroute)

源路由信封地址。此通道支持完整的 RFC 822 格式的信封寻址约定(包含源路由)。也可以使用关键字 sourceroute,它是 822 的同义词。如果不指定其他信封地址类型关键字,则此关键字为默认设置。

733 (percents)

百分号信封地址。此通道支持完整的 RFC 822 格式的信封寻址(源路由除外);应该使用百分号约定重写源路由。也可以使用关键字 percents,它是 733 的同义词。


注 –

在 SMTP 通道中使用 733 地址约定将导致在 SMTP 信封的传输层地址中继续使用这些约定。这可能违反 RFC 821。请仅在确实必要时才使用 733 地址约定。


uucp (bangstyle)

bang 式样的信封地址。此通道在信封中使用符合 RFC 976 bang 式样地址约定的地址(例如,这是 UUCP 通道)。也可以使用关键字 bangstyle,它是 uucp 的同义词。

header_822

源路由标题地址。此通道支持完整的 RFC 822 格式的标题寻址约定(包含源路由)。如果不指定其他标题地址类型关键字,则此关键字为默认设置。

header_733

百分号标题地址。此通道支持 RFC 822 格式的标题寻址(源路由除外);应该使用百分号约定重写源路由。


注 –

在邮件标题中使用 733 地址约定可能会违反 RFC 822 和 RFC 976。请仅在确保通道连接到无法处理源路由地址的系统时才使用该关键字。


header_uucp

UUCP 或 bang 式样标题地址。不建议使用此关键字。使用此关键字违反 RFC 976。

解释使用 ! 和 % 的地址

关键字:bangoverpercentnobangoverpercentpercentonly

地址始终依据 RFC 822 和 RFC 976 进行解释。但是,处理上述标准未涉及的某些复合地址时会有歧义。尤其是,格式 A!B%C 的地址可以解释为:

尽管 RFC 976 指出邮件程序可以使用后一种约定解释地址,但却没有说这种解释是必需的。某些情况下使用前一种解释反而更好。

bangoverpercent 关键字强制执行前一种 A!(B%C) 解释。nobangoverpercent 关键字强制执行后一种 (A!B)%C 解释。nobangoverpercent 是默认设置。


注 –

此关键字不影响对格式 A!B@C 地址的处理。这些地址将始终被处理为 (A!B)@C。RFC 822 和 RFC 976 均强制使用这种处理。


percentonly 关键字忽略 bang 路径。如果设置了此关键字,百分号将被解释为路由。

在地址中添加路由信息

关键字:exproutenoexprouteimproutenoimproute

MTA 使用的寻址模式假定所有系统都知道所有其他系统的地址并知道如何到达这些地址。不幸的是,这一理想并非在所有情况下都可行,例如当通道连接到一个或多个不为外界所知的系统(例如专用 TCP/IP 网络中的内部计算机)时就不可行。该通道中的系统的地址对于站点以外的远程系统来说可能是非法的。如果希望能够回复上述地址,则地址中必须包含源路由,源路由将通知远程系统通过本地计算机路由邮件。然后本地计算机可以(自动)将邮件路由到上述计算机中。

当通道地址传递到远程系统时,exproute 关键字("explicit routing" 的缩写)通知 MTA 关联的通道要求显式路由。如果在通道中指定了此关键字,MTA 会将包含本地系统名称(或本地系统的当前别名)的路由信息添加到与该通道匹配的所有标题地址和所有信封 From: 地址。默认设置 noexproute 指定不应该添加路由信息。

EXPROUTE_FORWARD 选项可用于将 exproute 操作限制为反向指向地址。当 MTA 通过无法为自身执行正确路由的通道连接到系统时,将出现另一种情况。在这种情况下,当邮件被发送到与无法胜任路由的系统相连接的通道中时,所有该邮件中使用的与其他通道关联的地址均需要指明路由。

隐式路由和 improute 关键字用于处理这种情况。MTA 知道,当邮件被发送到标记为 improute 的通道中时,邮件中使用的所有与其他通道匹配的地址都需要路由。默认设置 noimproute 指定不应该将路由信息添加到发出到指定通道的邮件的地址中。IMPROUTE_FORWARD 选项可用于将 improute 操作限制为反向指向地址。

exprouteimproute 关键字应谨慎使用。它们会使地址变得长而且复杂,并可能破坏其他系统使用的智能路由模式。显式和隐式路由不应与指定的路由混淆。指定的路由用于将来自重写规则的路由信息插入到地址中。此功能由特殊的 A@B@C 重写规则模板激活。

激活指定路由后,它将被应用到标题和信封的所有地址。由于指定路由是被特定的重写规则激活的,因此它们通常独立于当前使用的通道。显式和隐式路由的控制却是以每个通道为基础,插入的路由地址始终是本地系统。

禁用显式路由地址的重写

关键字:routelocal

向通道重写地址时,routelocal 通道关键字使 MTA 尝试让地址中所有显式路由“短路”。显式路由地址(使用字符 !、% 或 @)将被简化。

在内部通道(如内部 TCP/IP 通道)中使用此关键字可以简化 SMTP 中继阻止的配置。

请注意,在可能需要显式 % 路由或其他路由的通道中不应该使用此关键字。

邮件出队后的地址重写

关键字:connectaliasconnectcanonical

将邮件加入通道队列时,MTA 通常重写地址。邮件出队期间,不再执行其他重写操作。当主机名已更改,而通道队列中却仍然存在发送到旧主机名的邮件时,上述做法将导致潜在的问题。

connectalias 关键字通知 MTA 将邮件传送到收件人地址中列出的任意主机。该值为默认值。关键字 connectcanonical 通知 MTA 连接到 MTA 原本应该连接的系统的主机别名。

指定修正不完整地址时使用的主机名

关键字:remotehostnoremotehostdefaulthostnodefaulthost

MTA 常收到来自配置错误或不兼容的邮件程序和 SMTP 客户机的不包含域名的地址。在允许进一步传递这类邮件之前,MTA 将尝试使其合法。MTA 通过在地址中附加域名来达到上述目的(例如,将 @siroe.com 附加到 mrochek 后面)。

对于缺少域名的信封 To: 地址,MTA 始终假定应该附加本地主机名。但是对于其他地址(例如 From: 地址),就 MTA SMTP 服务器而言至少有两个合理的域名选择:本地 MTA 主机名和客户机 SMTP 报告的远程主机名。或者在某些情况下,可能还有第三种合理的选择—将添加到进入该通道的邮件中的特定域名。现在,前两种选择都可能是正确的,因为两种情况都可能在运行时以一定的频率出现。当处理配置不正确的 SMTP 客户机时,使用远程主机的域名比较合适。当处理轻量远程邮件客户机(例如使用 SMTP 收发邮件的 POP 或 IMAP 客户机)时,使用本地主机的域名可能比较合适。或者,如果是轻量远程邮件客户机(例如 POP 或 IMAP 客户机),则客户机具有不属于本地主机的自己的特定域名。那么添加上述不同的特定域名可能会比较合适。MTA 最好基于每个通道在通道中作选择。

noremotehost 通道关键字指定应该使用本地主机的名称。关键字 noremotehost 是默认设置。

defaulthost 通道关键字用于指定特定的主机名,以将其附加到外来的缺少域名的用户 ID 的地址中。它必须后接用于完成进入相应通道的地址(信封 From: 和标题中)的域名。(如果提交通道,defaulthost 关键字的第一个参数还将影响缺少域名的信封 To: 地址。)可以指定用于完成信封 To: 地址的第二个可选域名(其中至少有一个句点)。nodefaulthost 是默认设置。

如前面的外来邮件的备用通道(切换通道)部分所述,switchchannel 关键字可用于将外来的 SMTP 连接与特定通道相关联。该功能可用于在通道中对远程邮件客户机进行分组,以便对它们进行适当的处理。或者,您可以部署与标准兼容的远程邮件客户机(即使多个不兼容的客户机正在使用中),这比尝试解决 MTA 主机中网络范围的问题简单。

使缺少收件人标题行的邮件合法化

关键字:missingrecipientpolicy

RFC 822 (Internet) 邮件需要包含收件人标题行:To:Cc:Bcc: 标题行。缺少上述标题行的邮件是非法的。然而,某些损坏的用户代理和邮件程序(例如,许多老版本的 sendmail)却发送非法邮件。

missingrecipientpolicy 关键字使用整数值,该值指定用于处理此类邮件的方法;如果未明确指定该关键字,则默认值为 1(传递非法邮件,不进行更改)。

表 12–25 missingrecipientpolicy 的值

值 

操作 

将信封 To: 收件人置于 To: 标题行。

传递非法邮件,不进行更该。 

将信封 To: 收件人置于 To: 标题行。

将所有信封 To: 收件人置于单一 Bcc: 标题行。

生成一个组构建(例如 ";")To: 标题行,即 "To: Recipients not specified: ;"

生成一个空 Bcc: 标题行。

拒绝邮件。 

请注意,MISSING_RECIPIENT_POLICY 选项可用于为此行为设置 MTA 系统默认值。初始 Messaging Server 配置将 MISSING_RECIPIENT_POLICY 设置为 1。

删除非法的空收件人标题

关键字:dropblanknodropblank

在 RFC 822 (Internet) 邮件中,所有 To:Resent-To:Cc:Resent-Cc: 标题都需要至少包含一个地址—这种标题不能包含空值。然而,某些邮件程序却可能发出这种非法标题。如果在源通道中指定 dropblank 通道关键字,此关键字将使 MTA 删除外来邮件中所有这种非法空标题。

启用特定于通道的反向数据库使用

关键字:reversenoreverse

reverse 关键字通知 MTA,应该使用地址反向数据库或 REVERSE 映射(如果其中任何一个存在的话)检查或修改(如果可能)在此通道排队的邮件的地址。noreverse 使在此通道排队的邮件地址免受地址反向处理。reverse 关键字是默认设置。请参阅将地址由内部格式转换为公用格式

启用限制的邮箱编码

关键字:restrictedunrestricted

某些邮件系统处理 RFC 822 所允许的所有地址时会有困难。尤其常见的例子是基于 sendmail 的带有错误配置文件的邮件程序。用引号引起的本地部分(或指定的邮箱)是问题的常见根源:

"smith, ned"@siroe.com

这是引起问题的如此主要的根源,以致于 RFC 1137 制订了解决该问题的方法。基本的处理方法是从地址中删除引号,然后应用转换,将需要引号的字符映射为原子中允许的字符(有关本文中使用的“原子”的定义,请参见 RFC 822)。例如,前面的地址将变成:

smith#m#_ned@siroe.com

restricted 通道关键字通知 MTA,通道将连接到要求此编码的邮件系统。然后,当邮件被写入通道时,MTA 对标题和信封地址中用引号引起的部分进行编码。通道中的外来地址将被自动解码。unrestricted 关键字通知 MTA 不执行 RFC 1137 编码和解码。关键字 unrestricted 是默认设置。


注 –

如果与通道连接的系统无法接受用引号引起的本地部分,则应该对该通道应用 restricted 关键字。如果通道实际生成用引号引起的本地部分,则不应该对其应用该关键字。(我们认为能够生成这种地址的通道也能够处理这种地址。)


生成 Return-path 标题行

关键字:addreturnpathnoaddreturnpath

通常,添加 Return-path: 标题行是执行最终传送的通道的责任。但是对于某些通道(例如 ims-ms 通道),由 MTA 添加 Return-path: 标题比允许通道执行此添加操作效率更高。addreturnpath 关键字使 MTA 在邮件加入该通道队列时添加 Return-path: 标题。

从信封 To 和 From 地址构建 Received 标题行

关键字:receivedfornoreceivedforreceivedfromnoreceivedfrom

receivedfor 关键字指示 MTA,如果邮件只发给一个信封收件人,则将该信封 To: 地址包含在其构建的 Received: 标题行中。关键字 receivedfor 是默认设置。noreceivedfor 关键字指示 MTA 构建 Received: 标题行,但不包含任何信封地址信息。

receivedfrom 关键字指示 MTA,如果 MTA 由于某些种类的邮件列表扩展等原因而更改了信封 From: 地址,则在为外来邮件构建 Received: 标题行时包含原来的信封 From: 地址。receivedfrom 是默认设置。noreceivedfor 关键字指示 MTA 构建 Received: 标题行,但不包含原来的信封 From: 地址。

处理地址标题行中的注释

关键字:commentinccommentmapcommentomitcommentstripcommenttotalsourcecommentincsourcecommentmapsourcecommentomitsourcecommentstripsourcecommenttotal

MTA 仅在必要时才解释标题行的内容。但是,必须对所有包含地址的已注册的标题行进行分析,以重写并消除缩写格式的地址,或者将其转换为合法地址。此进程期间,将在重建标题行时提取注释(括号中的字符串),并可能对其进行修改或将其排除。

可以使用关键字 commentinccommentmapcommentomitcommentstripcommenttotal 控制此行为。commentinc 关键字通知 MTA 保留标题行中的注释。这是默认设置。关键字 commentomit 通知 MTA 从寻址标题(例如,To:From:Cc: 标题行)删除所有注释。

关键字 commenttotal 通知 MTA 从除 Received: 标题行之外的所有标题行中删除所有注释;通常,该关键字没有用处或建议不要使用。commentstrip 通知 MTA 从所有注释字段中删除所有非原子字符。commentmap 关键字通过 COMMENT_STRINGS 映射表运行注释字符串。

在源通道中,可以使用关键字 sourcecommentincsourcecommentmapsourcecommentomitsourcecommentstripsourcecommenttotal 控制此行为。sourcecommentinc 关键字指示 MTA 保留标题行中的注释。这是默认设置。sourcecommentomit 关键字指示 MTA 从寻址标题(例如 To:、From: 和 Cc: 标题)删除所有注释。关键字 commenttotal 通知 MTA 从除 Received: 标题之外的所有标题中删除所有注释;因此,该关键字通常没有用处或建议不要使用。最后,sourcecommentstrip 关键字指示 MTA 从所有注释字段中删除所有非原子字符。sourcecommentmap 关键字通过源通道运行注释字符串。

上述关键字可以应用到所有通道中。

COMMENT_STRINGS 映射表的语法如下:

(comment_text) | address

如果条目模板设置了 $Y 标志,则使用指定的文本(应该用括号括起)替换原来的注释。

处理地址标题行中的个人名称

关键字:personalincpersonalmappersonalomitpersonalstripsourcepersonalincsourcepersonalmapsourcepersonalomitsourcepersonalstrip

在重写进程期间必须对所有包含地址的标题行进行分析,以重写并消除缩写格式的地址,或者将其转换为合法地址。在此进程期间,将在重建标题行时提取个人名称(尖括号分隔的地址前面的字符串),并可以选择对其进行修改或将其排除。

可以使用关键字 personalincpersonalmappersonalomitpersonalstrip 控制此行为。关键字 personalinc 通知 MTA 保留标题中的个人名称。这是默认设置。关键字 personalomit 通知 MTA 删除所有个人名称。关键字 personalstrip 通知 MTA 从所有个人名称字段中删除所有非原子字符。personalmap 关键字指示 MTA 通过 PERSONAL_NAMES 映射表运行个人名称。

在源通道中,可以使用关键字 sourcepersonalincsourcepersonalmapsourcepersonalomitsourcepersonalstrip 控制此行为。sourcepersonalinc 关键字指示 MTA 保留标题中的个人名称。这是默认设置。sourcepersonalomit 关键字指示 MTA 删除所有个人名称。最后,sourcepersonalstrip 指示 MTA 从所有个人名称字段中删除所有非原子字符。sourcepersonalmap 关键字指示 MTA 通过源通道运行个人名称。

上述关键字可以应用到所有通道中。

PERSONAL_NAMES 映射表探测的语法是:

personal_name | address

如果模板设置了 $Y 标志,则用指定的文本替换原来的个人名称。

指定别名文件和别名数据库探测

关键字:aliaslocal

通常只在别名文件和别名数据库中查找被重写到本地通道(即 UNIX 中的 L 通道)的地址。可以将 aliaslocal 关键字置于通道中,以便在别名文件和别名数据库中也能查找被重写到该通道的地址。然后,ALIAS_DOMAINS 选项将控制所进行的查找探测的确切形式。

子地址处理

关键字:subaddressexactsubaddressrelaxedsubaddresswild

作为关于子地址概念的背景,本地和 ims-ms 通道对地址本地部分(邮箱部分)中的 + 字符有各自的特殊解释:在 name+subaddress@domain 形式的地址中,MTA 将邮箱中加号后面的部分看作子地址。本地通道将子地址看作附加的装饰性信息,它将邮件实际发送给帐户名,而不考虑子地址;ims-ms 通道将子地址解释为向其传送邮件的文件夹名。

子地址还影响本地通道(即 UNIX 中的 L 通道)对别名的查找、所有使用 aliaslocal 关键字标记的通道对别名的查找以及目录通道对邮箱的查找。上述查找匹配中对子地址的确切处理方式是可以配置的:将地址与条目进行比较时,MTA 将始终首先检查整个邮箱(包含子地址)以获得完全匹配;此后 MTA 是否执行其他检查是可以配置的。

subaddressexact 关键字指示 MTA 在条目匹配期间不执行特别的子地址处理;整个邮箱(包含子地址)与条目匹配时才认为该别名匹配。不执行其他比较(尤其是,不执行通配符比较或删除子地址后的比较)。subaddresswild 关键字指示 MTA,对完全匹配(包含整个子地址)进行查找后,接下来 MTA 应查找名称+* 格式的条目。subaddressrelaxed 关键字指示 MTA,对完全匹配以及名称+* 格式的匹配进行查找后,MTA 应另外检查仅名称部分相同的匹配。使用 subaddressrelaxed 时,以下格式的别名条目将与名称或名称 + 子地址匹配,无格式名称将转换为新名称,名称 + 子地址将转换为新名称 + 子地址。subaddressrelaxed 关键字是默认设置。

name:   newname+*

因此,当使用别名或目录通道而用户希望接收使用任意子地址的邮件地址时,subaddresswild 关键字或 subaddressrelaxed 关键字可能很有用。使用上述关键字后,将无需再为地址中的每个子地址变量分别指定条目。

请注意,上述关键字只对本地通道(即 UNIX 中的 L 通道)、目录通道或用 aliaslocal 关键字标记的任意通道有意义。

标准的 Messaging Server 配置通过实际具有 subaddressrelaxed 行为的 L 通道进行中继操作(未明确指定其他关键字时使用的默认设置)。

启用特定于通道的重写规则检查

关键字:rulesnorules

rules 关键字通知 MTA 对该通道强制执行特定于通道的重写规则检查。该值为默认值。norules 关键字通知 MTA 不对该通道进行检查。这两个关键字通常用于调试,很少在实际应用程序中使用。

删除源路由

关键字:dequeue_removeroute

dequeue_removeroute 关键字在邮件出队列时从信封 To: 地址中删除源路由。此关键字当前仅在 tcp-* 通道中得以实现。将邮件传输到不能正确处理源路由的系统中时,此关键字会很有用。

必须从别名指定地址

关键字:viaaliasoptionalviaaliasrequired

viaaliasrequired 指定所有与通道匹配的最终收件人地址都必须由别名生成。最终收件人地址是指执行别名扩展(如果相关)后的匹配。不能将地址作为收件人地址直接传递给 MTA,也就是说,仅将地址重写到通道是不够的。重写到通道后,地址必须通过别名进行扩展,然后才能被认为与通道真正匹配。

例如,viaaliasrequired 关键字可以用于本地通道中阻止任意帐户(例如 UNIX 系统中的任意本地 Berkeley 邮箱)的传送。

默认设置是 viaaliasoptional,表示不要求与通道匹配的最终收件人地址由别名生成。

配置标题处理

本节说明了涉及标题和信封信息的关键字。其中包含以下各节:

重写嵌入式标题

关键字:noinnerinner

仅在必要时才解释标题行内容。但是,由于具有在邮件中嵌入邮件的功能 (message/RFC822),因此 MIME 邮件可能包含多组邮件标题。MTA 通常只解释和重写最外面那组邮件标题。但也可以选择通知 MTA 对邮件中的内部标题应用标题重写。

可以使用关键字 noinnerinner 控制此行为。关键字 noinner 通知 MTA 不重写内部邮件标题行。这是默认设置。关键字 inner 通知 MTA 对邮件进行解析,并重写内部标题。上述关键字可以应用到所有通道中。

删除选定的邮件标题行

关键字:headertrimnoheadertrimheaderreadnoheaderreadinnertrimnoinnertrim

MTA 提供了基于每个通道的功能,可以从邮件中剪裁或删除选定的邮件标题行。通过将通道关键字和一至两个关联的标题选项文件结合使用可以实现此功能。在 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“Header Option Files” 中介绍了标题选项文件的格式。

headertrim 关键字指示 MTA 在处理原来的邮件标题之后查看与通道关联的标题选项文件并对在该目标通道排队的邮件的标题进行相应的剪裁。noheadertrim 关键字不进行标题剪裁。关键字 noheadertrim 是默认设置。

innertrim 关键字指示 MTA 对内部邮件部分(即嵌入的 MESSAGE/RFC822 部分)也执行标题剪裁。noinnertrim 关键字是默认设置,它通知 MTA 不对内部邮件部分执行标题剪裁。

headerread 关键字指示 MTA 在处理原来的邮件标题之前查看与通道关联的标题选项文件并对加入该源通道队列的邮件的标题进行相应的剪裁。请注意,另一方面,headertrim 标题剪裁是在处理邮件之后应用的,而且是应用于目标通道而不是源通道。noheaderread 关键字不对加入队列的邮件进行标题剪裁。noheaderread 是默认设置。

与关键字 headeromitheaderbottom 不同,关键字 headertrimheaderread 可以应用到任意通道中。但是请注意,从邮件中删除重要的标题信息可能会导致 MTA 无法正常操作。选择要删除或要对其进行限制的标题时请特别小心。存在该功能是因为在极少的某些情况下必须删除或限制选定的标题行。


注意 – 注意 –

从邮件中删除标题信息可能会导致 MTA 无法正常操作。选择要删除或要对其进行限制的标题时请小心。提供这些关键字是因为在极少的某些情况下必须删除或限制选定的标题行。对任何标题行进行剪裁或删除之前,您必须了解该标题行的用途,并考虑删除操作可能带来的后果。


用于关键字 headertriminnertrim 的标题选项文件的名称格式为 channel _headers.opt,其中 channel 是标题选项文件与其关联的通道的名称。类似地,headerread 关键字的标题选项文件的名称格式为 channel_read_headers.opt。上述文件存储在 MTA 配置目录 instance_root/imta/config/ 中。

生成/删除 X-Envelope-to 标题行

关键字:x_env_tonox_env_to

关键字 x_env_tonox_env_to 控制在特定通道排队的邮件副本中的 X-Envelope-to 标题行的生成或取消。在用 single 关键字标记的通道中,x_env_to 关键字启用上述标题的生成,而 nox_env_to 则从加入队列的邮件中删除上述标题。默认设置是 nox_env_to

x_env_to 关键字还需要 single 关键字才能生效。

将日期转换为两位数或四位数

关键字:datefourdatetwo

原来的 RFC 822 规范要求邮件标题中日期字段必须使用两位数年份。后来 RFC 1123 将其更改为四位数。但是某些旧邮件系统无法接受四位数日期。此外,某些新邮件系统不再允许两位数日期。


注 –

无法同时处理这两种格式的系统将遇到标准相互违背的问题。


关键字 datefourdatetwo 控制 MTA 对邮件标题日期中年份字段的处理。关键字 datefour 是默认设置,它指示 MTA 将所有年份字段扩展为四位数。值小于 50 的两位数日期会加 2000,值大于 50 的两位数日期则加 1900。


注意 – 注意 –

关键字 datetwo 指示 MTA 删除四位数日期中的前两位数。此功能是为了与要求两位数日期的不兼容的邮件系统兼容;不得用于其他用途。


在日期中指定星期几

关键字:dayofweeknodayofweek

RFC 822 规范允许在邮件标题中日期字段的开头指定星期几。但是某些系统不能容纳星期几的信息。这使某些系统不愿包含此信息,尽管在标题中使用这些信息很有用。

关键字 dayofweeknodayofweek 控制 MTA 对星期几信息的处理。关键字 dayofweek 是默认设置,它指示 MTA 保留所有星期几信息,如果缺少此信息,则将其添加到日期和时间标题中。


注意 – 注意 –

关键字 nodayofweek 指示 MTA 删除日期和时间标题中开头的星期几信息。此功能是为了与不能正确处理此信息的不兼容的邮件系统兼容;不得用于其他用途。


自动分割长标题行

关键字:maxheaderaddrsmaxheaderchars

某些邮件传输(尤其是某些 sendmail 实现)不能正确处理长标题行。通常这不仅会导致标题行损坏,而且会导致错误的邮件拒绝。尽管这一现象严重违背标准,却是个常见的问题。

MTA 提供了基于每个通道的功能,可以将长标题行分割(断开)为多个独立的标题行。maxheaderaddrs 关键字控制一行中可以显示的地址的数量。maxheaderchars 关键字控制一行中可以显示的字符的数量。这两个关键字都要求一个整数参数,用以指定关联的限制。默认情况下,不对标题行的长度和可以显示的地址数实施任何限制。

标题对齐和折叠

关键字:headerlabelalignheaderlinelength

headerlabelalign 关键字控制加入此通道队列的邮件标题的对齐点;它使用整数值参数。对齐点是指标题内容对齐的边界。例如,对齐点为 10 的实例标题行外观如下:


To:       joe@siroe.com
From:     mary@siroe.com
Subject:  Alignment test
         

默认的 headerlabelalign 是 0,表示不对齐标题。headerlinelength 关键字控制加入此通道队列的邮件标题行的长度。将依据 RFC 822 折叠规则对大于该长度的标题行进行折叠。

上述关键字只控制邮件队列中邮件标题的格式,标题的实际显示通常由用户代理控制。此外,通过 Internet 传输标题时,将对其进行例行的重新格式化处理,因此即使将这些关键字与简单用户代理一起使用,如果用户代理不对邮件标题进行重新格式化的,则可能也没有可见的效果。

指定标题行最大长度

关键字:maxprocchars

处理包含许多地址的长标题行会消耗大量系统资源。maxprocchars 关键字用于指定 MTA 能够处理和重写的最大长度的标题。标题超过此长度的邮件将仍然被接受和传送,唯一的区别在于将不以任何方式重写长标题行。此关键字需要整数参数。默认设置为处理任意长度的标题。

敏感度检查

关键字:sensitivitynormalsensitivitypersonalsensitivityprivatesensitivitycompanyconfidential

敏感度检查关键字设置通道可以接受的邮件敏感度的上限。默认设置是 sensitivitycompanyconfidential;任意敏感度的邮件都可以通过。没有 Sensitivity: 标题的邮件被认为是正常邮件,即敏感度最低的邮件。如果邮件的敏感度高于上述关键字的指定,则当其排入通道时将被拒绝,并显示错误消息:

邮件对所使用的一个或多个路径过于敏感

请注意,MTA 进行此类敏感度检时以每个邮件为级别而不是以每个收件人为级别:如果某个收件人的目标通道未能通过敏感度检查,则所有收件人的邮件都将退回,而不仅是与敏感通道关联的收件人。

设置标题中的默认语言

关键字:language

标题中经过编码的内容可以显示为特定语言。language 关键字指定默认语言。

附件和 MIME 处理

本节说明了涉及附件和 MIME 处理的关键字。其中包含以下各节:

忽略 Encoding 标题行

关键字:ignoreencodinginterpretencoding

MTA 可以用 Yes CHARSET-CONVERSION 将各种非标准邮件格式转换为 MIME。尤其是,RFC 1154 格式使用非标准 Encoding: 标题行。但是某些网关在此标题行中发出不正确信息,导致有时需要忽略此标题行。ignoreencoding 关键字指示 MTA 忽略所有 Encoding: 标题行。


注 –

除非 MTA 已启用 CHARSET-CONVERSION,否则任何情况下都将忽略此标题。interpretencoding 关键字指示 MTA 注意所有 Encoding: 标题行(如果配置为执行此操作),此关键字是默认设置。


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

关键字:defragmentnodefragment

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

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

片段整理通道保留时间

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

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


defragment notices 4 
DEFRAGMENT-DAEMON

大型邮件的自动分段

关键字:maxblocksmaxlines

某些电子邮件系统或网络传输无法处理超过特定大小限制的邮件。MTA 以各个通道为基础提供了实施此类限制的功能。大于所设置的限制的邮件将被自动分割(分段)成多个较小的邮件。用于这种分段的内容类型为 message/partial,并添加唯一的 ID 参数,以便同一邮件的不同部分可以彼此关联,并在可能的情况下由接收邮件程序自动重新组合。

关键字 maxblocksmaxlines 用于实施大小限制,超过此限制时将激活自动分段功能。这两个关键字后面都必须跟一个整数值。关键字 maxblocks 指定邮件中允许的最大块数。MTA 块通常为 1024 字节,可以使用 MTA 选项文件中的 BLOCK_SIZE 选项对其进行更改。关键字 maxlines 指定邮件中允许的最大行数。如果必要,可以同时实施上述两个限制。

某种程度上,邮件标题也包含在邮件大小中。由于不能将邮件标题分割成多个邮件,但是标题本身有可能超过指定的大小限制,因此使用一种相当复杂的机制来解释邮件标题大小。该逻辑由 MTA 选项文件中的 MAX_HEADER_BLOCK_USEMAX_HEADER_LINE_USE 选项控制。

MAX_HEADER_BLOCK_USE 用于指定 0 和 1 之间的一个实数。默认值为 0.5。在邮件可以使用的总块数(由 maxblocks 关键字指定)中,邮件标题可以占用该比例的块数。如果邮件标题大于该值,MTA 将以 MAX_HEADER_BLOCK_USEmaxblocks 的乘积作为 * MAX_HEADER_BLOCK_USE 标题的大小(标题大小取实际标题大小和 maxblocks 中较小的值)。

例如,如果 maxblocks 为 10 且 MAX_HEADER_BLOCK_USE 为默认值 0.5,则所有大于 5 个块的邮件标题将按 5 个块的标题来处理,如果邮件大小等于或小于 5 个块,则不对其进行分段。如果值为 0,将不对标题做任何邮件大小限制方面的处理。

如果值为 1,则标题可以使用所有可用大小。每个分段将始终至少包含一个邮件行,无论这样做是否导致超过大小限制。MAX_HEADER_LINE_USEmaxlines 关键字结合使用的方式与上述相似。

实施邮件行长度限制

关键字:linelength

SMTP 规范允许文本行最多包含 1000 字节。但是,某些传输对行的长度可能会实施更为严格的限制。linelength 关键字提供了以各个通道为基础的机制,用于限制允许的最大邮件行长度。如果在给定通道排队的邮件的行长于为该通道指定的限制,则对邮件进行自动编码。

MTA 中可用的各种编码总是将行长度减少到少于 80 个字符。编码后可以应用适当的解码过滤器来恢复原来的邮件。


注 –

编码只能将行的长度减少到少于 80 个字符。将行的长度值指定为小于 80 可能不会实际生成长度符合该限制的行。


linelength 关键字使数据编码执行“软”自动换行以用于传输。通常在接收端对编码进行解码,以便恢复原来的“长”行。有关“硬”自动换行的信息,请参见表 13–7 中的 "Record, text"。

对邮件、配额、收件人和验证尝试次数的限制

本节说明了设置邮件大小限制、用户配额和权限的关键字。其中包含以下各节:

对不成功验证尝试的次数的限制

关键字:disconnectbadauthlimit

断开会话连接之前,此关键字可以用于对允许在会话中进行的不成功验证尝试的次数进行限制。此选项的默认值为 3。

指定绝对邮件大小限制

关键字:blocklimitnoblocklimitlinelimitnolinelimitsourceblocklimit

尽管分段功能可以自动将邮件分成较小的部分,但某些情况下应该拒绝大于某个出于管理目的定义的限制的邮件(例如为了避免对服务拒绝的攻击)。

关键字 blocklimitlinelimitsourceblocklimit 用于实施绝对大小限制。上述所有关键字后面都必须跟一个整数值。

关键字 blocklimit 指定邮件中允许的最大块数。MTA 拒绝将块数大于该值的邮件在通道排队的尝试。MTA 块通常为 1024 字节,可以使用 MTA 选项文件中的 BLOCK_SIZE 选项对其进行更改。

关键字 sourceblocklimit 指定外来邮件中允许的最大块数。MTA 拒绝向通道提交块数大于该值的邮件的尝试。也就是说,blocklimit 应用于目标通道,而 sourceblocklimit 应用于源通道。MTA 块通常为 1024 字节,可以使用 MTA 选项文件中的 BLOCK_SIZE 选项对其进行更改。

也可以根据每个发件人来指定源块限制,方法是:使用 MTA 选项 LDAP_SOURCEBLOCKLIMIT 指定用户 LDAP 属性并将此属性添加到发件人 LDAP 条目。还可以基于发件人域来支持源块限制。用 MTA 选项 LDAP_DOMAIN_ATTR_SOURCEBLOCKLIMIT 指定域 LDAP 属性,并将此属性添加到发件人的域 LDAP 条目。这些值都没有默认值。

关键字 linelimit 指定邮件中允许的最大行数。MTA 拒绝将行数大于该值的邮件在通道排队的尝试。如果必要,可以同时实施关键字 blocklimitlinelimit

MTA 选项 LINE_LIMITBLOCK_LIMIT 可用于在所有通道中实施相似的限制。这些限制的优点是可以应用于所有通道。因此,MTA 服务器可以在获取邮件收件人信息之前使邮件客户机了解这些限制。这就简化了某些协议中的邮件拒绝进程。

通道关键字 nolinelimitnoblocklimit 是默认设置,表示除了通过 MTA 选项 LINE_LIMITBLOCK_LIMIT 实施的全局限制外,不实施任何限制。

重新定向超过大小限制或收件人限制的邮件

关键字:alternatechannelalternateblocklimitalternatelinelimitalternaterecipientlimit

MTA 可以将超过指定的收件人数量限制、邮件大小限制或邮件行数限制的邮件重新定向到备用目标通道。可以通过设置能置于任意目标通道中的以下通道关键字实现此功能:alternatechannelalternateblocklimitalternatelinelimitalternaterecipientlimitalternatechannel 关键字使用一个参数,指定要使用的备用通道的名称。其他每个关键字都接受整数参数,指定一个相应的阈值。超过上述任意阈值的邮件将被加入备用通道(而不是原来的目标通道)队列中。

在以下的通道块示例中,超过 5000 块的大型邮件本来应该通过 tcp_local 通道进入 Internet,现在却通过 tcp_big 通道进入 Internet:


tcp_local smtp ...other keywords... alternatechannel tcp_big alternateblocklimit 5
tcp-daemon


tcp_big smtp ...rest of keywords...
tcp-big-daemon

以下示例说明了如何使用 alternate* 通道关键字:

处理对超过配额用户的邮件传送

关键字:holdexquotanoexquota

关键字 noexquotaholdexquota 控制发送给 Berkeley 邮箱用户 (UNIX) 的邮件的处理,即传送到 uid 本地通道且超过其磁盘配额的用户。

noexquota 通知 MTA 将发送给超过配额用户的邮件返回邮件的发件人。holdexquota 通知 MTA 保留发送给超过配额用户的邮件,该邮件将保留在 MTA 队列中,直到可以被传送,或邮件超时并由邮件返回作业返回给发件人。

处理包含超过 1000 个字符的行的 SMTP 邮件

关键字:rejectsmtplonglineswrapsmtplonglinestruncatesmtplonglines

rejectsmtplonglines 添加拒收邮件选项,拒绝包含字符数超过 1000 个(包括 CRLF)的行(SMTP 中允许这种行)的邮件。此区域中的其他选项包括 wrapsmtplonglines(将过长的行自动换行)和默认的 truncatesmtplonglines(将过长的行截断)。这两个关键字均必须应用到用于提交的初始通道(例如 tcp_local)。它不会影响后续切换到的任何通道。

控制通用内容类型参数、文件名内容类型参数和内容处理参数的长度

关键字:parameterlengthlimitnameparameterlengthlimit

parameterlengthlimit 控制通用 content-type 参数和 content-disposition 参数的截断点。默认值为 1024。nameparameterlengthlimit 控制 name content-type 参数和 filename content-disposition 参数的截断点。默认值为 128。请注意,除非正在对邮件进行 MIME 处理,否则将仅处理最外层邮件标题。可以用各种方法启用 MIME 处理,包括(但不限于)inner 关键字或字符集转换的使用。

对邮件收件人进行限制

关键字:recipientlimitrecipientcutoff

recipientlimit 指定邮件可接受的收件人地址总数。recipientcutoff 将提交给 MTA 的收件人总数与指定值相比较。如果超过限制值,则不会接受邮件进行传送。两个关键字均接受整数参数。如果未指定相应的通道关键字,则两者的默认值均为无穷大。

也可以针对发件人或发件人域设置收件人限制。可通过使用相应的 MTA 选项指定用户或域 LDAP 属性来完成此操作:LDAP_RECIPIENTLIMITLDAP_RECIPIENTCUTOFFLDAP_DOMAIN_ATTR_RECIPIENTLIMITLDAP_DOMAIN_ATTR_RECIPIENTCUTOFF,并将属性添加到发件人的用户条目或域条目。

限制标题大小

关键字:headerlimit

对主(最外层)邮件标题的最大值强加限制。当主邮件标题达到限制时将被截断并且不会出现提示。如果已设置全局 MTA 选项 HEADER_LIMIT,该选项将覆盖此通道级别的限制。默认值为没有限制。

MTA 队列中的文件创建

本节说明了允许通过指定 MTA 队列中的文件创建来控制磁盘资源的关键字。其中包含以下各节:

控制邮件中多个地址的处理方式

关键字:multipleaddrsperfilesinglesingle_sys

MTA 允许每个排队的邮件中出现多个目标地址。某些通道程序也许只能处理带有一个收件人的邮件、带有有限数量的收件人的邮件、或每个邮件副本带有一个目标系统的邮件。 例如,SMTP 通道主程序在给定的事务中只创建与一个远程主机的连接,因此只能处理到该主机的地址(尽管通常将一个通道用于所有 SMTP 通信)。

另一个示例是某些 SMTP 服务器可能会对一次能够处理的收件人数量施加限制,它们可能无法处理这类错误。

关键字 multipleaddrsperfilesinglesingle_sys 可以用于控制多个地址的处理方式。关键字 single 表示应该为通道中的每个目标地址分别创建一个邮件副本。不建议对 tcp_* 通道使用 single 关键字,因为它会更改作业控制器管理通信的方式,并且对于普通的 SMTP 方案不适用。关键字 single_sys 为使用的每个目标系统创建一个邮件副本。关键字 multiple 是默认设置,它为整个通道创建一个邮件副本。


注 –

不管使用哪个关键字,至少为邮件在其排队的每个通道创建每个邮件的一个副本。


addrsperfile 关键字用于限制可与通道队列中一个邮件文件关联的最大收件人数量,从而限制了单次操作中处理的收件人数量。该关键字要求一个整数参数,该参数指定邮件文件中允许的最大收件人地址数量;如果收件人地址达到该数量,则 MTA 自动创建其他邮件文件来容纳它们。(默认的 multiple 关键字通常不对邮件文件中的收件人数量实施限制,但是 SMTP 通道的默认值为 99。)

将通道邮件队列分布到多个子目录中

关键字:subdirs

默认情况下,在通道排队的所有邮件都作为文件存储在目录 /imta/queue/channel-name 中,其中 channel-name 为通道的名称。处理大量邮件的通道(例如 TCP/IP 通道)倾向于建立一个很大的等待处理的邮件文件的存储,但是如果将这些邮件文件分布到多个子目录中,则通道将可以获取更好的文件系统性能。subdirs 通道关键字提供了此功能:它后面应该跟一个整数,指定将在其中分布通道邮件的子目录的数量。例如:

tcp_local single_sys smtp subdirs 10

设置会话限制

关键字:disconnectbadcommandlimit、disconnectrecipientlimit、 disconnectrejectlimit、disconnecttransactionlimit

四个新通道关键字提供当检测到一定数量的错误后使 SMTP 服务器从客户机断开连接的功能。

disconnectrecipientlimit—限制会话收件人的数量。

disconnectrejectlimit—限制被拒绝的收件人的数量。

disconnecttransactionlimit—限制事务的数量。

disconnectbadcommandlimit—限制错误命令的数量。

这些均属于会话限制。除 disconnectbadcommandlimit外,发出 MAIL FROM 或 RSET 命令后,将检查所有这些限制。如果其中任何一个超过限制,服务器将发出 4xy 错误并断开连接。错误命令限制仅在发出错误命令时进行检查方面不同。

配置记录和调试

本节说明了记录和调试关键字。

记录关键字

关键字:loggingnologginglogheader

MTA 提供了记录每个入队和出队的邮件的功能。关键字 loggingnologging 以每个通道为基础控制对邮件的日志记录。默认情况下,初始配置打开所有通道的记录功能。通过在通道定义中替换 nologging 关键字,可以禁用特定通道的日志记录功能。

logheader 以每个通道为基础覆盖 MTA 选项 LOG_HEADER。值 0(默认值)将禁用邮件标题日志。有关更多信息,请参见 《Sun Java System Messaging Server 6 2005Q4 Administration Reference》中的“Option File”

有关日志记录的详细信息,请参见第 21 章,管理日志记录

调试关键字

关键字:master_debugslave_debugnomaster_debugnoslave_debug

某些通道程序包含可选代码,可通过生成附加诊断输出来帮助调试。可以使用两个通道关键字,以便可以为每个通道都生成这种调试输出。这两个关键字是 master_debug(启用主程序中的调试输出)和 slave_debug(启用从程序中的调试输出)。默认情况下禁用这两种类型的调试输出,相当于启用 nomaster_debugnoslave_debug

激活后,调试输出将生成与通道程序关联的日志文件。日志文件的位置因程序不同而不同。日志文件通常保存在日志目录中。主程序的日志文件名称格式通常为 x_master.log,其中 x 是通道的名称。从程序的日志文件名称格式通常为 x_slave.log

在 UNIX 中,如果为 l 通道启用了 master_debugslave_debug,则用户将在包含 MTA 调试信息的当前目录中收到 imta_sendmail.log-uniqueid 文件(如果用户具有对该目录的写权限,否则调试输出进入 stdout)。

设置 Loopcheck

关键字:loopchecknoloopcheck

loopcheck 关键字在 SMTP EHLO 响应标题中放入字符串,以便 MTA 检查它是否在与自身通信。设置 loopcheck 后,SMTP 服务器将公布 XLOOP 扩展。

与支持 XLOOP 的 SMTP 服务器通信时,MTA 的 SMTP 客户机将公布的字符串与其 MTA 值进行比较,并立即返回信息,说明客户机实际上是否在与 SMTP 服务器通信。

其他关键字

本节说明了其他关键字。其中包含以下各节:

进程通道覆盖

关键字:notificationchanneldispositionchannel

这些关键字将进程通道分别替换为用于初始队列传送状态通知 (DSN) 和邮件处理通知 (MDN) 的位置。如果已命名的通道不存在,Messaging Server 将恢复使用进程通道。

notificationchannel 将进程通道替换为用于初始队列传送状态通知 (Delivery Status Notification, DSN) 的位置。如果已命名的通道不存在,Messaging Server 将恢复使用进程通道。

dispositionchannel 将进程通道替换为用于初始队列邮件处理通知 (Message Disposition Notification, MDN) 的位置。如果已命名的通道不存在,Messaging Server 将恢复使用进程通道。

通道操作类型

关键字:submit

Messaging Server 支持 RFC 2476 的邮件提交协议。submit 关键字可以用于将通道标记为仅用来提交的通道。通常此功能主要在 TCP/IP 通道(例如专用于提交邮件的特殊端口上运行的 SMTP 服务器)中有用;RFC 2476 创建了 587 端口用于此类邮件提交。

Pipe 通道

关键字:user

user 关键字用于 pipe 通道中,指明通道将在其下运行的用户名称。

请注意,user 参数通常必须为小写,但如果是引用的参数,则保持原来的大小写状态。

指定邮箱过滤器文件位置

关键字:filter、nofilter、channelfilter、nochannelfilter、destinationfilternodestinationfilter、sourcefilter、nosourcefilter、fileinto、nofileinto

filter 关键字可以用来在本地和 ims-ms 通道中指定用于该通道的用户过滤器文件的位置。应使用一个必需的 URL 参数说明过滤器文件的位置。nofilter 是默认设置,表示没有为通道启用用户邮箱过滤器。

关键字 sourcefilterdestinationfilter 可用于一般 MTA 通道中,分别指定对外来邮件和外发邮件应用的通道级别的过滤器。这些关键字使用必需的 URL 参数说明通道过滤器文件的位置。nosourcefilternodestinationfilter 是默认设置,表示不为通道的任意方向启用通道邮箱过滤器。

已作废的关键字 channelfilternochannelfilter 分别是 destinationfilternodestinationfilter 的同义词。

fileinto 关键字(当前仅支持用于 ims-ms 和 LMTP 通道)指定应用邮箱过滤器 fileinto 运算符时更改地址的方式。对于 ims-ms 通道,通常的用法为:

fileinto $U+$S@$D

以上命令指定应该将文件夹名称作为子地址插入原来的地址,用以替换原来存在的任意子地址。

对于 LMTP 通道,通常的用法为:

fileinto @$4O:$U+$S@$D

其中 $4O 包含 4 和字母 O(不是数字零)。

垃圾邮件过滤器关键字

关键字:destinationspamfilterXoptinsourcespamfilterXoptin

destinationspamfilterXoptin 指定发送到此通道的所有邮件均通过过滤软件 X 运行。(过滤软件 X 由 option.dat 中的 spamfilterX_library 定义。)关键字后面跟过滤器参数,可用的参数取决于过滤程序。

destinationspamfilterXoptin 指定源自此通道的所有邮件均通过过滤软件 X 运行。(过滤软件 X 由 option.dat 中的 spamfilterX_library 定义。)关键字后面跟系统范围内的默认参数,可用的参数取决于过滤程序。如果 switchchannel 有效,则应将此关键字放置在 switched-to 通道上。

有关如何使用这些关键字的完整详细信息,请参见指定通道级别的过滤

地址验证之后扩展之前的路由

关键字:aliasdetourhost

aliasdetourhost 允许对托管用户的 mailHost 属性值进行特定于源通道的替换。尤其是,aliasdetourhost 常用于在将本地(此系统上托管的)用户的邮件路由到单独的主机以进行某种处理时实现“绕道而行”。邮件可以在原始主机上进行验证(邮件的地址是合法本地地址),绕行到处理主机,然后再返回原始主机进行扩展和传送。

aliasdetourhost 允许更好地配置和使用通道及第三方过滤主机的“中间过滤”排序。除了使用备用转换通道外,通常还使用 aliasdetourhostaliasdetourhost 用于影响本地(系统上托管的)用户的路由选择,而备用转换通道用于影响远程收件人的路由选择。

aliasdetourhost 的参数是主机或域名,或者是主机/域定义。(请注意,重写规则可以处理主机名、IP 实际地址和通道标记,这些均被默认为主机名。)如果在源通道上指定关键字,此关键字将导致储存在 LDAP 中的地址别名扩展在邮件主机信息检查点之前停止(处理转换标记信息之后)。邮件将在该点被发送到 aliasdetourhost 值,并在别名扩展之前、地址验证之后成功地完成地址处理。

以下示例说明了可以在何处使用 aliasdetourhost 来避免各种与转换通道过滤相关的问题:假定使用前端 MTA 和后端邮件存储设置系统。用户将其传送选项设置为 forwardmailbox。MTA 将备用转换通道用于反病毒/垃圾邮件系统。邮件到达此用户时,MTA 别名将扩展并生成两个收件人(一个本地收件人,一个远程收件人)。远程收件人的副本将直接被发送。另一方面,本地收件人的副本将进入转换通道进行扫描,然后返回。然后,将再次应用别名扩展生成远程收件人的第二个副本,本地收件人的副本将正常传送。得到的结果:两个副本发送到远程收件人,一个副本发送到本地收件人。

不是将备用转换通道用于本地托管用户(但对于其他收件人,可能仍将使用备用转换通道),而是使用 aliasdetourhost 的通道可以执行以下操作:

示例 1

假定从 MTA 的独立主机上运行第三方扫描程序。以下示例允许使用用户条目转发而不必创建虚假复制,并在接受邮件之前保留执行收件人地址验证的功能。

  1. 创建新通道 tcp_scanner

    在该通道上放置 daemon 关键字,指向过滤系统。将 enqueue_removeroute 也添加到此通道。在 imta.cnf 中,tcp_scanner 通道与以下通道类似:


    tcp_scanner smtp mx single_sys subdirs 20 noreverse maxjobs 7 
    pool SMTP_POOL daemon my_a-v_filter.siroe.com enqueue_removeroute
    tcp_scanner-daemon
    
  2. 在要扫描的所有入站源 tcp 通道(可能包括 tcp_local、tcp_submittcp_intranettcp_auth)上,将 aliasDetourHost tcp_scanner-daemon 添加到 tcp_local。以下介绍 tcp_localtcp_submit 的一个示例。


    ! tcp_local
    tcp_local smtp mx single_sys remotehost inner switchchannel
    identnonenumeric subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver
    maysaslserver saslswitchchannel tcp_auth missingrecipientpolicy 0
    aliasdetourhost tcp_scanner-daemon
    tcp-daemon

    ! tcp_submit
    tcp_submit submit smtp mx single_sys mustsaslserver maytlsserver
    missingrecipientpolicy 4 aliasdetourhost tcp_scanner-daemon
    tcp_submit-daemon

    请注意,aliasdetourhost (tcp_scanner-daemon) 的参数是新通道 tcp_scanner 的正式主机名。

  3. 通过 tcp_scanner 通道,创建重写规则以接收扫描系统返回的邮件。

    [1.2.3.4] $E$R$U[1.2.3.4]@tcp_scanner-daemon

    其中,1.2.3.4 是扫描程序系统的 IP 地址。

    如果没有此重写规则,邮件将通过其他 tcp* 源通道之一进入,并且将因为这些源通道均有 aliasdetourhost 而再次扫描邮件。将出现一个回路。

  4. 重新编译配置并重新启动分发程序。


    #imsimta cnbuild
    #imsimta restart dispatcher
    

示例 2

假定第三方扫描程序在与 MTA 相同的主机上运行,但是在不同的端口上进行侦听。假定在端口 10024 上接受邮件,并在端口 10025 上传回邮件。

  1. 创建新通道 tcp_scanner


    ! tcp_scanner
    tcp_scanner smtp nomx single_sys identnonenumeric subdirs 20 maxjobs 
    7 pool SCAN_POOL daemon 127.0.0.1 port 10024 enqueue_removeroute
    tcp_scanner-daemon
  2. 在要扫描的所有入站源 tcp 通道(可能包括 tcp_localtcp_submittcp_intranet 等)上,将 aliasDetourHost tcp_scanner-daemon 添加到 tcp_local。以下介绍 tcp_localtcp_submit 的一个示例。


    ! tcp_local
    tcp_local smtp mx single_sys remotehost inner switchchannel
    identnonenumeric subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver
    maysaslserversaslswitchchannel tcp_auth missingrecipientpolicy 0
    aliasdetourhost tcp_scanner-daemon
    tcp-daemon

    ! tcp_submit
    tcp_submit submit smtp mx single_sys mustsaslserver maytlsserver
    missingrecipientpolicy 4 aliasdetourhost tcp_scanner-daemon
    tcp_submit-daemon
  3. 添加到 mappings 文件以通过 tcp_scanner 通道重新路由出站邮件。

    CONVERSIONS
    
    in-chan=tcp_scanner;out-chan=*;CONVERT     No
    in-chan=tcp_*;out-chan=tcp_local;CONVERT   Yes,Channel=tcp_scanner
  4. job_controller.cnf 中的 SMTP_POOL 下,添加并发扫描的数量限制。

    尽管也应为扫描软件设置限制,但最好保持相同的设置以便在扫描程序不接受邮件时,Messaging Server 不会尝试将邮件发送到扫描程序。


    !
    [POOL=SCAN_POOL]
    job_limit=2
    !
  5. 将新服务添加到 dispatcher.cnf 以接受特殊端口上扫描程序返回的邮件,并使其源于 tcp_scan 以免再次对其扫描。


    !
    [SERVICE=SMTP_SCANNING]
    INTERFACE_ADDRESS=127.0.0.1
    PORT=10025
    IMAGE=IMTA_BIN:tcp_smtp_server
    LOGFILE=IMTA_LOG:tcp_smtp_server.log
    STACKSIZE=2048000
    PARAMETER=CHANNEL=tcp_scanner
    !
  6. 重新编译配置并重新启动分发程序。


    # imsimta cnbuild
    # imsimta restart job_controller
    # imsimta restart dispatcher

NO-SOLICIT SMTP 扩展支持

关键字:sourcenosolicitdestinationnosolicit

Internet-Draft draft-malamud-no-soliciting-07.txt 中所述的 NO-SOLICIT SMTP 扩展已经在 Messaging Server 中作为建议的标准实施。以下通道关键字可以用来控制此功能:

sourcenosolicit 指定一个以逗号分隔的请求字段值列表,在此通道提交的邮件中将阻塞这些请求字段值。值的此列表将显示在 NO-SOLICIT EHLO 响应中。可以在这些值中使用全局样式通配符,但是,包含通配符的值将不会在 EHLO 通告中显示。

destinationnosolicit 指定一个以逗号分隔的请求字段值列表,在此通道排队的邮件中将不接受这些请求字段值。

对错误的 RCPT TO 地址设置限制

关键字:deferralrejectlimit

对单次会话中允许的错误 RCPT TO: 地址设置数量限制。在拒绝指定数量的 To: 地址后,所有后续收件人(无论正确还是错误)都将被拒绝,并显示 4xx 错误。提供与 ALLOW_REJECTIONS_BEFORE_DEFERRAL SMTP 通道关键字相同的功能,但以每个通道为基础。