重写规则显示在 MTA 配置文件 imta.cnf 的上半部分中。配置文件中的每个规则都以单行显示。各个规则之间允许有注释但不允许有空白行。重写规则以空白行结束,其后跟通道定义。以下示例显示了部分配置文件的重写规则部分。
! test.cnf - An example configuration file. ! ! This is only an example of a configuration file. It serves ! no useful purpose and should not be used in a real system. ! a.com $U@a-host b.org $U@b-host c.edu $U%c@b-daemon d.com $U%d@a-daemon ! Begin channel definitions |
重写规则由两部分组成:模式,后跟等值字符串或模板。尽管每个部分内部不允许有空格但这两部分必须用空格分隔。重写规则的结构如下所示:
pattern template |
pattern
表示要在域名中搜索的字符串。在表 11–3 中,模式为 a.com、b.org、c.edu 和 d.com。
如果模式与地址的域部分匹配,则重写规则适用于该地址。模式和模板必须用空白区域分隔。有关模式语法的更多信息,请参见重写规则模式和标记。
template
为以下模板之一:
UserTemplate%DomainTemplate@ChannelTag[controls] UserTemplate@ChannelTag[controls] UserTemplate%DomainTemplate[controls] UserTemplate@DomainTemplate@ChannelTag[controls] UserTemplate@DomainTemplate@SourceRoute@ChannelTag[controls]
其中
UserTemplate 指定如何重写地址的用户部分。替换序列可用于表示原始地址的部分或数据库查找的结果。替换序列将被替换为其表示的内容以构造重写地址。在表 11–4 中,使用的是 $U 替换序列。有关更多信息,请参见模板替换和重写规则控制序列 。
DomainTemplate 指定如何重写地址的域部分。与 UserTemplate 相同,DomainTemplate 也可以包含替换序列。
ChannelTag 表示此邮件要发送到的通道。(所有通道定义必须包含通道标记和通道名称。通道标记通常显示在重写规则及其通道定义中。)
controls 使用控件可以限制规则的适用性。某些控件序列必须在规则的开始部分显示;其他控件必须在规则的结尾部分显示。有关控件的更多信息,请参见模板替换和重写规则控制序列 。
有关模板语法的更多信息,请参见重写规则模板。