假设我有一个具有多个专用 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,而且无论如何,我不一定希望域 c.com 通过域 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 以及仅存在于 cP***l 中的文件/etc/mailhelo
。这显然是可能的,但该解决方案依赖于 cP***l 中嵌入的一些幕后 gubbins,而我不使用这些 gubbins。
如果相关的话,操作系统是 CentOS。
答案1
嗯,这比想象的要容易。
我注意到我的 exim 设置文件 ( /etc/exim/exim.conf
) 包含以下注释掉的行:
#helo_data = $sender_address_domain
取消注释会导致 HELO / from 成为正确的域,只是缺少前缀mail.
。
所以对我有用的是:
(1)在我的 exim 配置文件中remote_smtp:
(在我的系统上位于)/etc/exim/exim.conf
,添加以下行:
helo_data = "mail.${sender_address_domain}"
(2)重新启动 exim(在我的系统上是这样的service exim restart
)
(3)就这样
进行此更改后,Mail Tester 等服务没有发现任何问题,并且我的邮件头的这一部分看起来很正常:
Received: from mail.domain-c.com (mail.domain-c.com. [33.33.33.33])
主机名稍后仍会出现在电子邮件标题中;我已经就此提出了另一个问题。