总体情况是,我从一台机器上的 Web 应用程序通过另一台机器上的 sendmail 发送邮件,最终目的地是 mx.google.com 上的 pop 帐户。后者 sendmail 机器有 2 个 IP 号码,因为它兼作数据库服务器。当我收到邮件后查看标题时,IP 号码引用的是错误的 IP 号码。该号码不是随机的;它是数据库服务器的 IP 号码(即同一台物理机器)。
这是症状。我的 Eudora 电子邮件客户端报告此标头:由 mx.google.com 从 good.mydomain.com (bad.mydomain.com. [xxx10]) 收到,ESMTPS id 为...
短语“good.mydomain.com”是正确的,似乎源自 /etc/mail/sendmail.mc 中的 confDOMAIN_NAME 行。“bad.mydomain.com”是 xxx10 的 rdns。我希望它是 xxx66,它已设置并运行 good.mydomain.com 的 RDNS。这使用公共 DNS,没有特殊的 etc/hosts 条目。
我在 /etc/mail/sendmail.mc 中有此行,它似乎将接收方绑定到所需的 .66 号码:DAEMON_OPTIONS(`Port=smtp,Addr=xxxx66, Name=MTA')dnl
我了解到我的 xxx10 ip 号码在网卡上是“第一个”,我并不想改变这一点。我只想让 Sendmail 坚持使用 .66 号码来中继到 mx.google.com。
无需担心开放中继,防火墙已设置并且仅接受来自我的 Web 服务器机器的连接。
我确实知道每次更改宏后都必须运行 make,并且还必须重新启动 sendmail 服务。
感谢您考虑我的问题。
答案1
您走在正确的道路上,但您需要使用 CLIENT_OPTIONS 来配置 sendmail 用于出站邮件的源 IP。
CLIENT_OPTIONS(`Family=inet,地址=xxx66')
在您“完成”该操作后(如果您重新启动 sendmail 服务,该操作应该会在 Centos 上自动发生),sendmail.cf 文件应该包含相应的 ClientPortOptions 参数。