假设我有一个具有多个专用 IP 地址和多个域的 VPS:
domain-a.com
开启11.11.11.11
,mx 为mail.domain-a.com
domain-b.com
开启22.22.22.22
,mx 为mail.domain-b.com
domain-c.com
开启33.33.33.33
,mx 为mail.domain-c.com
domain-a.com
是主域,服务器的主机名是server.domain-a.com
一切似乎都很好,直到我发现使用 Exim 4.72 发送的 SMTP 电子邮件被退回、失败或被标记为许多域的垃圾邮件。经过一番挖掘,我发现存在不匹配:对于来自每个域的电子邮件,HELO
来自server.domain-a.com
.
例如,我在发送给 gmail 的电子邮件的标题中看到了这一点:
Received: from server.domain-a.com (mail.domain-c.com. [33.33.33.33])
像https://www.mail-tester.com/这样的邮件测试服务告诉我:
您的反向 DNS 与您的发送域不匹配。
您的 IP 地址 33.33.33.33 与域 mail.domain-c.com 相关联。
不过,您的消息似乎是从 server.domain-a.com 发送的。
您可能希望将您的指针(PTR 类型)DNS 记录和服务器的主机名更改为相同的值。
以下是此检查的测试值:
IP: 33.33.33.33 HELO: server.domain-a.com rDNS: mail.domain-c.com
但显然我不能同时指向server.domain-a.com
域 a、b 和 c,而且无论如何,我不一定希望 domain-c.com 通过 domain-a.com 发送 - 让我们假设它们是独立的企业,只是碰巧托管在同一台服务器上。
如何将 exim 配置为从其自己的域发送每封电子邮件,并HELO
从邮件服务器域而不是服务器的主主机名发送?
所以标题看起来像这样:
Received: from mail.domain-c.com (mail.domain-c.com. [33.33.33.33])
测试结果报告了这一点:
IP: 33.33.33.33 HELO: mail.domain-c.com rDNS: mail.domain-c.com
我为 IP 地址找到了相同问题的解决方案,这就是我从不同 IP 发送邮件的方式,所以我确信域必须有类似的解决方案。
在我的研究中,我只能找到这个解决方案,但它取决于 cP***l 和 W*M 以及/etc/mailhelo
仅存在于 cP***l 中的文件。这显然是可能的,但该解决方案取决于一些在 cP***l 中烘焙的幕后 gubbins,我不使用。
如果相关的话,操作系统是 CentOS。
嗯,这比预期的要容易。
我注意到我的 exim 设置文件 (
/etc/exim/exim.conf
) 包含以下注释行:取消注释会导致 HELO / from 成为正确的域,只是缺少
mail.
前缀。所以对我有用的是:
(1)在
remote_smtp:
我的系统上位于的 exim 配置文件中/etc/exim/exim.conf
,添加以下行:(2)重新启动 exim(在我的系统上,即
service exim restart
)(3)仅此而已
进行此更改后,Mail Tester 之类的服务没有发现任何问题,并且我的邮件标头的这一部分看起来很正常:
主机名稍后仍会出现在电子邮件标题中;我已经问了一个单独的问题。