在 Centos 6.6 服务器上,我们通常有 3-4 个故障转移 IP,并将它们分布在我们的域中。这样,postfix 在发送外发电子邮件时会绑定到与域关联的 IP,并分离每个 IP 的信誉状态。
唯一的问题是,postfix 使用主机名值作为 HELO 名称,并且该主机名值与实际使用的 IP 地址的反向 DNS 不对应。
我们分配绑定 IP 的方式是通过 sender_dependent_transport_maps,通过该方式我们定义一系列 smtp 传输守护进程,/etc/postfix/master.cf
并使用 berkeley_db 将不同的域映射到传输。此技术在此处有很好的解释:
http://wied.it/blog/sender-dependent-default-transport-maps-with-postfix-the-easy-way.html
在我们的例子中,SMTP 守护进程的 master.cf 行如下所示:
outgoing-10.10.10.20- unix - n n - - smtp -o smtp_bind_address=10.10.10.20 -o smtp_bind_address6= -o smtp_address_preference=ipv4
我们需要对这种方法进行两项改进:
smtp_helo_name 应该从反向 DNS 查找(每次 postfix 或 smtp 守护进程启动时)动态生成,而不是在配置文件中硬编码。
master.cf 行也是从我们的面板软件自动生成的,没有 smtp_helo_name 选项。理想情况下,我们希望在 main.cf 中定义此分配,并将其传播到所有 smtp 守护进程。
有没有办法从绑定地址的反向 DNS 查找中分配 smtp_helo_name,最好在 main.cf 中分配?
答案1
Postfix 不支持这些功能(基于反向 IP 的 smtp_helo_name)。您需要手动将其硬编码到 中master.cf
。
实际上,postfix 很少使用DNS 查找作为信息来源(除几种情况外,通过 MX 记录和 DNSBL 限制进行邮件路由)。您需要通过以下方法解决此问题
- 修补 postfix 或向其作者 Wietse Venema 发出功能请求或者
master.cf
重新启动 postfix 时动态重新生成,可能通过包装脚本