因此,我设置了多台服务器来发送和接收来自多个域的邮件,一切都运行正常。
然而,一些人抱怨说,在邮件标头中,您仍然会看到正在使用的服务器的名称,我们将其称为“mail1.example.com”。他们可以正常发送和接收邮件,邮件会显示他们的电子邮件地址,使用正确的 DKIM 报告等,但他们不喜欢在他们的 DNS 中专门为我的服务器或标头添加 SPF 记录。
是否可以通过任何方式使用 Postfix 来“虚拟化”“myhostname”的使用,以便它可以选择要使用的服务器名称?
答案1
是否可以通过任何方式使用 Postfix 来“虚拟化”“myhostname”的使用,以便它可以选择要使用的服务器名称?
不,这不可能。实现此目的的唯一方法是运行多个smtpd
实例,每个实例都有自己的 IP 地址,并使用自定义配置myhostname
。
邮件服务器中的虚拟化(类似于您最喜欢的 Web 服务器中的 VirtualHosts)无法通过邮件传输协议因为没有办法在协议级别指示预期的虚拟主机(如 HTTP/1.1 Host 标头)。
答案2
我假设您指的是标题的已接收部分?虽然可以使用服务器用来介绍自己的 HELO 主机名来做一些创造性的事情,但您仍然会陷入反向查找 IP 地址的困境。对于各种垃圾邮件过滤器等来说,拥有与您的 IP 地址关联的名称不同的 HELO 主机名并不总是有利的。简而言之,我想说没有好的方法可以“虚拟化”用于联系其他 SMTP 服务器的主机名。
关于您的用户及其 SPF 记录,我假设他们的域有一个指向您的邮件服务器的 MX 帖子?在这种情况下,他们只需将 MX 选项添加到他们的 SPF 记录中,我想这会更干净一些。
答案3
您遇到的问题是外部邮件服务器将每个标题附加到电子邮件本身。因此,您从 IP 1.2.3.4 连接,外部邮件服务器会对此 IP 地址进行反向查找。如果邮件来自 1.2.3.5,也会这样做。因此,您可以修改反向查找以将每个不同的 IP 解析为相同的主机名。
这是唯一存在的选项,因为您无法在 postfix 本身内伪造邮件服务器的 IP 地址。我希望我们谈论的是同一件事。
如果你只想修改 myhostname,请在 main.cf 中设置这些值
myhostname =
mydomain =
myorigin =
但我想,如果不修改反向查找功能,就无法解决您的问题。
答案4
SPF(正确地)不信任远程邮件服务器告诉它的任何内容,因此多个“myhostname”除了从标题中删除您的名字外不会执行任何操作。
有几种方法可以解决 SPF 问题:
- 为您的客户提供该指令的包含(例如,Google 使用
_spf.google.com
)include:
- 分配多个 PTR 记录,以便他们可以使用 SPF
ptr
标志(是的,这有效,尽管并不为人所知) - 如果他们是入境的,那么他们可以使用
mx
标志