我在 Azure Linux VM 上使用 Postfix 运行自己的邮件服务器。由于遭受了严重的垃圾邮件攻击,我加强了邮件服务器的安全措施。
不去探究安全问题,今天我注意到一些特别不寻常的事情。
Postfix 无法从某些知名域名获取邮件。只有一些
# /var/log/mail
postfix/smtpd[40702]: NOQUEUE: reject: RCPT from xxxx.ing.net[xx.xx.xx.xx]: 451 4.3.5 <[email protected]>: Sender address rejected: Server configuration problem; from=<[email protected]> to=<xxxxxxxxxx> proto=ESMTP helo=<xxxx.ing.net>
# /var/log/warn
postfix/smtpd[32944]: warning: problem talking to server private/spf-policy: Connection timed out
我愚蠢地 ping ing.com / ing.net 上的 SPF 记录
从我的 Windows 机器 nslookup
ing.com
Server: [8.8.8.8]
Address: 8.8.8.8
Risposta da un server non autorevole:
ing.com text =
"MS=ms77059065"
ing.com text =
"v=spf1 include:_spf.ing.net ip4:91.209.197.6 ip4:89.20.160.55 ip4:78.136.53.254 ip4:95.138.135.251 ip4:92.52.81.2 ip4:146.148.26.249 ip4:83.231.160.132 ip4:83.231.160.128/26 ip4:212.187.169.64/26"
" include:_spf_mx.solvinity.com include:mailplus.nl ip4:24.157.48.85 ip4:141.155.214.85 ip4:160.34.64.28 ip4:192.254.112.185 ip4:118.127.87.207 ip4:128.242.118.200 ip4:62.73.172.35 ip4:83.217.248.35 ip4:91.209.197.7 -all"
ing.com text =
"adobe-idp-site-verification=8b81f7b92ccac0b65bab7d47f9fcecaeda6f04ac870b79133d8ac54be7b53534"
ing.com text =
从电子邮件服务器框 nslookup
> nslookup
> set type=txt
> ing.com
;; Truncated, retrying in TCP mode.
从邮件服务器框将 DNS 服务器设置为 8.8.8.8 会返回相同的 SPF 有效负载。
问题是:是什么导致了 Azure VM 中 TXT DNS 解析出现此问题?在盲目更改系统 DNS 设置之前,我想了解错误及其原因,以及为什么只发生在 Azure 默认 DNS 上
答案1
看起来将 DNS 切换到 Google 公共 DNS 是可行的,并且目前是使 SPF 正常工作的唯一方法。
如果 DNS 查询大于 512 字节,则无法通过标准 UDP 传输。nslookup
据我所知,它会自动切换到 TCP。
但是 DNS 服务器必须支持 TCP 查询,即必须监听 TCP 53。
问题似乎与 Azure 基础架构兼容。他们的 DNS(168.63.129.16
)可能配置错误,只是因为它在使用 TCP 时超时。
$ telnet 168.63.129.16 53
Trying 168.63.129.16...
Connected to 168.63.129.16.
Escape character is '^]'.
eee
^C^C^C^C^C^C^C^C^C^C^C^C
(睡觉)
其他 DNS 服务不会出现此类问题,因此我认为这不是设备本地防火墙的问题SuSEfirewall
。
切换/etc/resolv.conf
到任何其他公共 DNS(例如8.8.8.8
)允许 TCP 查询并且 SPF 可以恢复工作。
一个缺点是一些垃圾邮件黑名单与 Google DNS 不太友好。
例如,我必须在我的main.cf
smtpd_client_restrictions =
# reject_rbl_client multi.uribl.com,
日志已经轮换,所以我记不清使用该 RBL 收到的确切错误消息。