TRANSPORT(5)                                                      TRANSPORT(5)

名称
       transport - Postfix 传输表格式说明

概述
       postmap /etc/postfix/transport

       postmap -q "字符串" /etc/postfix/transport

       postmap -q - /etc/postfix/transport <输入文件

描述
       可选的 transport(5) 表用于定义电子邮件地址到邮件传输方式和下一跳目的地的映射关系。
       邮件传输方式(如 localsmtp)在 master.cf 文件中定义,
       而下一跳目的地通常是主机名或域名。该表由 trivial-rewrite(8) 守护进程查询。

       此映射会覆盖 Postfix 内置的默认 传输方式:下一跳 选择规则:

       local_transport (默认: local:$myhostname)
              用于投递到 mydestination 列出的域,
              以及匹配 $inet_interfaces$proxy_interfaces 的 [IP地址] 目标。
              默认下一跳地址是 MTA 主机名。

       virtual_transport (默认: virtual:)
              用于投递到 virtual_mailbox_domains 列出的域。
              默认下一跳地址是收件人域名。

       relay_transport (默认: relay:)
              用于转发到 relay_domains 列出的域。
              下一跳地址按优先级从高到低依次取自:
              relay_transportsender_dependent_relayhost_mapsrelayhost 或收件人域名。

       default_transport (默认: smtp:)
              用于投递到其他目标地址。
              下一跳地址按优先级从高到低依次取自:
              sender_dependent_default_transport_mapsdefault_transportsender_dependent_relayhost_mapsrelayhost 或收件人域名。

       通常,transport(5) 表以文本文件形式存在,
       通过 postmap(1) 命令生成索引文件(dbmdb 格式)以供邮件系统快速查询。
       执行 "postmap /etc/postfix/transport" 命令可在修改传输表后重建索引文件。

       当通过 NIS、LDAP 或 SQL 等方式提供该表时,查询方式与普通索引文件相同。

       此外,该表也可以正则表达式映射形式提供,
       或通过 TCP 服务器进行查询。这些情况下的查询方式略有不同,
       详见下文 "正则表达式表" 和 "基于 TCP 的表" 部分。

大小写处理
       查询字符串在数据库查找前会被转换为小写。
       从 Postfix 2.3 开始,对于 regexp: 或 pcre: 等
       可以同时匹配大小写的数据库类型,查询字符串将保留原大小写。

表格式
       postmap(1) 命令的输入格式如下:

       模式 结果模式 匹配收件人地址或域名时,使用对应的 结果。

       空行和注释
              空行和仅包含空格的行会被忽略,
              以 # 开头的行也会被忽略。

       多行文本
              逻辑行以非空格文本开始。
              以空格开头的行会作为前一个逻辑行的延续。

       模式 可以是电子邮件地址、域名或域名层级结构,
       具体说明见 "表查询顺序" 部分。

       结果 格式为 传输方式:下一跳,
       用于指定邮件的投递方式和目标,详见 "结果格式" 部分。

表查询顺序
       使用 DB 或 DBM 等索引文件,或 NIS、LDAP、SQL 等网络表时,
       会按以下顺序尝试匹配模式:

       user+extension@domain 传输方式:下一跳user+extension@domain 的邮件通过 传输方式 投递到 下一跳user@domain 传输方式:下一跳user@domain 的邮件通过 传输方式 投递到 下一跳domain 传输方式:下一跳domain 的邮件通过 传输方式 投递到 下一跳.domain 传输方式:下一跳domain 所有子域的邮件通过 传输方式 投递到 下一跳。
              此规则仅当 transport_maps 未列在
              parent_domain_matches_subdomains 配置中时生效。
              否则,域名会匹配自身及其所有子域。

       * 传输方式:下一跳
              特殊模式 * 表示匹配任意地址(这是 Postfix 传输表特有的通配符模式)。

       注 1:空地址的查询格式为
       $empty_address_recipient@$myhostname (默认: mailer-daemon@hostname)。

       注 2:user@domainuser+extension@domain 查询功能
       在 Postfix 2.0 及更高版本中可用。

结果格式
       查询结果格式为 传输方式:下一跳传输方式 字段指定邮件投递方式(如 smtplocal),
       下一跳 字段指定投递目标和方式。

       传输方式 字段指定邮件投递服务的名称
       (即 Postfix master.cf 文件中邮件投递服务条目的第一个名称)。

       下一跳 字段通常指定一个收件人域名或主机名。
       对于 Postfix SMTP/LMTP 客户端,下一跳 字段可以包含
       用逗号或空格分隔的多个目的地(Postfix 3.5 及更高版本)。

       下一跳目标的语法取决于传输方式。对于 SMTP:
       - 使用 主机:服务 指定非默认端口的服务
       - 使用 [主机] 或 [主机]:端口 禁用 MX 记录查询
       - 使用 IP 地址时必须加上 []

       空的 传输方式下一跳 字段表示 "保持不变":
       使用传输表不存在时的默认投递方式和下一跳信息。

       非空的 传输方式 和空的 下一跳 字段会将下一跳信息重置为收件人域名。

       空的 传输方式 和非空的 下一跳 字段不会修改传输方式信息。

示例
       要直接投递内部邮件,同时使用邮件中继服务器处理其他邮件,
       可为内部目标指定空条目(保持默认投递方式),
       并为其他目标指定通配符:

            my.domain    :
            .my.domain   :
            *            smtp:outbound-relay.my.domain

       要通过 uucp 传输将 example.com 及其子域的邮件
       发送到名为 example 的 UUCP 主机:

            example.com      uucp:example
            .example.com     uucp:example

       当未指定下一跳主机名时,将使用目标域名作为默认值。
       例如,以下配置会将 user@example.com 的邮件
       通过 slow 传输发送到 example.com 的邮件交换器。
       可将 slow 传输配置为每次只运行一个投递进程:

            example.com      slow:

       当未指定传输方式时,Postfix 会使用与地址域类型匹配的默认传输方式
       (见上文 "描述" 部分)。以下配置会将
       example.com 及其子域的所有邮件发送到 gateway.example.comexample.com      :[gateway.example.com]
            .example.com     :[gateway.example.com]

       上例中的 [] 会禁用 MX 记录查询。
       当您的服务器是 example.com 的主 MX 主机时,这可以防止邮件路由循环。

       对于通过 SMTP 或 LMTP 的投递,可以指定 主机:服务 而不仅是主机名:

            example.com      smtp:bar.example:2025

       这会将 user@example.com 的邮件发送到 bar.example 主机的 2025 端口。
       可以使用服务名称代替端口号。如需禁用 MX 查询,应在主机名外加 []。

       SMTP 或 LMTP 投递支持多个目的地(Postfix ≥ 3.5):

            example.com      smtp:bar.example, foo.example

       这会先尝试投递到 bar.example,再尝试投递到 foo.example。

       可以使用错误邮件发送器退回邮件:

            .example.com     error:mail for *.example.com is not deliverable

       这会导致所有发送到 user@anything.example.com 的邮件被退回。

正则表达式表
       当表以正则表达式形式提供时,查询方式会有以下变化。
       关于正则表达式查询表语法,请参阅 regexp_table(5)pcre_table(5)。

       每个模式都是一个应用于整个地址的正则表达式。
       因此,some.domain.hierarchy 不会通过其父域查询,
       user+foo@domain 也不会被当作 user@domain 查询。

       模式会按照表中定义的顺序依次尝试,直到找到匹配的模式。

       trivial-rewrite(8) 服务禁止在正则表达式查询表中
       使用 $1 等替换操作(Postfix 2.3 及更高版本),以防止安全漏洞。

基于 TCP 的表
       当查询被定向到 TCP 服务器时,查询方式会有以下变化。
       关于 TCP 客户端/服务器查询协议,请参阅 tcp_table(5)。
       此功能在 Postfix 2.4 及更早版本中不可用。

       每次查询操作都会使用完整的收件人地址。
       因此,some.domain.hierarchy 不会通过其父域查询,
       user+foo@domain 也不会被当作 user@domain 查询。

       查询结果与索引文件查询相同。

配置参数
       以下 main.cf 参数特别相关。
       此处仅提供参数摘要,详情(包括示例)请参阅 postconf(5)empty_address_recipient (MAILER-DAEMON)
              空地址邮件的收件人。

       parent_domain_matches_subdomains (参见 'postconf -d' 输出)
              指定哪些 Postfix 功能会将 "example.com" 模式
              也匹配 example.com 的子域,而不需要显式的 ".example.com" 模式。

       transport_maps (空)
              可选的查询表,定义从收件人地址到
              (邮件投递方式,下一跳目标)的映射。

参见
       trivial-rewrite(8), 地址重写和解析
       master(5), master.cf 文件格式
       postconf(5), 配置参数
       postmap(1), Postfix 查询表管理器

README 文件
       ADDRESS_REWRITING_README, 地址重写指南
       DATABASE_README, Postfix 查询表概述
       FILTER_README, 外部内容过滤器

许可
       本软件需随附 Secure Mailer 许可证。

作者
       Wietse Venema
       IBM T.J. Watson 研究院
       P.O. Box 704
       Yorktown Heights, NY 10598, USA

       Wietse Venema
       Google, Inc.
       111 8th Avenue
       New York, NY 10011, USA

                                                                  TRANSPORT(5)