我有一个专门的服务器(Ubuntu 14.04)与IP 1.1.1.1上的Postfix / Dovecot
我正在托pipe4个域:2个IP 1.1.1.1,1个IP 1.1.1.2,1个IP 1.1.1.3。 这些域中的每一个域都有一个指向自己IP地址的DNSlogging(A domain.com/mail.domain.com,MXlogging,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主机名等?
我不认为有可能有一个后缀进程监听所有地址,但是对于例如HELO头使用多个主机名,因为SMTP协议不支持任何方式让客户端指定主机名 。
考虑一下HTTP虚拟主机作为一个类似的scenairo,也许你想的那个。 客户端parsing主机名,然后发出HTTP请求, 在Host头中指定主机名 。 这个头是什么使虚拟主机成为可能。
现在考虑HTTPS。 直到最近,在服务器上没有办法托pipe多个HTTPS虚拟主机,因为Host头是encryption的有效载荷的一部分,因此必须在发送主机头之前build立TLS会话。 但是由于服务器提供的证书取决于所使用的Host名,这意味着IP地址必须专用于每个不同的HTTPS服务器名(或者更准确地说,每个https证书的通用名,通配符可以匹配多个)。
相对最近, SNI扩展被添加到HTTPS以减轻这个问题,所以现在在TLS会话build立之前 Host头对服务器是可用的。
好的,让我们跳回到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,并且每个服务器都被configuration为用适当的名字进行响应。 根据我的理解,唯一的方法就是实现你想要的目标,就像在SNI之前的专用IP上运行https服务器一样。
希望能帮助到你。
你需要一个使用“多个实例”的Postfix设置。 每个实例都会将它的特定IP(并且仅限于IP)用于传入和传出邮件。
http://www.postfix.org/MULTI_INSTANCE_README.html
理论上,可以在master.cf中定义专门的“smtp”传输(每个传输绑定到一个IP) – 但是告诉Postfix没有简单的方法来告诉哪个IP用于传出邮件。