使用 ISP 的 DNS 服务器配置的 iRedMail 服务器。运行几年没有问题。从当前的 ISP 转移到 Starlink。Starlink 似乎使用 Cloudflare 的公共 DNS。目前让两个 ISP 并行运行,直到切换完成。同样,邮件服务器在旧版 ISP 上运行良好。
当我切换到 Starlink(包括适当的公共 DNS 更改)时,收到来自 Spamhaus 的错误 12.255.255.254,这表明他们不允许来自公共 DNS 服务器的查询。很公平。设置本地未绑定解析器以解决问题。不受约束的工作并用于所有网络客户端。当带有传统 ISP 网关的邮件服务器中用于 DNS 的未绑定服务器 IP 时,传入的邮件会流动。
使用 Starlink 网关时,邮件停止流动。在 Postfix 日志中看不到任何错误。邮件只是停止流动。尽管 Spamhaus 在使用传统网关时似乎很乐意使用 Unbound 服务器,但为了以防万一,我们还是测试了 Spamhaus 的响应。结果很有趣:
% dig +short @[address of Unbound server] 2.0.0.127.zen.spamhaus.org
127.0.0.2
127.0.0.10
127.0.0.4
%
那是对的。但是,以下内容不返回任何内容:
% dig +short @[address of Unbound server] 1.0.0.127.zen.spamhaus.org
%
从 Spamhaus 文档中,它应该返回:
Host 1.0.0.127.zen.spamhaus.org not found: 3(NXDOMAIN)
Spamhaus 文档还说“对“未列出”对象的查询必须始终返回 NXDOMAIN 才能使邮件过滤正常工作。” “检查‘列出’和‘未列出’查询的正确结果至关重要。”
有趣的是,当我使用旧版 ISP DNS 和网关时,我还得到:
% dig +short @[legacy ISP DNS IP] 1.0.0.127.zen.spamhaus.org
%
顺便说一句,外发邮件适用于所有 ISP 配置。只有传入的邮件有问题。还在 Starlink 后面运行一个运行良好的网络服务器。星链公网IP到现在已经两个月了。
这里到底发生了什么?会不会是 Unbound 服务器配置?我知道 Starlink 是 CGNAT,但这不应该导致这个问题。任何故障排除提示?真是难住了。将不胜感激任何帮助。
更新:
在我将所有内容都转到 Starlink 之后,我在被拒绝的消息中发现了许多看起来像这样的条目:
451 4.3.5 <mta-d-130-24.infusionmail.com>:Helo 命令被拒绝:服务器配置错误;[email protected] to=<mike@[我的公共邮件服务器名称]> proto=ESMTP helo=<mta-d-130-24.infusionmail.com> (总数: 1) 1 infusionmail.com (mailer@输液邮件.com)
更新 2:
按照以下建议设置 BIND9 服务器。同样,邮件在使用 BIND9 DNS 和传统 ISP 网关时会流动,但在使用 Starlink 网关时不会。
使用以下工具测试https://mxtoolbox.com/diagnostic.aspx
当电子邮件服务器在旧版 DSL 之后运行时通过所有测试。在 Starlink 后面运行时,获得:
3/19/2022 5:33:54 PM Connection attempt #1 - Unable to connect after 15 seconds. [15.05 sec]
LookupServer 15051ms
就像电子邮件服务器在 Starlink 后面的端口 25 上没有响应一样。我尝试删除 Postfix 中的所有垃圾邮件规则。还是没有反应。
几乎感觉像是防火墙问题,但我有从 Starlink 路由器转发的端口 25、587 和 993 端口,就像我为传统 DSL 路由器所做的那样。
从我的网络外部,我确定以下端口没有被阻止:
25:
% telnet [My public mail server name] 25
220 [My public mail server name] ESMTP Postfix
587:
% telnet [My public mail server name] 587
220 [My public mail server name] ESMTP Postfix
993:
% openssl s_client -connect [My public mail server name]:993 -crlf -quiet
depth=1 O = Digital Signature Trust Co., CN = DST Root CA X3
verify error:num=10:certificate has expired
notAfter=Sep 30 14:01:15 2021 GMT
verify return:0
depth=1 O = Digital Signature Trust Co., CN = DST Root CA X3
verify error:num=10:certificate has expired
notAfter=Sep 30 14:01:15 2021 GMT
verify return:0
depth=3 O = Digital Signature Trust Co., CN = DST Root CA X3
verify error:num=10:certificate has expired
notAfter=Sep 30 14:01:15 2021 GMT
verify return:0
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.
这应该证明 Starlink 没有阻止我的任何端口。
我认为到目前为止最重要的一点是 HELO 命令被拒绝。不知道为什么当服务器在 Starlink 而不是传统 ISP 之后运行时它会被拒绝。嗯……
这可能是反向 DNS 问题吗?Starlink 在他们给我的 IP 地址上有一条 PTR 记录:
% host [Starlink public IP]
[Starlink public IP].in-addr.arpa domain name pointer customer.sttlwax1.pop.starlinkisp.net.
% dig +short customer.sttlwax1.pop.starlinkisp.net
%
% dig +short mail.[my domain].com
[Starlink public IP]
然后我检查了我的旧版 DSL:
% host [Legacy DSL public IP]
[Legacy DSL public IP].in-addr.arpa domain name pointer client-[Legacy DSL public IP].hostwindsdns.com.
% dig +short client-[Legacy DSL public IP].hostwindsdns.com
%
% dig +short mail.[my domain].com
[Legacy DSL public IP]
他们似乎表现相似并且有同样的问题。
Starlink 表示他们封锁了 25 端口,而 CGNAT 可能导致了路由问题。我通过创建一个 VPS 然后在 Starlink 后面的邮件服务器中创建一个隧道解决了这个问题。然后所有流量都通过隧道从 VPS 转发到邮件服务器。来自邮件服务器的所有传出流量都通过隧道传出。奇迹般有效。