delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

11 Mar 2006

关于MX互备

一直想做的一件事:跨越三网的MX和NS互备,我认为基本上可以应付个人网站任何常见规模的网络间断和服务器宕机导致的潜在丢信问题。

(此文档属于备忘录性质,作者不对此备忘录的正确性、条理性、实用性、适用性承担任何责任。
版权所有 (c) 2006 李鑫,保留所有权利。未经作者书面或PGP签名许可,禁止转载、修改、复制,或以其它未经授权的方式使用本文内容)

方案目标:

在不降低各自反垃圾邮件功能强度的前提下,以尽可能低的成本实现中小型企业和个人用户邮件服务的不间断运行,杜绝由于服务器升级等原因导致的丢信问题。

目前可行的方法是互相配置为备份MX和DNS,并进行适当的配置。

实施这一方案有几个重要前提:

  1. 可信主机。参与这一计划的__全部__主机__必须__都是可信的。其安全方面的坚固程度必须相当,因为任何一点的弱点都将降低整个系统的可靠性。

  2. 分布。参与这一计划的主机必须位于不同的网络,否则这一计划将失去意义。

  3. 兼容。参加计划的服务器应使用相互兼容的MTA。在本文的设计中,我们假定使用postfix作为MTA。

具体细节:

a. 编写区分过滤规则。服务器所有者之间协调公用的反垃圾配置,并利用 postfix 的 access(5) 表,根据目的域名算出应用本地(也许更为严厉的)策略,还是应用公用的策略。这一点非常重要。

一般来说,我认为可以公用的策略包括:邮件的SPF拒绝、严厉RFC 2821/2822信封检查、MX检查、灰名单、可退信检查,以及反病毒检查。

b. 配置备份MX上的 transport(5) 表。

这个没啥好说的。不配的结果就是循环和丢信。

c. 配置相互信任XCLIENT和XFORWARD。

这个主要是给各自的反垃圾策略使用。

d. 测试。

e. 配置DNS中的MX指向。

我认为拥有3个节点(来自不同网络)的系统,已经完全可以满足个人和中小企业邮件的任何需要。

配置中的注意事项:

  1. 备份MX由于无法获得用于身份验证的目录服务的支持,因此可能无法正确地拒绝来自非授权来源的邮件。这一问题可以通过SPF等技术来缓解,但要注意,SPF应包括其他可能直接转发邮件的服务器。

  2. 不应给予备份MX完全信任。备份MX只能投递发给自己的邮件;不这样配置是一种非常常见的安全漏洞,其结果是一旦备份MX被攻陷,则其备份的所有MX将成为Open Relay的跳板。

  3. 对于本地垃圾策略拒绝的邮件,应明确回应备份MX 5XX (永久) 错误,而不是4XX,以节省备份MX服务的资源。(对外回应错误时,则可根据需要回应,4XX可以有效地消耗垃圾邮件发送服务器的资源,如果他们使用qmail,则可以迅速将其拖跨)。

  4. 备份MX的优先级应低于真正的MX,以减少延误的机会。