postfix 传输表transport map
出处:http://www.yijiaqing.cn/blog/article.asp?id=462 作者:松鼠 时间:2013-4-25 0:18:37
当你想改变默认的邮递流程时,可利用传输表(transport map)来达成愿望。也就是说,如果你希望postfix以你指定的方式来处理特定网域的邮件,而不管DNS MX记录是怎么设定的,你可将相关网域与传送方式写在一二传输表中,然后将transport_maps参数指向此传输表。 本节讨论transport_maps参数的基本用法,后面几章会陆续谈到此参数在其他方面的应用。transport_maps参数可指向一个或多个传输表,例如: transport_maps = hash:/etc/postfix/transport传输表的索引键可以是完整的邮件地址、网域名称或子网域名称。当收件地址或网域名称符合传输表某个记录的索引键时,则以该记录的对应值所指定的传输法来投递该邮件。传输表内容example.com smtp:[192.168.23.56]:20025oreilly.com relay:[gateway.oreilly.com]oreillynet.com smtpora.com maildropkdent@ora.com error:no mail accepted for kdent传输表对应值的格式,随传输方法而异,但大体上符合transport:nexthop这样的格式。某些传输方法的nexthop可表示成host:port形式,表示递送路径下一站的主机名与通信端口。以下分别说明可组成对应值的三种元素:transport 传输方法的名称。此名称必须是master.cf所定义的传输类型之一。如果你增加了新的传输方法,则必须先在master.cf定义其名称与传输类型。host 收信主机或网域。host只能搭配inet传输类型(smtp或lmtp)。postfix按照一般收信网域的处理流程host:先查询mx记录来决定邮件的去处,如果没有mx记录,则传到a记录所指的ip地址。如果将主机名称放在一对方括号内,则postfix会直接传信到host的a记录所指的ip地址。但如果你直接使用ip地址,则一定要加方括号,例如〔192.168.23.56〕port 收信主机的通信端口。通常只有inet类型的传输服务才会指定通信端口。port的格式可以是十进制数,也可以是/etc/services文件定义的服务名称。上例列出的传输表内容,暂时了transport:host:port的多种可能组合,分别解释如下:example.com smtp:〔192.168.23.56〕:20025 收下所有写给example.com的邮件,然后使用smtp MDA传送到位于192.168.23.56的主机,而且smtp MDA必须连接到该主机的port 20025,而非默认的smtp port25。请注意,由于我们直接使用了ip地址,所以必须加上方括号。oreilly.com relay:〔gateway.oreilly.com〕 收下所有要寄到oreilly.com的邮件,然后使用relay MDA转寄给gateway.oreilly.com主机。由于没指定通信端口,所以relay使用默认的port25。由于主机名称被放在方括号内,所以邮件是直接传到gateway.oreilly.com的A记录所指的ip地址,而非mx记录所指的ip地址。relay MDA是postfix2.0版以后才引进的,它修正了队列调度算法可能引起的潜在效能瓶颈。当你要将入站邮件送到内部系统时,应该直接通过relay MDA,以避免这类邮件与出站邮件竞争资源。oreillynet.com smtp 收下所有目的地为oreillynet.com网域的邮件,然后交给smtp MDA执行投递操作。由于没指定host:port,所以smtp依照oreillynet.com网域的DNS MX或A记录来决定目的地,并使用port 25来联系收信服务器。实际上这个例子实属多余,因为只要将oreillynet.com列在relay_hosts或relay_domains参数,就可以达到相同效果。ora.com maildrop 收下所有写给ora.com网域的邮件,然后交给maildrop处理。maildrop的运作方式必须被明确定义在master.cf中。由于maildrop不需要inet socket,所以不必指定host:port。kdent@ora.com error:No mail accepted for kdent error是一种特殊的传输服务,它唯一的作用是当场拒收邮件。冒号之后的字符串是回复给传送方的错误信息。传输表不一定用来将邮件传递到外界,也可以用于将特定邮件交给本地系统,以便进行特殊处理。比方说,过滤邮件内容、暂时扣留某个网域的所有邮件等。