我正在运行一个高可用性集群,到目前为止,大多数事情都运行良好。我有两台外部机器充当外发邮件主机(智能主机)。内部主机配置为通过这两个面向外部的主机中继所有电子邮件。
我的智能主机的 main.cf 如下所示:
myhostname = lb1.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = lb1.example.com, localhost
relayhost =
mynetworks = 127.0.0.0/8 10.1.248.0/24
我的内部主机的 main.cf 如下所示:
mynetworks = 127.0.0.0/8
myhostname = web1.example.com
mydestination = $myhostname, localhost.$mydomain, localhost
relayhost = [10.1.248.3]
smtp_fallback_relay = [10.1.248.2]
lb1的内部IP是10.1.248.2,lb2的内部IP是10.1.248.3。
在外部主机上,root 和 www-data 的电子邮件被转发到[电子邮件保护]使用 /etc/aliases。
使用智能主机设置的一个优点是垃圾邮件过滤器等可以连接回发送服务器。所有电子邮件都发送成功,标题如下所示:
Received: from lb2.example.com ([198.51.100.3])
by mx.google.com with ESMTP id y17si1571259icb.76.2011.01.13.18.20.32;
Thu, 13 Jan 2011 18:20:32 -0800 (PST)
Received-SPF: neutral (google.com: 198.51.100.3 is neither permitted nor denied by best guess record for domain of [email protected]) client-ip=198.51.100.3;
Received: from db1.example.com (unknown [10.1.248.20])
by lb2.example.com (Postfix) with ESMTP id D364823C0BE
for <[email protected]>; Thu, 13 Jan 2011 21:20:31 -0500 (EST)
Received: by db1.example.com (Postfix)
id C9FA7760D6A; Thu, 13 Jan 2011 21:20:31 -0500 (EST)
Delivered-To: www-data@localhost
Received: by db1.example.com (Postfix, from userid 0)
id C1632760D6C; Thu, 13 Jan 2011 21:20:31 -0500 (EST)
问题是电子邮件被退回/拒绝。外部机器尝试将电子邮件转发回内部机器,例如 web1 上的 www-data 发送了一封被退回的电子邮件(例如用户使用错误的电子邮件地址注册)。
另一个复杂因素是使用 Google 邮件作为主 example.com 域。
除了在外部主机的 mydestination 中指定每个内部主机外,有没有更好的设置方法,同时记住我无法调整 touch example.com 的 mx?
答案1
将发件人地址设置为可以接收电子邮件的地址。电子邮件将退回到发件人地址。发件人应始终是可以接收电子邮件的地址。查看 Postfix 文档中的标头重写选项。