多域名邮件标头未个性化

多域名邮件标头未个性化

我有一台专用服务器(Ubuntu 14.04),带有 Postfix/Dovecot,IP 为 1.1.1.1

我托管了 4 个域名:2 个在 IP 1.1.1.1 上,1 个在 IP 1.1.1.2 上,1 个在 IP 1.1.1.3 上。每个域名都有一个指向其自己 IP 地址的 DNS 记录(A domain.com/mail.domain.com、MX 记录、SPF 等)。

问题是,每当我发送电子邮件并检查电子邮件的标题时,我都会看到:

> X-Spam-Last-External-IP: 1.1.1.1
> X-Spam-Last-External-HELO: server.hostname.com 
> X-Spam-Last-External-rDNS: Default Domain on 1.1.1.1
> Received: from server.hostname.com (Default Domain [1.1.1.1])
etc..

难道不能显示每个时间域的相关信息而不是服务器信息吗?例如 1.1.1.2 IP 和 mail.domain2.com 主机名等?

答案1

我不认为可以让一个 postfix 进程监听所有地址,但使用多个主机名(例如 HELO 标头)是可行的,因为SMTP 协议不支持客户端以任何方式指定主机名

考虑一下 HTTP 虚拟托管作为类似的场景,也许就是您想到的场景。客户端解析主机名,然后发出 HTTP 请求,Host在标头中指定主机名。此标头使得虚拟托管成为可能。

现在考虑 HTTPS。直到最近,还没有办法在服务器上托管多个 HTTPS 虚拟主机,因为Host标头是加密有效负载的一部分,因此必须建立 TLS 会话Host 标头将被发送。但由于服务器提供的证书取决于所Host使用的名称,这意味着必须为每个不同的 HTTPS 服务器名称(或更准确地说,每个 https 证书通用名称。通配符可以匹配多个)指定一个 IP 地址。

相对较近的是SNI 扩展已添加到 HTTPS 中以缓解该问题,因此现在Host服务器可以使用标头TLS 会话已建立。

好的,让我们回到 SMTP。SMTP 客户端在连接时不会指定特定的服务器名称。服务器实际上在主机询问任何内容之前就表明了身份!

$ telnet  gmail-smtp-in.l.google.com. 25
Trying 74.125.29.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP 11si20717228qkl.61 - gsmtp

不过,您可以根据自己的情况采取一些措施,但这样做很不方便。您可以运行多个 postfix 服务器,每个服务器都监听一个专用 IP,并且每个服务器都配置为使用适当的名称进行响应。据我所知,这是实现您想要的目标的唯一方法,类似于在 SNI 出现之前在专用 IP 上运行 https 服务器。

希望能帮助到你。

答案2

为此,您需要使用“多个实例”设置 Postfix。每个实例都会绑定到其特定 IP(并且只绑定到该 IP),用于接收和发送邮件。

http://www.postfix.org/MULTI_INSTANCE_README.html

理论上,可以在 master.cf 中定义专用的“smtp”传输(每个传输都绑定到一个 IP) - 但没有简单的方法可以告诉 Postfix 使用哪个 IP 来发送邮件。

相关内容