如何让具有多个域的服务器上的 exim 从其自己的域而不是服务器主机名发送每封邮件?

如何让具有多个域的服务器上的 exim 从其自己的域而不是服务器主机名发送每封邮件?

假设我有一个具有多个专用 IP 地址和多个域的 VPS:

  • domain-a.com11.11.11.11,mx 是mail.domain-a.com
  • domain-b.com22.22.22.22,mx 是mail.domain-b.com
  • domain-c.com33.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])

主机名稍后仍会出现在电子邮件标题中;我已经就此提出了另一个问题

相关内容