感谢@AlexD主意,我们将实现以下传输表,以便使用 DNS MX 解析模拟 IP 故障转移(postfix 3.3)
中继 2 个域名,例如[12].com
exemple1.com relay:mx.myhost.com:587
exemple2.com relay:mx.myhost.com:587
在 DNS 中
A ip1.myhost.com 1.2.3.4
A ip2.myhost.com 11.12.13.14
MX mx.myhost.com 10 ip1.myhost.com
MX mx.myhost.com 50 ip2.myhost.com
Postfix 中继应首先使用 ip1(优先级 10),如果 ip1 出现故障,则使用 ip2(50)。
如果一切正确,下一步就是 SMTP 验证。ip1 和 ip2 连接可以使用同一组用户名/密码。
user:pass
问题:在sasl_passwd
映射中,由于 ip1 和 ip2 都使用相同的用户:密码设置,我们可以/应该使用待 MX 解析的主机(一个条目)还是必须使用两个相同的用户/密码条目,一个用于 [ip1],一个用于 [ip2]?(SASL 身份验证是否间接接受要进行 MX 解析的主机,然后将身份验证应用于已解析的条目?)
A)这个 sasl_passwd 文件正常吗
mx.myhost.com:587 user:pass
b)或者这个
[ip1.myhost.com]:587 user:pass
[ip2.myhost.com]:587 user:pass
C)顺便问一下,这与直接使用 IP 相同吗?
[1.2.3.4]:587 user:pass
[11.12.13.14]:587 user:pass
(前提是 A 记录不变)
答案1
man 5 postconf内容如下:
smtp_sasl_password_maps(默认值:空) 可选的 Postfix SMTP 客户端查找表,每个发件人、远程主机名或下一跳域有一个用户名:密码条目。
SASL自述文件具有以下内容:
重要的
如果您在中继主机目标中指定“[”和“]”,则必须在 smtp_sasl_password_maps 文件中使用相同的形式。
如果您在中继主机目标中指定非默认 TCP 端口(例如“:submission”或“:587”),则必须在 smtp_sasl_password_maps 文件中使用相同的格式。
示例配置:
/etc/postfix/sasl_passwd:
# destination credentials
[mail.isp.example] username:password
# Alternative form:
# [mail.isp.example]:submission username:password
因此,根据上面引用的文档,您需要以与运输表相同的方式写入目的地。如果您有,mx.myhost.com:587
那么您需要使用
mx.myhost.com:587 user:pass