http://www.knowledgediscovery.com.cn/0e4bea999ce353e210acc158af9d3660/
到目前为止,我们主要的讨论焦点,都是postfix于邮递路径末端所扮演的角色。也就
是说,抵达postfix服务器的邮件,主要是被投递到本机系统。但是,postfix也常扮演
另一种角色--位于邮递路径中的中继器。
备用交换器
在DNS的术语中,MX代表mail exchanger。一个MX记录代表一个网域承接外来邮件的主
机,以及该主机的优先度。同一个网域可以同时有好几个MX记录,优先度最高的主机称
为主交换器,其余主机称为备用交换器。备用交换器的任务,是在主交换器离线时,承
接该网域的外来邮件;当优先度高于自己的其他备用交换器或主交换器恢复上线时,已
收下的邮件必须传给主交换器来处理,备用交换器不能自己擅作主张,将收到的邮件直
接投递到最终目的地。假设备用交换器时,不必特别设定如何传信给主交换器,因为
postfix自己能从DNS查出如何转信给主交换器。不过,前提是你必须让postfix知道自
己是哪一个网域的备用交换器。你的 postfix系统是哪些网域的备用交换器,那些网域
的名称就必须被列在relay_domains参数中。当寄信方的MTA发觉收信网域的主交换器离
线了,它会试着联系优先度次高的交换器,直到有一个备用交换器能够收下邮件地址为
止。如果你的postfix系统是某个网域的备用交换器,而且该网域被列在
relay_domains参数中,则postfix会收下该网域的邮件,并将其排入队列。每隔一段时
间,postfix会扫描它的队列,并检查是否有优先度更高的邮件交换器恢复连接,如果有
,则交出先前代收的邮件。
如果不能交出邮件,postfix会持续尝试,直到邮件在队列里等待的时间超过
maximal_queue_lifetime所指定的时限为止。此参数的默认值为五天,如果邮件在等待
队列里待的时间超过此上限,postfix会发出退信通知函给寄件人。如果你事先知道主交
换器停机的时间会超过五天,可以适度提高时限。
转发列表
postfix可从relay_domains参数与DNS系统知道自己的备用交换器角色,但是它如何知
道转发的网域中有哪些有效收件人?如果备用交换器无法事先知道主交换器有哪些合法
邮箱,它势必被迫盲目收下所有邮件,等到主交换器恢复连接时,才会发现有哪些邮件
无法投递并退信给原寄件人。因此,我们郑重建议你在备用交换器设置一份列表,记录
受理网域有哪些合法用户,并定期与主交换器同步更新。
当备用交换器上的postfix server收到寄给relay_domains所列网域的邮件时,它会检
查relay_recipient_maps参数所指定的查询表,借此判断是否应该收下邮件,如不应收
下则直接拒收。relay_recipient_maps参数的设定方式如下:
relay_recipient_maps = hash:/etc/postfix/relay_recipients
relay_recipients查询表应该记录所有合法收件人的邮件地址。postfix只需要此表的
索引键,所以对应值可以任意填写(但不可不填)
对于人事变动频繁的网域,我们建议你应该研制一个同步程序,利用rsync、ssh、
crond等工具,自动从主交换器下载最新列表。
如果备用交换器的postfix不过滤转发网域的收件地址,会有什么后果?答案是备用交换
器会收到一大堆无法投递的垃圾邮件,并产生一大堆寄不出去的退信通知函。因为捏造
收件人是垃圾邮件发送者常用的手段之一,他们事先不知道你的邮件交换器有哪些用户
,于是以常用的人名来捏造收件地址,试图蒙混过关。此外,垃圾邮件也不可能会提供
有效的回信地址。
假如备用交换器与主交换器位于同一个局域网,除了使用rsync、scp、ssh、crond等传
统工具之外,还有更好的方法来进行列表的同步更新工作。比方说,将用户账号储存在
某种数据库中,像mysql、ldap等,让postfix能够进行实时查询。
在你设定了relay_recipient_maps之后,还必须面对一个潜在的问题;你必须将所有转
发网域的所有合法邮件地址都列入查询表,因为 postfix将拒收任何收件地址没出现在
查询表的邮件。如果你不知道某些网域的合法邮件地址,你可以为该网域设置一个无限
别名地址;
快速清空
为许多网域承接邮件的网络,时常会面临无法立刻送出邮件的困境,因为他们的顾客的
服务器不见得永远保持连接。在客户离线的情况下,ISP只能将收到的邮件暂时存放在队
到目前为止,我们主要的讨论焦点,都是postfix于邮递路径末端所扮演的角色。也就
是说,抵达postfix服务器的邮件,主要是被投递到本机系统。但是,postfix也常扮演
另一种角色--位于邮递路径中的中继器。
备用交换器
在DNS的术语中,MX代表mail exchanger。一个MX记录代表一个网域承接外来邮件的主
机,以及该主机的优先度。同一个网域可以同时有好几个MX记录,优先度最高的主机称
为主交换器,其余主机称为备用交换器。备用交换器的任务,是在主交换器离线时,承
接该网域的外来邮件;当优先度高于自己的其他备用交换器或主交换器恢复上线时,已
收下的邮件必须传给主交换器来处理,备用交换器不能自己擅作主张,将收到的邮件直
接投递到最终目的地。假设备用交换器时,不必特别设定如何传信给主交换器,因为
postfix自己能从DNS查出如何转信给主交换器。不过,前提是你必须让postfix知道自
己是哪一个网域的备用交换器。你的 postfix系统是哪些网域的备用交换器,那些网域
的名称就必须被列在relay_domains参数中。当寄信方的MTA发觉收信网域的主交换器离
线了,它会试着联系优先度次高的交换器,直到有一个备用交换器能够收下邮件地址为
止。如果你的postfix系统是某个网域的备用交换器,而且该网域被列在
relay_domains参数中,则postfix会收下该网域的邮件,并将其排入队列。每隔一段时
间,postfix会扫描它的队列,并检查是否有优先度更高的邮件交换器恢复连接,如果有
,则交出先前代收的邮件。
如果不能交出邮件,postfix会持续尝试,直到邮件在队列里等待的时间超过
maximal_queue_lifetime所指定的时限为止。此参数的默认值为五天,如果邮件在等待
队列里待的时间超过此上限,postfix会发出退信通知函给寄件人。如果你事先知道主交
换器停机的时间会超过五天,可以适度提高时限。
转发列表
postfix可从relay_domains参数与DNS系统知道自己的备用交换器角色,但是它如何知
道转发的网域中有哪些有效收件人?如果备用交换器无法事先知道主交换器有哪些合法
邮箱,它势必被迫盲目收下所有邮件,等到主交换器恢复连接时,才会发现有哪些邮件
无法投递并退信给原寄件人。因此,我们郑重建议你在备用交换器设置一份列表,记录
受理网域有哪些合法用户,并定期与主交换器同步更新。
当备用交换器上的postfix server收到寄给relay_domains所列网域的邮件时,它会检
查relay_recipient_maps参数所指定的查询表,借此判断是否应该收下邮件,如不应收
下则直接拒收。relay_recipient_maps参数的设定方式如下:
relay_recipient_maps = hash:/etc/postfix/relay_recipients
relay_recipients查询表应该记录所有合法收件人的邮件地址。postfix只需要此表的
索引键,所以对应值可以任意填写(但不可不填)
对于人事变动频繁的网域,我们建议你应该研制一个同步程序,利用rsync、ssh、
crond等工具,自动从主交换器下载最新列表。
如果备用交换器的postfix不过滤转发网域的收件地址,会有什么后果?答案是备用交换
器会收到一大堆无法投递的垃圾邮件,并产生一大堆寄不出去的退信通知函。因为捏造
收件人是垃圾邮件发送者常用的手段之一,他们事先不知道你的邮件交换器有哪些用户
,于是以常用的人名来捏造收件地址,试图蒙混过关。此外,垃圾邮件也不可能会提供
有效的回信地址。
假如备用交换器与主交换器位于同一个局域网,除了使用rsync、scp、ssh、crond等传
统工具之外,还有更好的方法来进行列表的同步更新工作。比方说,将用户账号储存在
某种数据库中,像mysql、ldap等,让postfix能够进行实时查询。
在你设定了relay_recipient_maps之后,还必须面对一个潜在的问题;你必须将所有转
发网域的所有合法邮件地址都列入查询表,因为 postfix将拒收任何收件地址没出现在
查询表的邮件。如果你不知道某些网域的合法邮件地址,你可以为该网域设置一个无限
别名地址;
快速清空
为许多网域承接邮件的网络,时常会面临无法立刻送出邮件的困境,因为他们的顾客的
服务器不见得永远保持连接。在客户离线的情况下,ISP只能将收到的邮件暂时存放在队