双栈 ipv4/ipv6 上的 Postfix smtp 客户端 HELO

双栈 ipv4/ipv6 上的 Postfix smtp 客户端 HELO

我有一个 Postfix 邮件服务器,配置为在双栈(IPv4 + IPv6)服务器上发送邮件。

IPv4 地址是私有的,因为它与同一连接上的其他服务共享(SNAT 到公共 IPv4),而 IPv6 地址是公共的且唯一的(全局范围、互联网可​​路由)。

在这种情况下,公共 IPv4 和 IPv6 地址通常具有不同的反向 DNS(PTR 记录),因此我希望 Postfix 使用其 SMTP 客户端中的 HELO 来匹配反向 DNS。进行这种匹配是一种很好的做法,因为如果设置不对称,则会触发激进的邮件过滤。

我的情况:

  • IPv4 10.0.3.12 - SNAT 至 212.XX.XX.22(PTR - srv1.example.com,Asrv1.example.com指向 212.XX.XX.22)

  • 主机的 IPv6(此处未使用),2001:XX:XX::1(PTR - ,指向 2001:XX:XX::1srv1.example.com的 AAAA )srv1.example.com

  • Postfix 容器的 IPv6,2001:XX:XX::12(PTR - srv1-postfix.example.comsrv1-postfix.example.com指向 2001:XX:XX::12 的 AAAA)

使用的 HELO 主机名必须取决于 SMTP 客户端用于设置连接的地址系列。如果通过 IPv4 发送,则 HELO 必须是srv1.example.com,如果客户端通过 IPv6 发送,则 HELO 必须是 ,srv1-postfix.example.com以符合 SMTP 最佳实践。

如何做到?我想避免在 IPv6 上进行任何形式的 NAT。


我见过这样的情况:postfix 多 IP SMTP 横幅。这里不太有用,因为它解释了如何在监听套接字smtpd)而不是SMTP 客户端smtp)。

答案1

您的问题本质上是,对于邮件来说,主机名和 IP 地址的正向和反向查找保持一致非常重要。(请注意,对于大多数其他服务来说,这一点并不那么重要。)

目前,您的邮件服务器在 IPv4 上显示的主机名与在 IPv6 上使用的主机名不同。

最简单的解决方案就是简单地调整您的服务器名称,以便邮件服务器在 IPv4 和 IPv6 上都使用相同的主机名。

换句话说:给主机一个新名字,并将 Postfix 使用的主机名从 srv1-postfix 更改为 srv1,并相应地更新 IPv6 记录。

然后,您就会得到通常的情况,即您的 Postfix 主机有一个主机名srv1.example.com、一个 IPv4 地址(192.0.2.1)和一个 IPv62001:db8:0:0:0:0:0:1 地址,并且所有正向和反向映射都解析为同一个srv1.example.com

接收和发送邮件所需的 DNS 记录将是

example.com.        IN MX 1 srv1.example.com.
srv1.example.com.   IN A    192.0.2.1
srv1.example.com.   IN AAAA 2001:db8:0:0:0:0:0:1

相应的反向记录是

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. IN PTR srv1.example.com. 
1.2.0.192.in-addr.arpa. IN PTR srv1.example.com. 

然后在你的后缀中你可以简单地使用myhostname = srv1.example.com在需要主机名的任何地方(例如在 EHLO 横幅中),都会使用该主机名并正确对齐。

相关内容