我们在 3 个独立的公共静态 IP 上有 3 个 SMTP 服务器。我们在单个静态 IP 上有一个辅助故障转移连接。我想将所有 3 个 SMTP 服务器放在路由器后面并脱离公共 IP,使用 postfix 在主互联网连接和故障转移上接受邮件,然后将所有电子邮件路由到现在的内部 SMTP 服务器。这是 3 个不同的电子邮件域。我如何设置 Postfix cnfg 来实现这一点?我在 Google 上搜索过这个问题,但没有找到合适的解决方案。我有一个现有的 Ubuntu 16.04 盒子,目前用作 SSH 网关,并且想将同一台机器用于 smtp-gateway/smarthost。
答案1
通过主互联网连接和备份互联网连接路由传入电子邮件就像在 DNS 中设置正确的 MX 优先级记录一样简单:
example.com. 86400 IN MX 10 mx1.example.com.
example.com. 86400 IN MX 20 mx2.example.com.
mx1.example.com. 86400 IN A <ip-on-primary-internet-connection>
mx1.example.com. 86400 IN A <ip-on-secondary-internet-connection>
您的其他域名也类似:
example.net. 86400 IN MX 10 mx1.example.com.
example.net. 86400 IN MX 20 mx2.example.com.
在 Postfix 中,您需要一个配置,该配置将接受 example.com 和 example.net 的传入邮件以进行中继,而不是进行本地传送,并将其路由到正确的内部服务器。大致如下:
将 example.com 和 example.net 添加到relay_domains
参数:
[...]
relay_domains = $mydestination, example.com, example.net
[...]
设置交通地图,同样在/etc/postfix/main.cf
:
[...]
transport_maps = hash:/etc/postfix/transport
[...]
并且该映射/etc/postfix/transport
会将每个域的邮件路由到特定的 SMTP 服务器:
example.com smtp:[internalhost1.example.com]
example.net smtp:[internalhost2.example.com]