上一页    目录    索引    下一页
iPlanet Messaging Server 5.2 管理员指南

第 6 篇 关于 MTA 服务与配置


本章描述一般 MTA 服务和配置。有针对性的或详细解释,请见其它有关章节。本章包括以下各节:


MTA 配置文件

MTA 的主配置文件是 imta.cnf。在默认设置下,这个文件可在 instance_root/imta/config/imta.cnf 中找到。该文件包含 MTA 通道定义及通道重写规则。与重写目标地址相关联的通道此时成为目标通道。

本节将就 MTA 配置文件作简要介绍。有关配置重写规则以及构成 MTA 配置文件的通道定义的细节,请参阅第 7 篇 “配置重写规则”第 8 篇 “配置通道定义”

通过修改 MTA 配置文件,您可在站点上建立在用通道,并可通过重写规则确立哪个通道负责哪种类型的地址。配置文件可用来建立电子邮件系统的布局,方法是:指定可用的传送方法(通道)和可将地址类型与适当的通道相关联的传送路由(重写规则)。

配置文件包含两部分:域重写规则和通道定义。域重写规则在文件中最先出现,并与通道定义以一个空行隔开。通道定义统称为通道表。单独的通道定义组成通道块。

下面是 imta.cnf 配置文件的例子,说明如何使用重写规则将邮件路由到适当的通道。为了使例子尽可能的简单,在此没有使用域名。重写规则出现在配置文件的上半部分,接下来在配置文件的下半部分是通道定义。

图 6-1 简单的 MTA 配置文件

! test.cnf - An example configuration file. (1)
!
! This is only an example of a configuration file. It serves
! no useful purpose and should not be used in a real system.
!
! Part I: Rewrite rules
a     $U@a-daemon (2)
b     $U@b-daemon
c     $U%c@b-daemon
d     $U%d@a-daemon
              (3)
! Part II: Channel definitions
l             (4)
local-host

a_channel defragment charset7 usascii (5)
a-daemon

b_channel noreverse notices 1 2 3
b-daemon

</usr/iplanet/server5/msg-tango/table/internet.rules (6)


下面的列表解释了前面配置文件中的几个关键项目(用黑体数字标注,用括弧括起的部分):

  1. 感叹号(!)表示注释行。感叹号必须出现在第一列。在其他任何地方出现的感叹号解释为常值感叹号。

  2. 重写规则出现在配置文件的前半部分。在重写规则的行间不能出现空行。允许有注释行(在第一列以感叹号开始)。

  3. 出现在文件中的第一个空行意味着重写规则部分的结束和通道块的开始。这些定义统称为 通道驻留表,用来定义 MTA 可以使用的通道和与每个通道相关联的名称。

  4. 第一个要出现的通道块通常是本地块通道,或称为 l 通道。此后,空行将各个通道块相互隔开。(例外情况是 defaults 通道,它可以出现在 l 通道的前面)。

  5. 典型的通道定义包括一个通道名(a_channel),定义通道配置的一些关键字(defragment charset7 usascii)和路由系统(a-daemon),也称为通道标记

  6. 可以将其他文件的内容包含在配置文件中。如果某行的第一列是一个小于号(<),则该行的其余部分视为文件名;该文件名应当总是具有绝对的和完整的路径。该文件被打开,其内容在那一点处插入到配置文件中。包含文件最高可以嵌套深达 3 层。包含于配置文件中的任何文件必须是世界可读的,正如配置文件是世界可读的一样。

表 6-1 所示为一些示例地址是如何通过前述配置发送的。

表 6-1 地址和与之相关的通道


地址

入队通道

u@a

a_channel

u@b

b_channel

u@c

b_channel

u@d

a_channel

有关 MTA 配置文件的详细说明,请参见“重写规则”“通道定义”第 7 篇 “配置重写规则”


dirsync 配置



默认的 Messaging Server 安装使用 dirsync 运行模式。(另一个选择是使用直接 LDAP 模式,有关说明见附录 B “MTA 直接 LDAP 操作”。)在 dirsync 模式下,MTA 缓存目录信息并通过访问缓存获得所需数据,而不是每处理一封邮件就查询目录服务。

在目录服务中存储的目录信息是由称作 dirsync 的程序持续更新的。结果是,目录缓存必须定期地,也就是同步地,利用目录服务中的当前目录信息进行更新。同步类型有两种:

在默认设置下,MTA 目录缓存在每日凌晨 02:00:00 进行完整同步,每 10 分钟进行一次递增同步。

表 6-2 所示为全目录同步和部分目录同步时发生的更新情况。

表 6-2 MTA 目录高速缓存更新


MTA 目录高速缓存更新

完整同步

递增同步

添加新用户条目

更新已修改的用户条目

*去除已删除的用户条目

新成员加入到现有分配列表

删除的成员已从现有分配列表中去除

添加新的分配列表

*去除已删除的分配列表

*若需递增目录同步考虑到被删除条目,则必须首先将条目的状态标记为已删除。在执行了递增同步后,MTA 认为这些用户或组已不存在。只有在递增同步后才能进行真正的目录条目的移除。

目录同步通常是自动发生的。然而,如有需要,可用 imsimta dirsync 命令重新创建或更新 MTA 目录的高速缓存。若需有关 imsimta dirsync 命令的更多信息,请参见 iPlanet Messaging Server Reference Manual


目录同步配置参数

表 6-3 列出了目录同步所需的配置参数。


表 6-3 目录同步配置参数


参数

说明

local.imta.
ldsearchtimeout

当搜索用户与邮件列表信息时,可指定 LDAP 搜索超时。默认设定为无超时。

local.imta.hostnamealiase

在检查 LDAP 条目的 mailhostmailRoutingHosts 属性以确定其是否为本地时,dirsync 进程使用 local.hostname 参数进行比较。另外,用逗号分隔的主机别名列表可以通过 local.imta.hostnamealiases 参数提供。此后,dirsync 进程将使用在这两个参数中提供的所有主机名检查条目是否为本地。

local.imta.mailaliases

在默认设置下,MTA 认为只有 mailmailAlternateAdress 的 LDAP 属性为可路由的电子邮件地址。另外,也可通过 local.imta.mailaliases 参数提供用逗号分隔的 LDAP 属性列表。这个列表将改写默认属性。例如,MTA 在路由邮件时将考虑下列四个属性:

local.imta.mailaliases=mail,mailAlternateAddress,
rfc822mailbox,rfc822mailalias

local.imta.ugfilter

这个参数可用来设置 LDAP 搜索过滤器,即 dirsync 在搜索用户和邮件列表信息时使用的过滤器。

默认过滤器是(objectClass=inetLocalMailRecipient)。

例如,如果只考虑与 inetLocalMailRecipient AND myispSubscriber 对象类相关的 LDAP 条目,应将这个参数设置为:

local.imta.ugfilter=(&(objectClass=inetLocalMailRecipient)(objectClass=myispSubscriber))

注意:在递增同步的情况下,一个时间戳过滤器会添加到这个过滤器中。因此,您需要将自定义过滤器用()包裹起来。

local.imta.
statssamplesize

如果作了设置,这个参数指示 dirsync 在标准输出设备上输出概要信息,包括用户数、从开始以来的累计邮件列表条目数以及以条目/秒为单位的平均速率。用户与邮件列表无论是否成功同步均计算在内。

local.imta.reverseenabled

触发生成反转数据库。默认值是 yes。反转数据库的实际使用是由 USE_REVERSE_DATABASE 选项控制的。

local.imta.ssrenabled

触发生成服务器端规则(SSR)数据库。默认值是 yes。SSR 数据库的实际使用是由 ssr 通道关键字控制的。

local.imta.vanityenabled

控制是否启用空域(msgVanityDomain 用户 LDAP 属性)。默认值是 yes

local.imta.
catchallenabled

控制是否启用 catchall 地址(形如 @domainmailmailAlternateAddress)。默认值是 yes

local.imta.scope

这个参数可指示 dirsync 应该与哪个条目同步:

仅对其 mailhost 属性为本地主机的用户和邮件列表条目进行缓存处理:value = "local"。

对所有用户和邮件列表条目都进行缓存处理,无论其 mailhost 属性是什么:value = "domains"。这是参数缺失情况下的默认值。

不对任何域、用户或邮件发送列表进行缓存处理:value = "nobody"


映射文件



许多 MTA 组件都使用面向查找表的信息。这种类型的表是用于将一个输入串转换(也即映射)为一个输出串。这样的表,称为映射表,通常以两列形式呈现。第一(左)列提供可能的匹配时需参照的输入串(模式),第二(右)列给作为输入串映射结果的输出串(模板)。

大多数 MTA 数据库 - 包含不同类型的 MTA 数据的数据库,不要与映射表混淆 - 恰恰是这种类型的表的例子。然而,MTA 数据库文件并不提供通配符查找功能,这是由于查找通配符匹配项时要扫描整个数据库,因此这一方法本身的效率极低。

MTA 映射文件支持多重映射表。还提供通配符功能,以及多级和迭代的映射方法。与用数据库相比,这一方法更适合密集计算之环境,在条目数量大的情况下尤其如此。然而,这一维护方面的灵活性实际上可免除使用等效数据库中大多数条目之必要,因此很可能因而降低系统的总体开销。

表 6-4 列出了本文描述的映射表。


表 6-4 iPlanet Messaging Server 映射表


映射表

说明

CHARSET-CONVERSION

1

用于指定可以做哪种类型的通道对通道的字符集转换和邮件重格式化。

COMMENT_STRINGS

1

用于修改地址头注释(括弧括起来的字符串)。

CONVERSIONS

1

用于选择转换通道的邮件流通量。

"domain lookup"

1

用于寻找在直接 LDAP 模式下搜索别名的树基。

FORWARD

1

用于执行转发,类似于使用别名文件或别名数据库所执行的转发。

FROM_ACCESS

1

可根据信封的“发件人”地址过滤邮件。如果收件人地址不相关,可使用此表。

INTERNAL_IP

1

用于识别内部系统和子网络。

MAIL_ACCESS

1

用于根据在 SEND_ACCESSPORT_ACCESS 表中找到的组合信息阻塞外来的连接。

NOTIFICATION_LANGUAGE

1

用于定制或本地化通知邮件。

ORIG_MAIL_ACCESS

1

用于根据在 ORIG_SEND_ACCESSPORT_ACCESS 表中找到的组合信息阻塞外来的连接。

ORIG_SEND_ACCESS

1

可根据信封的“发件人”地址、信封的“收件人”地址、源和目标通道用来阻塞外来的连接。

PERSONAL_NAMES

1

用于修改个人姓名(用尖括弧定界的地址前的字符串)。

PORT_ACCESS

1

可根据 IP 号阻塞外来的连接。

REVERSE

1

用于将地址从内部的形式转换为公共、通告之形式。

SEND_ACCESS

1

可根据信封的“发件人”地址、信封的“收件人”地址、源和目标通道用来阻塞外来的连接。

X-ATT-NAMES

1

用于从映射表中检索一个参数值。


定位和装载映射文件

映射表保留在 MTA 映射文件中。这是用 MTA tailor 文件中的 IMTA_MAPPING_FILE 选项指定的文件;在默认设置下,该文件为 server_root/msg-instance/imta/config/mappings。系统将映射文件的内容合成到编译配置。

映射文件应当是世界可读的。若不允许映射文件成为世界可读的文件,则会导致不确定的行为。


映射文件中的文件格式

映射文件是由一系列单独的表组成的。每个表以其表名作为开头。表名的在第一列的字符总是字母。跟在表名后面的是一个必须有的空行,随后是表中的各个条目。条目由零或多个首行缩排的行组成。每个条目行包括两列,是由一个或多个空格或制表符隔开的。任何在条目中的空格都必须用 $ 字符引起来。空行必须在每个映射表名之后和各个映射表之间出现;在一个单独的表的条目间则不能出现空行。注释行用位于第一列的惊叹号(!)表示。

形成的格式类似于如下:

TABLE1_NAME

   pattern1-1    template1-1
   pattern1-2    template1-2
   pattern1-3    template1-3
      .              .
      .              .
      .              .
   pattern1-n    template1-n

TABLE2_NAME

   pattern2-1    template2-1
   pattern2-2    template2-2
   pattern2-3    template2-3
       .            .
       .            .
       .            .
   pattern2-n    template2-n

          .
          .
          .

TABLE3_NAME

          .
          .
          .

使用映射表 TABLE2_NAME 的应用程序将字符串 pattern2-2 映射到任何由 template2-2 模板指定的地方。每个模式或模版最多可以包含 252 个字符。映射表中的条目没有数量限制(尽管过多的条目可能消耗大量的 CPU 时间和过多的内存)。长行(超过 252 个字符者)可以通过使用反斜杠(\)结尾来续行。在两列间和在第一列前的空白不能省略。

映射文件中不得有重复的映射表名。


在映射文件中包含其它文件

映射文件中可以包含其它文件。可以用如下格式的行做到这一点:

<file-spec

这样的行有效地将 file-spec 文件的内容替换到映射文件中包含操作出现之处。文件限定应当包括一个完整的文件路径(目录,等等)。所有以这种方式包含的文件必须是世界可读的。在这样的被包含的映射文件中也允许有注释。文件包括可嵌套深至 3 层。包含文件与映射文件同时装载 - 它们不是根据需要而装载的,所以在使用包含文件时不涉及性能改进或内存节省问题。


映射操作

在映射文件中的所有映射都是以一致的方法应用的。一个映射与另一个映射的唯一不同是输入字符串源和映射输出的用途。

映射操作总是以一个输入字符串和一个映射表开始。映射表中的条目是按照它们在表中出现的顺序,从顶部到底部一次一个进行扫描的。每个条目的左侧用作模式,并且输入字符串是以大小写不区分的方式与该模式进行比较的。


映射条目模式

模式可包含通配符。特别是,常规的通配符是允许的:星号(*)与零或更多字符相匹配,每个百分比符号(%)与单个字符相匹配。星号、百分比符号、空格和制表符可通过在其前面加美元符号($)而被引起来。引起来的星号或百分比符号丧失其任何特殊的含义。空格或制表符必须引起来以防止它们过早地结束模式或模板。本意的美元符号应当加倍($$),第一个美元符号用于将第二个引起来。

表 6-5 映射模式通配符 


通配符

说明

%

完全匹配一个字符。

*

使用最大或“贪心的”从左到右匹配方式匹配零个或多个字符。

反匹配

说明

$ n*

匹配第 n 个通配符或 glob。

修饰符

说明

$_

使用最小或“惰性”从左到右匹配方式。

$@

关闭相继的通配符或 glob 的“保存”。

$^

打开相继的通配符或 glob 的“保存”;此为默认设置。

Glob 通配符

说明

$A%

匹配一个字母字符,A-Z 或 a-z。

$A*

匹配零个或多个字母字符,A-Z 或 a-z。

$B%

匹配一个二进制数字(0 或 1)。

$B*

匹配零个或多个二进制数字(0 或 1)。

$D%

匹配一个十进制数字 0-9。

$D*

匹配零个或多个十进制数字 0-9。

$H%

匹配一个十六进制数字 0-9 或 A-F。

$H*

匹配零个或多个十六进制数字 0-9 或 A-F。

$O%

匹配一个八进制数字 0-7。

$O*

匹配零个或多个八进制数字 0-7。

$S%

匹配一个符号集中的字符,例如 0-9、A-Z、a-z、_、$。

$S*

匹配零个或多个符号集中的字符,即 0-9、A-Z、a-z、_、$。

$T%

匹配一个制表符、垂直制表符或空格字符。

$T*

匹配零个或多个制表符、垂直制表符或空格字符。

$X%

与 $H% 同义。

$X*

与 $H* 同义。

$[ c]%

匹配字符 c。

$[ c]*

匹配任意次出现的字符 c。

$[ c1 c2 ... cn ]%

匹配恰好一次出现字符 c1、c2 或 cn

$[ c1 c2 ... cn ]*

匹配任意次出现的任意字符 c1、c2 或 cn

$[ c1 -cn ]%

匹配从 c1 到 cn 范围内的任意一个字符。

$[ c1 -cn ]*

匹配从 c1 到 cn 范围内的任意次出现的字符。

$< IPv4>

匹配一个 IPv4 地址,忽略位。

$(IPv4)

匹配一个 IPv4 地址匹配,保持前缀位。

${IPv6}

匹配一个 IPv6 地址。

在 globs 中,即在一个 $[...] 构造中,反斜杠字符为字符引号。若要在 glob 中表示一个连字号-,或右方括弧 ],连字号或右方括弧必须前加反斜杠引起来。

在模式中的所有其他字符只代表和匹配其自身。特别是,单引号、双引号字符以及及圆括弧在映射模式和模板中都没有什么特殊含义,它们只是普通的字符。这使书写对应于非法地址和部分地址的条目更简单。

要指定多个修饰符,或指定修饰符和反匹配,语法格式中只使用一个美元符号例如,要反匹配初始通配符,而不保存反匹配自身,应使用 $@0,而不是 $@$0。

请注意 imsimta test -match 实用程序可以用于测试映射模式,尤其是测试通配符在模式中的效果。

星号通配符通过贯穿模式的从左到右的工作方式,使其匹配最大化。例如,当字符串 a/b/c 与模式*/*进行比较时,左星号与 a/b 相匹配,右星号与剩下 c 匹配。

$_ 修饰符使通配符的匹配为最小化,也就是在贯穿模式的从左到右的工作中,只考虑最少可能的匹配。例如,当字符串 a/b/c 与模式 $_*/$_* 进行比较时,左侧的 $_* a 相匹配,右侧的 $_*b/c 相匹配。


IP 匹配

在 IPv4 前缀匹配的情况下,须指定 IP 地址或子网络,并可选择后跟一个斜杠和一个数字,用来表示进行匹配比较时前缀的有效位数。例如,下列地址与子网络 123.45.67.0 中的任何地址相匹配:

$(123.45.67.0/24)

在 IPv4 忽略位匹配的情况下,须指定 IP 地址或子网络,并可选择后跟一个斜杠和一个数字,表示进行匹配检查时忽略的位数。例如,下列地址与子网络 123.45.67.0 中的任何地址匹配:

$<123.45.67.0/8>

下列示例与从 123.45.67.4 123.45.67.7 范围内的任何地址相匹配。

$<123.45.67.4/2>

IPv6 匹配与 IPv6 地址或子网络相匹配。


映射条目模板

如果在给定的条目中模式的比较失败,不会采取行动,继续进行下一个条目的扫描。如果比较成功,条目的右侧被用作一个模板以产生一个输出字符串。该模板有效地促使根据模板给出的指令所构建的输出串来替换输入串。

在模板中的几乎所有字符在输出中都产生其自身。例外之一是美元符号($)。

美元符号后跟一美元符号、空格或制表符在输出字符串中产生美元符号、空格或制表符。请注意,所有这些字符必须引起来,以便插入到输出字符串中。

美元符号后跟一数字 n 调用一置换;美元符号后跟一字母被称为“元字符”元字符本身并不出现在模板产生的输出字符串中,但产生一些特殊的置换或处理。参见表 6-6 中的特殊置换和标准处理元字符列表。任何其他元字符是为针对特定映射的应用程序保留的。

请注意,如果元字符$C$E$L$R 中的任意一个在某个匹配模式的模板中出现,会影响映射过程并控制是终止还是继续。也就是说,设置迭代的映射表条目是可能的:一个条目的输出成为另一个条目的输入。如果匹配模式的模板中不包含元字符$C$E$L$R 中的任何一个,则假定为 $E(立即终止映射过程)。

贯穿映射表的迭代检查是有限制的,以防止无限循环。在每次重新启动一检查时,若相关模式的长度与前一次检查时相同或更长,计数器就增 1。如果字符串的长度比前一次短,则计数器重置为零。在计数器已超过 10 后要求再次迭代一映射是不允许的。

表 6-6 映射模板置换和元字符  


置换序列

置换

$n

从 0 开始从左向右计数的第 n 个通配字段。

$#...#

序列数置换。

$]...[

LDAP 搜索 URL 查找;置换结果。

$|...|

将指定映射应用到提供的串。

${...}

常规数据库置换。

$[...]

调用站点提供的例程,置换结果。

元字符

说明

$C

继续开始下一个表条目的映射过程,使用此条目的输出串作为该映射过程的新输入串。

$E

现在就结束映射过程,使用此条目的输出字符串作为映射过程的最终结果。

$L

继续开始下一个表条目的映射过程,使用此条目的输出串作为该映射过程的新输入串;当表中的所有条目用尽后,从第一个表条目开始进行再一次的检查。随后的带有$C$E$R 等元字符的匹配可不受此条件限制。

$R

继续第一个映射表条目开始的映射过程,使用此条目的输出串作为该映射过程的新输入串。

$?x?

映射条目已耗用百分之 x 的时间。

$\

强制随后文本改为小写。

$^

强制随后文本改为大写。

$_

保留随后文本原有的大小写。

$:x

只在设置了指定标志时匹配。

$;x

只在清除了指定标志时匹配。


通配符字段置换($n)
美元符号后跟一数字 n 将被与模式中第 n 个通配符相匹配的材料所置换。通配符从 0 开始编号。例如,下列条目将与输入串 PSI%A::B 相匹配并产生作为结果的输出串 b@a.psi.siroe.com

PSI$%*::*    $1@$0.psi.siroe.com

输入串 PSI%1234::USER 也将匹配产生 USER@1234.psi.siroe.com 作为输出串。输入串 PSIABC::DEF 将不与此条目中的模式相匹配并将不采取行动,即此条目不产生输出串。


控制文本大小写($\,$^,$_)
元字符 $\ 强制随后文本改为小写,$^ 强制随后文本改为大写,而 $_ 使随后文本保留其原有的大小写。例如,这些元字符在使用映射转换大小写有意义的地址时可能很有用。


过程控制($C,$L,$R,$E)
$C$L$R$E 等元字符影响映射过程,控制是否和何时终止映射过程。元字符:

映射表模板是从左到右扫描的。若要为可能“成功”或“失败”的条目设置 $C$L $R 标记(例如,常规数据库置换或随机值控制条目),需将 $C$L$R 元字符放置在条目的可能成功或失败部分的左边,否则,如果如果该条目的其他部分失败,标记是看不见的。


条目随机成功或失败($?x?)
在映射表条目中的元字符 $?x? 的作用是使该条目在百分之x 时间的里“成功”;其余的时间,条目“失败”并且映射条目输入的输出保持不变作为输出。(请注意,条目失败的效果根据映射的情况,并不一定与在第一位置未匹配的条目相同。)x 应当是指定成功百分比的实数。

例如,假设一个 IP 地址为 123.45.6.78 的系统正向您的站点发送稍多一些的 SMTP 邮件,而您希望使其慢下来,则可以按下列方法使用 PORT_ACCESS 映射表。假设您希望只允许其中 25% 的连接尝试通过,而拒绝其他的 75% 的连接尝试。下面的 PORT_ACCESS 映射表使用 $?25? 以使带有 $Y(接受连接)的条目仅在 25% 的时间里成功;在其他 75% 的时间里,该条目失败,在条目中的初始 $C 使得 MTA 从下一个条目继续映射,这就造成连接尝试被拒绝并带有 SMTP 错误和这样的讯息:请稍候再试。

PORT_ACCESS

  TCP|*|25|123.45.6.78|*         $C$?25?$Y
  TCP|*|25|123.45.6.78|*         $N45s$ 4.40$ Try$ again$ later


序列号置换($#...#)
$#...# 置换增加在 MTA 序列文件中的储存的值,并将该值置换到模板中。这可用于希望在映射表输出中有一个唯一限定词的情况下产生唯一的、增加的字符串;例如当使用映射表产生一系列文件名时。

允许的语法包括下列中的任何一个:

$#seq-file-spec|radix|width#


$#seq-file-spec|radix#


$#seq-file-spec#

必须的 seq-file-spec 参数是一个已存在的 MTA 序列文件的完整文件指定,其中,可选的 radixwidth 参数分别指定输出序列值的基数(数制)和输出数字的位数。默认的基数为10。在 -36 到 36 的范围内的基数都是允许的;例如,基数 36 给出了以数字 0,...,9,A,...,Z 表示的值。在默认设置下,序列值是按照其自然的宽度打印的,但如果指定的宽度要求更多数字位,则输出值的左侧被填补以 0,以获得正确的数字位数。

请注意,如果明确指定了宽度,则基数也必须明确指定。

如前面所解释的,在映射中所参照的 MTA 序列文件必须已经存在。若要创建 MTA 序列文件,请使用如下 UNXI 命令:

touch seq-file-spec


cat >seq-file-spec

用映射表访问的序列文件必须是世界可读的,以便正常运行。要使用这样的序列数文件,还必须拥有一个 MTA 用户帐户(在 imta_tailor 文件中的配置为 nobody)。


LDAP 查询 URL 置换,$]...[
具有 $]ldap-url[ 形式的置换是被特别处理的。ldap-url 被翻译为 LDAP 查询 URL,而 LDAP 查询的结果被置换。使用标准的 LDAP URL,省略了主机和端口;而主机和端口则利用 LDAP_HOSTLDAP_PORT 选项进行指定。也就是,LDAP URL 应被指定为:

ldap:///dn[? attributes[?scope?filter]]

其中显示在上面的方括弧[] 表示是 URL 的可选部分。dn 是必需的,它是一个指定搜索基的判别名。URL 的可选部分 attributesscopefilter 进一步精细描述返回信息。也就是说,attributes 指定属性或从与此 LDAP 查询相匹配的 LDAP 目录条目返回的属性。scope 可以是 base(默认情况),onesub 中的任意一个。filter 描述匹配条目的特性。

在 LDAP 查询 URL 中使用时,有某些可用的 LDAP URL 置换序列。


映射表置换($|...|)
具有 $|映射;argument| 形式的置换是被特别处理的。MTA 在 MTA 映射文件中查找名为映射 的辅助映射表,并使用 argument 作为该命名的辅助映射表的输入。命名的辅助映射表必须存在,并且如果它是成功的,必须在其输出中设置 $Y 标记;如果命名的映射表不存在或不设置 $Y 标记,则该辅助映射表置换失败,而原有的映射条目被认为失败:原有输入串被用作输出串。

请注意,若要在进行映射表置换的映射表条目中使用诸如 $C$R$L 这样的过程控制元字符,过程控制元字符应被放置在映射表模板中映射表置换的左侧;否则映射表置换“失败”意味着过程控制元字符没有被看见。


常规数据库置换(${...})
据有 ${text} 形式的置换是被特别处理的。text 部分被用来作为访问常规数据库的密钥。此数据库是使用imsimta crdb 实用程序生成的。如果在数据库中找到text,数据库中的相应的模板将被置换。如果 text 与数据库中的任何条目都不匹配,则将输入串毫无改变地用作输出串。

如果常规数据库存在,它应该在世界范围内都是可读的,这样才能确保运转正常。

若要在进行常规数据库置换的映射表条目中使用诸如 $C,$R 或 $L 这样的过程控制元字符,过程控制元字符应被放置在映射表模板中常规数据库置换的左侧;否则常规数据库置换“失败”意味着过程控制元字符没有被看见。


站点提供的例程置换($[...])
具有 $[图象routineargument] 形式的置换是被特别处理的。image,routine,argument 部分被用来查找并调用客户提供的例程。在 UNIX 运行环境下,MTA 使用 dlopendlsym 从共享库 image 动态装载和调用例程 routine。在 Windows NT 运行环境下,MTA 从动态链接库 image 调用例程 routine。例程 routine 于是作为带有下列参数列表的函数而被调用:

status = routine (argument, arglength, result, reslength)

argument result 分别为 252 字节长的字符串缓冲区。argumentresult 参数作为字符串的指针传递(例如,在 C 中,它们的类型应为 char*)。arglengthreslength 都是以引用传递的有符号的长整数。作为输入,argument 包含映射表模板中的 argument 字符串,arglength 则为该串的长度。作为返回,结果串应被置于 result 中,结果的长度应置于 reslength 中。然后,此结果串替代在映射表模板中的 $[image,routine,argument]。如果映射表置换失败,routine 例程返回 0,如果映射表置换成功则返回 -1。如果置换失败,通常将原输入串毫无改变地用作输出串。

如果要在进行站点提供的例程置换的映射表条目中使用诸如 $C$R$L 这样的过程控制元字符,过程控制元字符应放置在映射表模板中站点提供的例程置换的左侧;否则映射表置换“失败”意味着过程控制元字符没有被看见。

站点提供的例程调用机制使 MTA 的映射处理能以所有各种复杂的方法延伸。例如,在 PORT_ACCESSORIG_SEND_ACCESS 映射表中,可以调用执行某类装载监控服务,其结果用于决定是否接受连接或邮件。

站点提供的共享库图像 image 应当是世界可读的。


其它 MTA 配置文件



imta.cnf 文件外,iPlanet Messaging Server 还提供另外几个配置文件以帮助配置 MTA 服务。这些文件在表 6-7 中简要介绍。


表 6-7 MTA 配置文件


文件

说明

自动回复选项文件

autoreply 程序所使用的选项。
instance_root/imta/config/autoreply_option

别名文件(必备项)

用于实现在目录中不存在的别名。
instance_root/imta/config/aliases

TCP/IP(SMTP)通道选项文件(也称为 SMTP 选项文件)

用于设置具体通道选项。
instance_root/imta/config/channel_option

转换文件

用于转换通道控制邮件正文部分的转换。
instance_root/imta/config/conversions

Dirsync 选项文件(只在以 dirsync 模式运行时必须)

dirsync 程序使用的选项。
instance_root/imta/config/dirsync.opt

Dispatcher 配置文件(必备项)

Dispatcher 的配置文件。
instance_root/imta/config/dispatcher.cnf

作业控制器文件(必备项)

Job Controller 使用的配置文件。
/instance_root/imta/config/job_controller.cnf

MTA 配置文件(必备项)

用于地址重写、路由选择以及通道定义。
/instance_root/imta/config/imta.cnf

映射文件(必备项)

映射表的资料档案库。
/instance_root/imta/config/mappings

选项文件

全局 MTA 选项文件。
/instance_root/imta/config/option.dat

Tailor 文件(必备项)

指定位置和一些调整参数的文件。
/instance_root/imta/config/imta_tailor


自动回复选项文件

自动回复选项文件 autoreply_option 可用来设置自动回复(或休假自动回复)程序的选项。详情请参见 iPlanet Messaging Server Reference Manual


别名文件

别名文件 aliases,可用来设置没有在目录中设置的别名。根地址就是一个很好的例子。如果目录中存在的别名与此文件中设置的别名相同,则文件中的别名将被忽略。有关别名和 aliases 文件的详细信息,请参阅“别名”

在完成对aliases 文件的更改后,必须重新启动 MTA。


TCP/IP(SMTP)通道选项文件

TCP/IP 通道选项文件用于控制 TCP/IP 通道的各种特性。通道选项文件必须存储在 MTA 配置目录下,并命名为 x_option,这里的 x 是通道的名字。例如,/ServerInstance/config/imta/tcp_local_option。有关详细信息,请参阅“配置 SMTP 通道选项”。有关所有通道选项关键字和语法的完整信息,请参阅 iPlanet Messaging Server Reference Manual


转换文件

转换文件 conversions 用于指定转换通道如何对通过 MTA 的邮件执行转换功能。任何 MTA 通信流的子集都可以选来进行转换,任何程序集、命令过程都可以用来执行转换处理。MTA 将对转换文件进行检查,并为每个正文部分选择一个适当的转换功能。

有关本文件语法的详细信息,请参见“转换通道”


Dirsync 选项文件

dirsync 选项文件 dirsync.opt 可为 dirsync 程序设置无法通过命令行方式设置的选项。详情请参见“dirsync 配置”iPlanet Messaging Server Reference Manual


Dispatcher 配置文件

Dispatcher 配置文件 dispatcher.cnf 指定 Dispatcher 配置信息。在安装时,系统会创建一个默认的配置文件,该文件不作任何变动就可以使用。但是,如果因为安全或性能方面的原因想要修改默认配置文件,可以通过编辑 dispatcher.cnf 文件来实现。(有关的概念性信息请参见“Dispatcher”。)

Dispatcher 配置文件的格式与其它 MTA 配置文件格式相似。各行以如下形式指定选项:

option=value

option 是选项的名称,value 是所设置的选项的字符串或整数。如果 option 接受了一个整数 value,则可用 b%v 形式的计数法指定一个基数,其中 b 是表示数制的十进制数,v 则是用数制b表示的实际值。用这种方法指定的选项将按照服务项(即按下列选项设置所适用的服务)被分为若干节,使用下列形式的行列:

[SERVICE=service-name]

service-name 是某项服务的名称。在每节标志前面出现的所有初始选项定值适用于所有节。

下面是 Dispatcher 配置文件的一个示例(dispatcher.cnf)。

! The first set of options, listed without a [SERVICE=xxx]
! header, are the default options that will be applied to all
! services.
!
MIN_PROCS=0
MAX_PROCS=5
MIN_CONNS=5
MAX_CONNS=20
MAX_LIFE_TIME=86400
MAX_LIFE_CONNS=100
MAX_SHUTDOWN=2
!
! Define the services available to Dispatcher
!
[SERVICE=SMTP]
PORT=25
IMAGE=server_root/msg-instance/imta/lib/tcp_smtp_server
LOGFILE=server_root/msg-instance/imta/log/tcp_smtp_server.log

有关此文件参数的更多信息,参见 iPlanet Messaging Server Reference Manual


映射文件

映射文件 mappings 用于定义 MTA 如何将输入字符串映射为输出字符串。

许多 MTA 组件都使用面向查找表的信息。一般来说,这类表用于将输入的字符串变换(即映射)为输出字符串。这种表称为映射表,一般有两列,第一列(左侧)给出可能的输入字符串,第二列(右侧)给出对应于输入字符串的输出字符串结果。多数 MTA 数据库都是这类映射表的实例。然而,MTA 数据库文件并不提供通配符查找功能,这是由于查找通配符匹配项时要扫描整个数据库,因此这一方法本身的效率极低。

映射文件向 MTA 提供了支持多个映射表的功能。它具有全面的通配符功能和多步映射方法以及交互式的映射方法。与用数据库相比,这一方法更适合密集计算之环境,在条目数量大的情况下尤其如此。然而,这一维护方面的灵活性实际上可免除使用等效数据库中大多数条目之必要,因此很可能因而降低系统的总体开销。

可用 imsimta test -rewrite 命令测试映射表。有关映射文件和 test -mapping 命令语法的更多信息,参见“映射文件”iPlanet Messaging Server Reference Manual


选项文件

选项文件 option.dat 指定与特定通道选项相对的全局 MTA 选项。

您可用该选项文件全局性地取代应用于 MTA 的各种参数的默认值。特别是该选项文件可用于确定各种表的容量大小,即系统在读取配置文件和别名文件时须使用的各种表。也可用该选项文件限制 MTA 所接收邮件的大小,指定 MTA 配置所允许的通道个数,设置允许的重写规则个数等等。

有关该选项文件的语法的更多信息,参见 iPlanet Messaging Server Reference Manual


Tailor 文件

Tailor 文件 imta_tailor 可用于设置各种 MTA 组件的位置。为使 MTA 正常工作,imta_tailor 文件必须永远驻留在 server-instance/imta/config 目录下。

虽然可以编辑这个文件以反映特定安装的变化,但须特别小心。在对这个文件作了任何改动后,必须重新启动 MTA。最好在 MTA 关闭的情况下进行改动。


备注: 如果没有必要,请不要编辑这个文件。



有关该文件的完整信息,参见 iPlanet Messaging Server Reference Manual


作业控制器文件

作业控制器(Job Controller)用于创建并管理通道的邮件传递作业。这些通道作业在控制器内的处理池中运行。存储池可被认为是通道作业运转的“地方”。存储池提供一个计算区域,在那里一组作业可在不与池外作业争夺资源的情况下运转。(有关作业控制器概念和通道关键字配置的信息,参见“作业控制器”“通道执行任务的处理池”“服务任务限制”。)

Job Controller 文件 job_controller.cnf 用于指定通道处理信息。

imta.cnf 文件中,您可用 pool 关键字指定一个进程存储池(已在 job_controller.cnf 文件中定义)的名字。例如,下面的示例文件 job_controller.cnf 中的一段内容定义了存储池 MY_POOL

[POOL=MY_POOL]
job_limit = 12

下面这段内容源于指定一通道块中的存储池 MY_POOL 的示例文件 imta.cnf

channel_x pool MY_POOL
channel_x-daemon

如果想要修改与默认存储池配置相关的参数,或想添加额外的存储池,可以通过编辑 job_controller.cnf 文件来实现,然后关闭并重新启动作业控制器。

此时,系统将创建一个使用新配置的新作业控制器进程,并用其接收随后的请求。但旧的作业控制器进程仍在继续执行任何已排入队列的请求,直至全部完成时才退出。

在作业控制器配置文件中的第一个存储池用于任何没有指定存储池名称的请求。在 MTA 配置文件(imta.cnf)中定义的 MTA 通道可以通过使用pool 通道关键字,后跟存储池名,把其处理请求指向一个具体存储池。这个存储池名必须与作业控制器配置中的存储池名相匹配。如果作业控制器无法识别请求的存储池名,则忽略该请求。

在初始配置中,该配置文件定义了下列存储池:DEFAULTLOCAL_POOLIMS_POOLSMTP_POOL


使用示例

典型情况下,若希望把某些通道的处理与其它通道分开,可将额外的存储池定义添加到作业控制器配置中。也可选择使用不同性能的存储池。例如,您可能需要对某些通道允许处理的并发请求的数量进行控制。要实现这一控制,可先创建一个有作业项限制的新存储池。然后,使用 pool 通道关键字将那些通道指向这个新的,更适合的存储池。

除存储池定义外,作业控制器配置文件还可包含 MTA 通道表以及作业控制器在处理每条通道请求时必须使用的命令。这两种类型的请求分别称为“主”请求和“从属”请求。在典型情况下,当有邮件储存在通道的一个 MTA 邮件队列中时,就会调用该通道的主程序。主程序可将邮件取出队列。

调用从属程序是为获得一个通道并收集任何该通道入站的邮件。几乎所有 MTA 通道都有主程序,但许多 MTA 通道没有或不需要从属程序。例如,一个通过 TCP/IP 处理 SMTP 的通道并不使用从属程序,这是由于网络服务(SMTP 服务器)可通过任何 SMTP 服务器的请求接收外来的 SMTP 邮件的。SMTP 通道的主程序是 MTA 的 SMTP 客户程序。

如果与通道相联系的目标系统无法在同一时刻处理更多的邮件,就需要创建一个新的,作业限制为 1 的存储池类型:

[POOL=single_job]
job_limit=1

另一方面,如果目标系统具有足够的并行性,则可将作业限制设置为较高的数值。

范例 6-1 所示为一个样例作业控制器配置文件。表 6-8 所示为可用的选项。

范例 6-1 在 UNIX 中的样例作业控制器配置文件

!MTA Job Controller configuration file
!
!Global defaults
tcp_port=27442 (1)
secret=never mind
return_job=server_root/bin/msg/imta/bin/return.sh
return_time=00:30/24:00
purge_job=server_root/bin/msg/imta/bin/purge
purge_argv=-num=5
slave_command=NULL (2)
max_life_age=3600 (3)
!
!
!Pool definitions
!
[POOL=DEFAULT] (4)
job_limit=10 (5)
!
[POOL=LOCAL_POOL]
job_limit=10
!
[POOL=IMS_POOL]
job_limit=1
!
[POOL=SMTP_POOL]
job_limit=1
!
!Channel definitions
!
!
[CHANNEL=l] (6)
master_command=server_root/bin/msg/imta/bin/l_master
!
[CHANNEL=ims-ms]
master_command=server_root/bin/msg/imta/bin/ims_master
!
[CHANNEL=tcp_*] (7)
anon_host=0
master_command=server_root/bin/msg/imta/bin/tcp_smtp_client

前面示例中的关键项目(用数字表示,用括弧括起并使用黑体者)是:

  1. 此全局选项定义了 TCP 端口号,作业控制器在此侦听该端口的请求。

  2. 为随后的 [CHANNEL] 部分设置默认的 SLAVE_COMMAND

  3. 为随后的 [CHANNEL] 部分设置默认的 MAX_LIFE_AGE

  4. 此 [POOL] 部分定义了一个名为 DEFAULT 的存储池。

  5. 将存储池的 JOB_LIMIT 设置为 10

  6. 此 [CHANNEL] 部分应用于名为 l 的通道,即 UNIX 本地通道。此部分需要的唯一定义是 master_command,它是作业控制器发布来运行此通道的。由于在通道名中没有出现通配符,通道必须完全匹配。

  7. 此 [CHANNEL]部分应用于任何名字与 tcp_* 匹配的通道。由于这个通道名中包含一个通配符,所以可与任何名字以tcp_ 开始的通道相匹配。


添加更多存储池的示例
作业控制器(Job Controller)用于创建并管理通道的邮件传递作业。这些通道作业在控制器内的处理池中运行。一个存储池可认为是一个运转通道作业的“地方”。存储池提供一个计算区域,在那里一组作业可在不与池外作业争夺资源的情况下运转。请注意,在 job_controller 中对作业限制的设置是逐存储池进行的。所以,例如,如果以 job_limit 为 10 来定义 SMTP_POOL,则在给定的任何时间内,只能运行 10 个 tcp_smtp 客户进程。

有时会有需要创建额外的 tcp_* 通道(比如,用于特别缓慢邮件站点的 tcp 通道)的情况。最好使这些通道在不同的存储池中运行。这样做的原因是,如果创建 10 个不同的 tcp_* 通道并且它们都在 SMTP_POOL 中运行,在给定的时间内每个 tcp_* 通道只可能只有 1 个 tcp_smtp 客户程序在运行(取决于是否具有发往所有 tcp_* 通道的邮件,并假定 SMTP_POOL 是以 job_limit 10 定义的)。假设系统的负荷很重因而所有队列上都有邮件等待从各个 tcp_* 通道发出,则此方法可能没有效果。更可能的情况是,人们想要为额外的 tcp_* 通道定义额外的存储池以避免对插槽的争夺。

例如,假定设置下列 tcp_* 通道:

tcp_yahoo smtp mx pool yahoo_pool keyword keyword keyword
tcp-yahoo-daemon

tcp_aol smtp mx keyword keyword keyword pool aol_pool
tcp-aol-daemon

tcp_hotmail smtp mx pool hotmail_pool keyword keyword keyword
tcp-hotmail-daemon

...

tcp_sun smtp mx pool sun_pool keyword keyword keyword
tcp-sun-daemon

为了给每个新通道添加 10 个 tcp_smtp_client 进程,应在 job_controller.cnf 文件中添加以下内容:

[POOL=yahoo_pool]
job_limit=10

[POOL=aol_pool]
job_limit=10

[POOL=hotmail_pool]
job_limit=10

...

[POOL=sun_pool]
job_limit=10

有关存储池的更多信息,请参阅“通道执行任务的处理池”。有关作业控制器文件语法的更多信息,请参阅 iPlanet Messaging Server Reference Manual


表 6-8 作业控制器配置文件选项 


选项

说明

一般选项

说明

INTERFACE_ADDRESS=adapter

指定作业控制器应当对其绑定的 IP 地址界面。指定的值(适配器)可以是 ANYALLLOCALHOST 或一个 IP 地址。在默认设置下,作业控制器绑定到所有地址(等同于指定 ALLANY)。指定 INTERFACE_ADDRESS=LOCALHOST 意外着作业控制器只接受来自本地计算机内部的连接。这并不影响正常操作,因为作业控制器不支持计算机间操作。然而,在 HA(高可用性)环境中这样做可能是不适当的,因为 HA 代理可能检查作业控制器是否响应。如果 Messaging Server 正在运行计算机是一 HA 环境,有一个“内部网络”适配器和一个“外部网络”适配器,而您不信任防火墙对连接到高端口号的阻塞能力,就应当考虑指定“外部网络”适配器的 IP 地址。

MAX_MESSAGES=整数

作业控制器在一个内存储结构中保留有关邮件的信息。在构建大型待处理邮件的情况下,可能需要限制这个结构的大小。如果待处理的邮件数超过了这个限定参数,有关随后邮件的信息将不在内存中保留。邮件并不会丢失,因为它们总是写在磁盘上,但只有在作业控制器得知邮件数量下降到该数量的一半时,这些邮件才能被考虑传送。此时,作业控制器扫描队列目录以模仿 imsimta cache -sync 命令。

默认值为 100000。

SECRET=file_spec

用于保护发送到作业控制器的请求的共享秘密。

SYNCH_TIME=time_spec

作业控制器偶尔扫描磁盘上的队列文件,以检查丢失的文件。在默认设置下,在作业控制器开始工作 4 小时后,每 4 小时进行一次。time_spec 的格式是 HH:MM/hh:mm/hh:mm。变量 hh.mm 使以小时(h)和分钟(m)计的相邻事件之间的时间间隔。变量 HH:MM 是事件在一天中第一次发生的时间。例如指定 15:45/7:15,则在 15:45 起动事件,之后每隔 7 小时 15 分钟再起动一次。

TCP_PORT=整数

指定作业控制器应侦听请求信息包的 TCP 端口。除非该默认设置与系统上的另一个 TCP 应用程序冲突,否则不要更改此设置。如果确实要更改此选项,请更改在 MTA tailor 文件中对应的 IMTA_JBC_SERVICE 选项,使其相匹配。MTA tailor 文件位于:server_root/msg-instance/imta/config/imta_tailorTCP_PORT 是全局性应用的,并且如果它在 [CHANNEL] 或 [POOL] 节出现则被忽略。

TIME=time_spec

指定在PERIODIC_JOB 部分中运行的定期性作业的时间和频度。在默认设置下,该值为 /4:00,意思是每隔 4 小时。time_spec 的格式是 HH:MM/hh:mm/hh:mm. hh.mm 是以小时(h)和分钟(m)计的相邻事件之间的时间间隔。HH:MM 是事件在一天中第一次发生的时间。例如指定 15:45/7:15,则在 15:45 起动事件,之后每隔 7 小时 15 分钟再起动一次。

存储池选项

说明

JOB_LIMIT=整数

指定存储池可以同时(平行)使用的最大进程数。JOB_LIMIT 分别应用到每个存储池,作业的最大总数是所有存储池 JOB_LIMIT 参数的总和。如果在一个节以外设置,就被没有指定JOB_LIMIT 的任何 [POOL] 节用作默认值。在 [CHANNEL] 节内此选项被忽略。

通道选项

说明

MASTER_COMMAND=file_spec

指定由作业控制器创建的 UNIX 系统进程执行的命令的完整路径,该命令运行通道并在该通道上出列出站邮件。如果一个节以外设置,就被没有指定MASTER_COMMAND 的任何 [CHANNEL] 节用作默认值。在 [POOL] 节内此选项被忽略。

MAX_LIFE_AGE= 整数

指定通道主作业以秒计的最大生命时间。如果没有为通道指定此参数,则使用全局默认值。如果没有指定默认值,就使用 1800(30 分钟)。

MAX_LIFE_CONNS=整数

除了最大生命时间参数外,通道主作业的生命预期值是由它可以向作业控制器询问是否有邮件的次数所限制的。如果通道的此参数没有被指定,就使用全局默认值。如果没有指定默认值,就使用 300。

SLAVE_COMMAND=file_spec

指定由作业控制器创建的 UNIX 系统进程执行的命令的完整路径,该命令以运行通道并处理任何入站该通道的邮件。多数 MTA 通道不具有 SLAVE_COMMAND。如果是这种情况,应当指定保留值 NULL 如果在一个节以外设置,就被没有指定 SLAVE_COMMAND 的任何 [CHANNEL] 节用作默认值。在 [POOL] 节内此选项被忽略。


别名



MTA 提供的别名功能可支持与本地系统相关的信箱名,它不一定与实际用户相对应,这就是:aliases。别名对构造邮件列表、转发邮件以及为用户名提供替代名很有用处。

备注: 本节对在 dirsync 模式下的别名处理进行初步阐述。在直接 LDAP 模式下的别名解析将被描述“使用直接 LDAP 模式解析地址($V)”



别名仅适用于下列地址,即与 l 通道或任何以关键字 aliaslocal 标记的通道相匹配的地址。每当 MTA 的邮件提交逻辑遇到与 l 通道或任何以关键字 aliaslocal 标记之通道相匹配的地址时,地址中指定的邮箱(如用户名)会与别名数据库或别名文件中的每个条目进行比较。如果匹配成功,别名地址会替换为转换后的值(即别名指定的值)。一个别名可转换成任意组合和数量的附加别名或实际地址。实际地址自身不必与 l 通道或任何以关键字 aliaslocal 标记的通道相联系,所以别名可以用来向远程系统转发邮件。

由于真正与通道匹配地址只有 Envelope To(信封收件人)地址,所以别名只能应用于 Envelope To 地址。MTA 只有在地址重写完成后才执行别名的转换与扩展。别名产生的转换值被视为全新的地址,并从头进行再次处理。


别名数据库

MTA 使用目录中的信息,并依此创建别名数据库。每当常规别名文件被访问时,别名数据库会被查询一次。但是,系统在使用常规别名文件前首先检查别名数据库。事实上,数据库的作用像一种地址重写器,它会在使用别名文件之前被调用。有关在创建用户条目以及别名数据库中分配列表条目时所用目录属性方面的信息,请参阅 iPlanet Messaging Server Provisioning Guide


备注: 数据库本身的格式是专用的。不要直接编辑数据库。对于必需的变动,请在目录中修改。




别名文件

Aliases 文件用于设置目录中没有设置的别名。Postmaster 就是一个很好的例子。如果目录中存在相同别名,则在这个文件中设置的别名将被忽略。为使任何变动生效,必须重新启动 MTA。任何以感叹号开始的行都视作注释而被忽略。空行也被忽略。


备注: Messaging Server 提供其他的地址操作功能,如地址反转数据库和专用映射表。但为了求得最好的性能,在可能的情况下应尽量使用重写工具来处理地址。请参阅第 7 篇 “配置重写规则”



该文件中的物理行被限制在 1024 个字符以内。可用反斜线(\)续行符号将一个逻辑行分为多个物理行。

该文件的格式如下:

user@domain:<address>(用于托管域的用户)

user@domain:<address>(用于非托管域中的用户,示例:default-domain)

例如:

! A /var/mail/ user
inetmail@siroe.com: inetmail@native-daemon

! A message store user
ms_testuser@siroe.com: mstestuser@ims-ms-daemon


在别名文件中包含其它文件

aliases 文件中可以包括其它文件。如下格式的行可指示 MTA 读取 file-spec 文件:

<file-spec

指定之文件必须为全文件路径,而且此文件必须与主 aliases 文件有相同的保护级别,例如,它必须是全局可读的。

所含文件的内容被插入到 aliases 文件中的引用点。如果把包含文件的引用替换为该文件的实际内容,也能达到相同的效果。所含文件的格式与主 aliases 文件本身的格式相同。实际上,包含文件本身也可包含其它文件。包含文件的嵌套允许达到三层。


命令行实用工具



iPlanet Messaging Server 提供有若干命令行实用工具,可用于为 MTA 执行各种维护、测试与管理任务。例如,您可用 imsimta cnbuild 命令编译 MTA 配置、别名、映射、安全、整个系统的过滤器以及选项文件。您可用 imsimta dirsync 命令重新创建或更新 MTA 目录缓存。有关 MTA 命令行实用程序的完整信息,请参见 iPlanet Messaging Server Reference Manual


SMTP 的安全性和访问控制



有关 SMTP 安全与访问控制的信息,请参阅第 10 篇 “邮件过滤与访问控制”第 12 篇 “配置安全和访问控制”


日志文件



所有针对 MTA 的日志文件均保存在 MTA 日志目录(server-instance/log/imta/)中。此目录下有描述经由 MTA 的邮件量的日志文件,以及描述有关特定的主程序或从属程序信息的日志文件。

有关 MTA 日志文件的详细信息,请参阅第 13 篇 “日志记录和日志分析”


将内部格式地址转换为公共格式地址



使用地址反转数据库和 REVERSE 映射表可以将地址从内部格式转换为公共的、公告的格式。例如,虽然 uid@mailhost.siroe.comsiroe.com 域可能是一个有效的地址,而对于外部世界来说,它可能不是一个适当的地址。您可能更喜欢一个诸如 firstname.lastname@siroe.com 这样的公共地址。



备注: Messaging Server 提供其他的地址操作功能,例如 aliases 文件和专用映射表。但为了求得最好的性能,在可能的情况下应尽量使用重写工具来处理地址。请参阅第 7 篇 “配置重写规则”



在反转数据库中,每个用户的公共地址是由在目录中用户条目的 mail 属性指定的。专用或内部地址是由mailAlternativeAddress 属性指定的。对于分配表也是如此。

反转数据库包含一个介于任何有效的地址和此公共地址间的映射。每次当 imsimta dirsync 命令运行时,反转数据库被更新和创建。如果已经启用了直接 MTA LDAP 操作(参见附录 B “MTA 直接 LDAP 操作”),则不使用地址反转数据库。

反转数据库一般位于 MTA 数据库目录中。数据库是一系列文件,其文件名是按在 server_root/msg-instance/imta/config/imta_tailor 文件中的 IMTA_REVERSE_DATABASE 选项指定的,在默认设置下为文件 server_root/msg-instance/imta/db/reversedb.*

如果在数据库中找到一个地址,则数据库的相应右侧被置换为此地址。如果没有找到地址,就会尝试在映射文件中查找一个名为 REVERSE 的映射表。如果该表不存在或表中没有匹配的条目,则不进行置换且重写正常终止。

如果在映射文件中找到了 REVERSE 映射表,而且如果地址与一映射条目相匹配,且该条目指定$Y,则结果字符串替代该地址。$N 用于放弃映射的结果。如果映射条目除了指定 $Y 外,还指定 $D,则结果串再次运行通过反转数据库;如果产生匹配情况,来自数据库的模板替代映射的结果(以及地址)。一般 REVERSE 映射表条目(即,应用于所有通道的条目)的格式如下所示。请注意,标记既可在新地址的前面,也可以在后面。

REVERSE

  OldAddress        $Y[Flags]NewAddress

针对特定通道 条目的(即只在通过一特定通道的邮件上才产生的映射)的格式如下所示。请注意,为使特定通道条目工作,必须在 option.dat 中将 use_reverse_database 设置为 13。

REVERSE

  source-channel|destination-channel|OldAddress  $Y[Flags]NewAddresS

REVERSE 映射表标记如表 6-9 中所示。


表 6-9 REVERSE 映射表标记 


标记

说明

$Y

使用输出作为新地址。

$N

地址保持不变。

$D

通过反转数据库运行输出。

$A

添加模式作为反转数据库条目。

$F

添加模式作为正向数据库条目。

标记比较

说明

$:B

只匹配标题(正文)地址。

$:E

只匹配信封地址。

$:F

只匹配向前指引地址。

$:R

只匹配向后指引地址。

$:I

只匹配邮件标识。


设置地址反转控制

reversenoreverse 通道关键字,MTA 选项 USE_REVERSE_DATABASEREVERSE_ENVELOPE 都是用来控制何时和如何具体应用地址反转。在默认设置下,地址反转操作应用于所有地址,而不仅是向后指引地址。

通过设置 REVERSE_ENVELOPE 系统选项的值(默认值:1- 开,0- 关)可以启用或禁用地址反转。

目标通道上的 noreverse 指定不将地址反转应用于邮件中的地址。而 reverse 则指定应用地址反转。详情请参见 iPlanet Messaging Server Reference Manual

USE_REVERSE_DATABASE 控制 MTA 是否使用地址反转数据库和 REVERSE 映射作为置换地址源。取值“0”意味着不对任何通道使用地址反转。取值“5”(默认)指定在地址被 MTA 地址重写处理重写后,将地址反转应用于所有地址,而不仅仅是向后指引地址。取值“13”指定在地址被 MTA 地址重写处理重写后,将地址反转应用于带有 reverse 通道关键字的地址,而不仅仅是向后指引地址。地址反转操作的进一步细节可通过设置USE_REVERSE_DATABASE 选项的二进制位来指定。详情请参见 iPlanet Messaging Server Reference Manual

REVERSE_ENVELOPE 选项控制地址反转是否应用于信封发件人地址以及邮件标题地址。

有关其效果的进一步的信息,参见在 iPlanet Messaging Server Reference Manual 中的这些选项和关键字的详细描述。


一般反转映射示例

一般 REVERSE 映射的一个示例如下:假设在 siroe.com 上的内部地址的格式为 user@mailhost.siroe.com。然而,用户名空间的安排使 user@host1.siroe.comuser@host2.siroe.com 对于在 siroe.com 上所有主机指定的是同一人。下列的 REVERSE 映射可以结合地址反转数据库使用:

REVERSE

  *@*.siroe.com        $0@siroe.com$Y$D

在本例中,具有格式 name@anyhost.siroe.com 的地址将更改为 name@siroe.com$D 元字符使得处理过程将参照地址反转数据库。地址反转数据库应包括如下格式的条目:

user@mailhost.siroe.com first.last@siroe.com


特定通道反转映射示例

在默认设置下,如果对邮件服务器域设置了可路由范围,则要应用地址反转数据库。特定通道 REVERSE 映射表条目的一个示例如下:

REVERSE

  tcp_*|tcp_local|binky@macho.siroe.com    $D$YRebecca.Woods@siroe.com

此条目告诉 MTA,对任何带有 tcp_* 源通道和发往 tcp_local 目的地通道的邮件,将其格式为 binky@macho.siroe.com 的地址更改为 Rebecca.Woods@siroe.com


备注: 为了启用特定通道映射,必须在 option.dat 中将 USE_REVERSE_DATABASE 选项设置为 13。(默认值=5)




向前地址映射

地址反转不应用到信封收件人地址。这些地址随着邮件贯穿邮件系统而被不断地重写和修改。路由的完整目标是将信封收件人地址逐步转换为针对特定系统和特定邮箱的格式。地址反转的经典功能对信封收件人地址不适当。

用于信封收件人地址的各种置换机制提供了与反转数据库等同的功能性,但是没有哪种能够提供与反转映射等同的功能性。会出现这样的情况,即对于信封收件人地址,映射功能性是很有用和很需要的。

FORWARD 映射表提供这种缺少的功能性。如果在一个映射文件中 FORWARD 映射表存在,即被应用到每个信封收件人地址上。如果这个映射不存在或在映射匹配中没有条目,则不进行更改。

如果地址与一个映射条目相匹配,映射的结果将被测试。如果此条目指定 $Y,结果字符串替代信封的收件人地址;指定 $N 则放弃该映射结果。


使用转发数据库转发邮件

转发数据库可用于完成类似于使用别名文件或别名数据库所完成的转发功能。但当别名文件或别名数据库可使用时,因为其使用效率更高,因此会比转发数据库优先考虑使用。

使用转发数据库比较合适的情况,一般会发生在因被转发邮件的源的关系而需要完成不同种类转发的情形下。通过 USE_FORWARD_DATABASE 选项,转发数据库转发可以针对特定的源进行。更多信息,请参见 iPlanet Messaging Server Reference Manual


控制传递状态通知邮件



传递状态通知或 通知邮件 是 MTA 发给发件人,或(可选)postmaster 的电子邮件状态的消息。Messaging Server 可用来定制通知邮件的内容和语言还可以为每类传递状态(如 FAILEDBOUNCEDTIMEDOUT 等等)创建不同的消息。除此之外,还可以为源自特定通道的邮件创建通知邮件。

默认设置下,通知邮件是在 server_root/msg-instance/imta/config/locale/C/LC_MESSAGES/ 目录下存储的,该目录是由在 /server_root/msg-instance/imta/config/imta_tailor 文件中的 IMTA_LANG 设置指定的。文件名如下:

return_bounced.txt, return_delivered.txt return_header.opt, return_timedout.txt, return_deferred.txt, return_failed.txt, return_prefix.txt, return_delayed.txt, return_forwarded.txt, return_suffix.txt.

请注意,不要直接更改这些文件,因为当 iPlanet Messaging Server 升级时,这些文件将被覆盖。如果希望修改这些文件并将其作为唯一的通知邮件模板文件(return_*.txt)的设置使用,请将那些文件复制到一个新的目录下,并在那里进行编辑。然后,在 imta_tailor 文件中设置 IMTA_LANG 选项使之指向包含那些模板的新目录。如果希望通知文件具有多重设置(如,每种语言一个设置),则需要设置 NOTIFICATION_LANGUAGE 映射表。


构建和修改通知邮件

单个通知邮件是通过对三个文件的设置构建的:return_prefix.txt + return_ActionStatus.txt + return_suffix.txt

若要定制或本地化通知,需要为每个地区和/或定制创建一整套 return_*.txt 文件,并在一个单独的目录中存储它。例如,可以在一个目录中存放法语的通知文件,在另一个目录中存放西班牙语文件,而在第三个目录中存放特殊的针对;垃圾邮件的通道的通知。


备注: 在本版本中包括了法语、德语和西班牙语的样本文件。这些文件可被修改以适合特定的需要。



通知邮件设置的格式和结构描述如下。

  1. return_prefix.txt 提供适当的标题文本及正文的简介材料。US-english 地区的默认文本如下:

    Content-type: text/plain; charset=us-asci
    Content-language: EN-US

    This report relates to a message you sent with the following header fields: %H

    非 US-ASCII 通知邮件应当适当地修改 charset 参数和 Content-Language 标题值(例如,对于法语本地化文件,该值应当为 ISO-8859-1 和 fr)。%H 是在表 6-10 中定义的标题置换序列。

  2. return_<ActionStatus>.txt 包含特定状态的文本。ActionStatus 指邮件的 MTA 状态类型。例如,return_failed.txt 的默认文本如下:

    Your message cannot be delivered to the following recipients:
    %R

    return_bounced.txt 的默认文本是:

    Your message is being returned. It was forced to return by the postmaster.

    The recipient list for this message was:
    %R

  3. return_suffix.txt 包含结束语文本。默认设置下,这个文件是空的。


表 6-10 通知邮件置换序列


置换

定义

%H

扩展为邮件的标题。

%C

扩展为邮件已入队的单位数1

%L

扩展为邮件在返回前已留在队列中的单位数 1

%F

扩展为允许一邮件留在队列中的单位数 1

%S [%s]

如果前面扩展的数值不等于 1,扩展字母 S 或 s。示例:根据邮件已入队的天数,“%C day%s”可以扩展为“1 天”或“2 天”。

%U [%u]

扩展为使用的时间单位1 Hour [hour] 或 Day [day]。示例:根据邮件已入队的天数或小时数以及 MTA 选项 RETURN_UNITS 的值,“%C %U%s”可以扩展为“2 天”或“1 小时”。如果已设置 RETURN_UNITS=1(小时),并且您的站点正在使用本地化通知邮件,则需编辑 return_delayed.txt 和 return_timedout.txt,并使用非英语的所有语言的“小时”一词替代“day”一词。法语用 heure(s)替代 jour(s)。德语用 Stunde(n)替代 Tag(e)。西班牙语用 hora(s)替代 dia(s)。

%R

扩展为邮件收件人列表。

%%

%(请注意,置换序列的文本扫描是逐字节进行的,不管采用的是何种字符集。如果使用了双字节字符集,请检查 unintended % 标记。)

1 单位是由在 MTA 选项文件中的 RETURN_UNITS 选项定义的,可以为小时或天(默认)。


定制和本地化通知邮件

通知邮件可以本地化,这样邮件将以不同的语言返回给不同的用户。例如,法语的通知可被返回到已表示偏好法语的用户。

对通知邮件的本地化或定制包括两个步骤:

  1. 创建一系列的本地化/定制 return_*.txt 消息文件,并在单独的目录下储存每个系列的文件。请参阅“构建和修改通知邮件”中的详细描述。)

  2. 设置一个 NOTIFICATION_LANGUAGE 映射表。

NOTIFICATION_LANGUAGE 映射表
server_root/msg-instance/imta/config/mappings)指定要使用的本地化或定制的通知邮件文件系列,其依据是原始邮件(致使通知发出的那个邮件)的属性(例如:语言,国家,域或地址)。

通过分析原始发件人的邮件以确定状态通知的类型,源通道,偏好的语言,退回地址和第一收件人。根据表的构建方式,一个通知文件系列依据这些属性的一个或多个而被选择出来。

NOTIFICATION_LANGUAGE 映射表的格式是:

NOTIFICATION_LANGUAGE

 dsn-type-list|source-channel|preferred-language|return-address|first-recipient \
$Idirectory-spec


dsn-type-list 是一个以逗号分隔的传递状态通知类型的列表。如果指定了多种类型,它们必须用逗号隔开且不带空格(空格表示映射表条目的模式的结束)。类型如下所列:

failed -(失败)一般永久性失败邮件(例如,无此用户)。使用 return_failed.txt 文件。

bounced -(退回)与手工“退回”联合使用的通知邮件。由 postmaster 完成。使用 return_bounced.txt 文件。

timedout -(超时)MTA 已无法在允许的传递时间内传递该邮件。邮件现在正被退回。使用 return_timedout.txt 文件。

delayed -(延迟)MTA 已无法传递该邮件,但将继续尝试传递它。使用 return_delayed.txt 文件。

deferred -(延期)类似于“delayed”的非传递通知,但没有指出多长时间后 MTA 将继续尝试传递。使用 return_deferred.txt 文件。

forwarded -(不支持回执)此邮件要求回执,然而邮件已转发到一个不支持回执的系统。使用 return_forwarded.txt 文件。

source-channel(源通道)是生成通知邮件的通道,即消息邮件正在该通道的队列里。例如,ims-ms 为邮件储存库的传递队列,tcp_local 为出站 SMTP 队列,等第。

preferred-language(语言偏好)是在被处理邮件(为之生成通知的那个邮件)上要使用的语言。此信息首先取自 accept_language 字段。如果该字段不存在,则利用 Preferred-language: 标题字段和 X-Accept-Language: 标题字段。有关标准语言编码值的列表,请参考 server_root/bin/msg/install/templates/msg-inst/msg/imta/config/languages.txt 文件。

这个字段,如果不是空的,将是邮件原创者为 Preferred-language:X-Accept-language: 标题行指定的任何内容。因此,此字段中也许会发现无意义的字符。

return-address(退回地址)是原创邮件的信封发件人:地址。这就是通知邮件即将发往的信封地址,可能带有使用何种语言的指示信息。

first-recipient(第一收件人)是原始邮件即将发往的信封收件人:地址(即第一个地址,如果此邮件发往一个以上收件人失败的话)。例如,在通知“您发往 dan@siroe.com 的邮件无法传递”中,dan@siroe.com 是被报告的信封收件人:地址。

directory-spec 是包含 return_*.txt 文件的目录,如果映射表探测匹配成功则使用。请注意,$I 必须放在目录指定之前。

例如,一个在 /lc_messages/table/notify_french/ 目录中储存的法语通知文件(return_*.txt)和在 /lc_messages/table/notify_spanish/ 目录中储存的西班牙通知文件 return_*.txt 的站点,可以使用如下所示的表。请注意,每个条目必须以一个或多个空格开始,且在条目间可以没有空行。


NOTIFICATION_LANGUAGE

! Preferred-language: header value specified
!
   *|*|fr|*|*    $I/lc_messages/table/notify_french/
   *|*|es|*|*    $IIMTA_TABLE/notify_spanish/
   *|*|en|*|*    $I/imta/lang/
!
! If no Preferred-language value, then select notification based on the
! country code in the domain name. EX: PF=French Polynesia; BO=Bolivia

!
   *|*|*|*.fr|*   $I/imta/table/notify_french/
   *|*|*|*.fx|*   $I/imta/table/notify_french/
   *|*|*|*.pf|*   $I/imta/table/notify_french/
   *|*|*|*.tf|*   $I/imta/table/notify_french/
   *|*|*|*.ar|*   $I/imta/table/notify_spanish/
   *|*|*|*.bo|*   $I/imta/table/notify_spanish/
   *|*|*|*.cl|*   $I/imta/table/notify_spanish/
   *|*|*|*.co|*   $I/imta/table/notify_spanish/
   *|*|*|*.cr|*   $I/imta/table/notify_spanish/
   *|*|*|*.cu|*   $I/imta/table/notify_spanish/
   *|*|*|*.ec|*   $I/imta/table/notify_spanish/
   *|*|*|*.es|*   $I/imta/table/notify_spanish/
   *|*|*|*.gp|*   $I/imta/table/notify_spanish/
   *|*|*|*.gt|*   $I/imta/table/notify_spanish/
   *|*|*|*.gy|*   $I/imta/table/notify_spanish/
   *|*|*|*.mx|*   $I/imta/table/notify_spanish/
   *|*|*|*.ni|*   $I/imta/table/notify_spanish/
   *|*|*|*.pa|*   $I/imta/table/notify_spanish/
   *|*|*|*.ve|*   $I/imta/table/notify_spanish/



备注: 默认的 mappings.locale 文件在安装时一起提供,且将包含在 mappings 文件中以启用通知语言映射。若要禁用通知语言映射,请将完成包含的行标记为注释行,如下所示:

! <IMTA_TABLE:mappings.locale

(请阅读文件中的注释并按照需要进行修改。)




其他通知邮件功能

在前述各节中阐述了设置通知邮件的基本过程。以下的各节阐述其他功能。


阻塞大邮件的内容返回

典型情况下,当一个邮件被退回或被阻塞时,邮件的内容以通知邮件的形式返回到发件人和本地域 postmaster。如果许多很大的邮件完整返回,会造成资源紧张。要阻塞一定大小之上的邮件内容的返回,请在 MTA 选项文件中设置 CONTENT_RETURN_BLOCK_LIMIT 选项。


从包含的通知邮件的标题中移除非 US-ASCII 字符

互联网标题的原格式不允许非 US-ASCII 字符。如果在邮件标题中使用了非 US-ASCII 字符,则使用在 RFC 2047 中描述的“MIME 标题编码”对其进行编码。这样,在一封电子邮件中的中文“主题”行实际看起来将像这样:

Subject: =?big5?Q?=A4j=AB=AC=A8=B1=AD=B1=B0=D3=F5=A5X=AF=B2?=

在显示标题时移除这样的编码是电子邮件客户程序的责任。

因为 %H 模板将标题复制到通知邮件的正文中,编码的标题文本将会正常出现。然而,如果在主题中的字符集(本例中为“big5”)与在 return_prefix.txt 中的 Content-Type 标题字符集参数中的字符集相匹配,则 Messaging Server 将移除该编码。如果不相匹配,Messaging Server 将保留原编码不变。


设置通知邮件传递间隔

关键字:notices, nonurgentnotices, normalnotices, urgentnotices

无法传递的邮件在被返回到发件人之前,在一个给定的通道队列中保留指定的一段时间。此外,在 Messaging Server 尝试传递期间,一系列状态/警告邮件可以返回到发件人。各个时间总量和邮件间的时间间隔可使用 noticesnonurgentnoticesnormalnoticesurgentnotices 关键字指定。范例:

notices 1 2 3

对于所有邮件,瞬时失败通知邮件是在 1 天和 2 天后发送的。如果在 3 天之后邮件还没有被传递,它即被返回到其原创者。

urgentnotices 2,4,6,8

对于紧急优先级邮件,瞬时失败通知邮件是在 2、4 和 6 天后发送的。如果在 8 天之后邮件还没有被传递,它即被返回到其原创者。

请注意,MTA 选项文件中的RETURN_UNITS 选项可用将时间单位指定为小时(1)或者天(0)。默认值为天(0)。

如果没有指定notices 关键字,则默认使用本地通道的 notices 的设置,即 l。如果没有对本地通道进行设置,则默认使用 notices 3, 6, 9, 12


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

关键字:includefinal, suppressfinal, useintermediate

当 MTA 生成一个通知邮件(退回消息,传递回执消息等等)时,可能同时有 MTA 可用的一个收件人“原有”格式的地址和一个该收件人变更后的“最终”格式的地址。MTA 总是在通知邮件中包含原有格式(假定它存在),因为这种格式是通知邮件的收件人(原邮件的发件人,通知邮件即与之相关)最可能识别的格式。

includefinalsuppressfinal 这两个通道关键字控制 MTA 是否也包含最终格式地址。禁止对最终格式地址的包含,对于那些“隐藏”其内部邮箱名而不为外所见的站点可能有兴趣。这样的站点可能更喜欢在通知邮件中只包括原有的、“外部”格式的地址。includefinal 是默认值,表示包含的最终格式收件人地址。如果来自通知的原有地址格式存在,suppressfinal 致使 MTA 禁止通知邮件中的最终格式地址。

useintermediate 关键字使用一个产生于列表扩展之后但优先于用户名生成的地址中间格式。如果此信息未提供,则使用最终格式。


发送、阻塞和指定发往 postmaster 的通知邮件。

默认设置下,失败和警告通知邮件的一个副本是要发送给 postmaster 的,但在 Errors-to: 标题行或信封发件人:地址是空白的情况下,出错返回和警告将被完全禁止。针对 postmaster 的通知邮件传递,可以通过在以下各节和在表 6-11 中描述的一些通道关键字进行更细微的控制。


返回的失败邮件
关键字:sendpost, nosendpost, copysendpost, errsendpost

通道程序可能因为长时间服务故障或无效地址而无法传递邮件。当发生这样的故障时,MTA 通道程序在邮件中付上无法传递的解释后返回给发件人。可以选择将所有失败邮件的副本发送给本地 postmaster。这对于监控邮件失败很有用,但也可能造成过多的需要 postmaster 处理的邮件流通量。(参阅表 6-11。)


警告讯息
关键字:warnpost, nowarnpost, copywarnpost, errwarnpost

除了返回邮件,MTA 还可以对未传递的邮件发送详细的警告。这通常是由于通知通道关键字的设置而产生的超时,尽管某些情况下通道程序可能在尝试传递失败之后会生成警告讯息。警告讯息包含有对错误内容和传递尝试还将持续多久的说明。大多数情况下还包含有问题邮件的邮件头和前几行。

可以选择将所有警告邮件的副本都发送给本地 postmaster。这对于监控各种队列的状态有一定作用,尽管这样做确实造成大量的需要 postmaster 处理的邮件流通量。关键字 warnpostcopywarnposterrwarnpostnowarnpost 用于控制向 postmaster 发送警告邮件。(参阅表 6-11。)


空信封退回地址
关键字:returnenvelope

returnenvelope 关键字有一整数值,它被解释为一系列的位标记。第 0 位(值 = 1)控制由 MTA 生成的返回通知是否被写为空信封地址或本地 postmaster 的地址。设置该位强制使用本地 postmaster 地址,而清除该位则强制使用空地址。


备注: 空地址的使用是由 RFC 1123 支配的。然而,有些系统不能适当地处理空信封收件人:地址而可能需要使用此选项。



第 1 位(值 = 2)控制 MTA 是否用本地 postmaster 地址替代所有空信封地址。此设置用于适应不符合 RFC 821,RFC 822 或 RFC 1123 的不兼容系统。

第 2 位(值 = 4)禁止语法无效的退回地址。

第 3 位(值 = 8)与 mailfromdnsverify 关键字相同。


Postmaster 返回邮件的内容
关键字:postheadonly, postheadbody

当通道程序或定期邮件回复工作将邮件返回到 postmaster 和原发件人时,则 postmaster 副本既可以是整个邮件也可以只有标题。Postmaster 的副本限制为仅有邮件头,增大了用户邮件的私密性级别。但是,这样做并不能确保邮件自身的安全,如果 Postmaster 和系统管理员愿意的话,他们通常可以使用 root 系统特权来阅读邮件的内容。(参阅表 6-11。)


设置逐通道 Postmaster 地址
关键字:aliaspostmaster, returnaddress, noreturnaddress, returnpersonal, noreturnpersonal

默认设置下,当 MTA 构建退回或通知邮件时使用的 postmaster 的退回地址是 postmaster@local-host,其中 local-host 是正式本地主机名(在本地通道上的名称),而 postmaster 的个人名称为“MTA e-Mail Interconnect”。在选择 postmaster 地址时应小心,不恰当的选择会造成高速的邮件循环和大量的出错邮件。

RETURN_ADDRESSRETURN_PERSONAL 选项可用于为 postmaster 地址和个人姓名设置 MTA 系统默认值。或者,如果需要逐通道控制,可以使用 returnaddressreturnpersonal 这两个通道关键字。returnaddressreturnpersonal 各自取得一个需要的参数,分别指定 postmaster 地址和 postmaster 个人姓名。noreturnaddressnoreturnpersonal 为默认设置以强调这些应当使用的值。默认设置是通过 RETURN_ADDRESSRETURN_PERSONAL 选项建立的,如果没有设置这两个选项,则采用常规默认设置值。

如果 aliaspostmaster 关键字放置在某一通道,则任何发往正式通道名上的用户名为 postmaster(小写,大写或大小写混合)的邮件,将被重定向到 postmaster@local-host,其中 local-host 为正式本地主机名(在本地通道上的名称)。请注意,互联网标准要求任何接收邮件 DNS 中的域具有一个接收邮件的有效的 postmaster 帐户。所以当希望集中 postmaster 责任,而不是为单独的域设置单独的帐户时,此关键字可能很有用。也就是说,尽管当 MTA 从 postmaster 生成通知邮件时,使用 returnaddress 以控制使用什么退回 postmaster 地址,但 aliaspostmaster 影响到 MTA 对发往 postmaster 的邮件的处理。


表 6-11 发往 postmaster 的通知邮件和发件人关键字 


关键字

说明

返回邮件的内容

指定通知的地址

notices

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

nonurgentnotices

对于具有非紧急优先级的邮件,指定在发送通知和退回邮件之前可能需经过的时间。

normalnotices

对于具有普通优先级的邮件,指定在发送通知和退回邮件之前可能需经过的时间。

urgentnotices

对于具有紧急优先级的邮件,指定在发送通知和退回邮件之前可以耗费的时间量。

退回邮件

如何处理退回邮件的失败通知。

sendpost

允许向 Postmaster 发送所有失败邮件的副本。

copysendpost

向 Postmaster 发送失败通知副本,除非失败邮件的发件人地址为空,在这种情况下,Postmaster 获取除了那些实际上是被自身退回或通知的邮件之外的所有失败邮件副本。

errsendpost

仅当不能向发件人返回通知时才向 Postmaster 发送失败通知副本。如果指定了 nosendpost,则不会向 Postmaster 发送失败通知副本。

nosendpost

禁止向 Postmaster 发送所有失败邮件副本。

警告讯息

如何处理警告讯息。

warnpost

允许向 Postmaster 发送警告讯息副本。如果没有指定任何关键字,默认的处理是向 Postmaster 发送警告讯息的副本,除非警告信息因使用一个空的 Warningsto: 邮件头或一个空的 From: 信封地址而被完全取消。

copywarnpost

向 Postmaster 发送警告讯息副本,除非无法递邮件的发件人地址为空。

errwarnpost

当不能向发件人返回通知时才向 Postmaster 发送警告讯息副本。

nowarnpost

禁止向 Postmaster 发送警告讯息副本。

返回邮件的内容

指定向 Postmaster 发送整个邮件还是仅发送邮件头。

postheadonly

仅向 Postmaster 返回邮件头。Postmaster 的副本限制为仅有邮件头,增大了用户邮件的私密性级别。但是,这并不保证邮件的安全性,因为如果愿意,postmaster 和系统管理员可以使用 root 系统特权读取邮件的内容。

postheadbody

既返回邮件头也返回邮件内容。

返回邮件的内容

指定通知的地址

includefinal

在传递通知中包含最终格式地址(收件人地址)。

returnenvelope

控制空信封退回地址的使用。returnenvelope 关键字取一整数值,它被解释为一系列位标记。

第 0 位(值 = 1)控制由 MTA 生成的返回通知是否被写为空信封地址或本地 postmaster 的地址。设置该位强制使用本地 postmaster 地址,而清除该位则强制使用空地址。

第 1 位(值 = 2)控制 MTA 是否用本地 postmaster 地址替代所有空信封地址。此设置用于适应不符合 RFC 821,RFC 822 或 RFC 1123 的不兼容系统。

第 2 位(值 = 4)禁止语法无效的退回地址。

Bit 3(值 = 8)与 mailfromdnsverify 关键字相同。

suppressfinal

在通知邮件中禁止最终格式地址,如果通知邮件中存在原有格式地址。

useintermediate

使用一个产生于列表扩展之后但优先于用户名生成的地址中间格式。如果此信息未提供,则使用最终格式。

返回邮件的内容

指定通知的地址

aliaspostmaster

任何发往正式通道名上的用户名为 postmaster 的邮件,将被重定向到 postmaster@local-host 其中 local-host 为正式本地主机名(在本地通道上的名称)。

returnaddress

指定本地 postmaster 的退回地址。

noreturnaddress

RETURN_ADDRESS 选项值用作 postmaster 地址名。

returnpersonal

设置本地 postmaster 的个人姓名。

noreturnpersonal

RETURN_PERSONAL 选项值用作 postmaster 的个人姓名。


上一页    目录    索引    下一页
(c) 2002 年 Sun Microsystems, Inc. 版权所有。

更新日期:2002 年 2 月 27 日