发送电子邮件到 Postfix SMTP:在没有 VPN 的情况下,交易过程中连接丢失 - IPv6

发送电子邮件到 Postfix SMTP:在没有 VPN 的情况下,交易过程中连接丢失 - IPv6

我通过 OpenVPN 隧道将 Postfix/Dovecot smtp 服务器连接到互联网上的 VPS。当我使用常规互联网连接(端口 587)发送简短(如 3-4 句话)的电子邮件时,它工作正常。但如果我的电子邮件较长,Thunderbird 会抛出“交易过程中丢失连接”错误。如果我将我的机器连接到相同的 VPN 和 VPS,发送工作正常。所有机器都运行双栈,VPS 和 OpenVPN 隧道也是如此(使用 tun,无 tap)。从其他电子邮件服务器接收长电子邮件工作正常。我该如何解决这个问题?所有服务器都在 Debian 9 上运行,客户端运行的是 Win10。
此问题仅出现在 IPv6 上。到目前为止,我只从我的家庭网络对其进行了测试。tun-mtu 现在设置为 1280。tracepath 正确识别设置的 MTU。
这是我的 ip6tables:

# Generated by ip6tables-save v1.6.0 on Tue Mar 27 23:51:39 2018
*filter
:INPUT ACCEPT [5:608]
:FORWARD ACCEPT [1217:402964]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -j ACCEPT
-A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun+ -o eth0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o tun+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p ipv6-icmp -j ACCEPT
-A FORWARD -s [MYSUBNET]/64 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p ipv6-icmp -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT

答案1

我同意 @CraigMiskell 的观点:如果您的网络中 P-MTU 出现故障(由于 IP 网络固有的“各向异性”,它可能在一个方向上出现故障,但在另一个方向上不会出现故障),这可能会导致较大的 IP 段在中间某处被丢弃,而有关该情况的 ICMP 消息无法返回到您的堆栈。尝试启动这里

另一种可能是,你对私人网络防火墙的设置过于谨慎。比如,使用 Linux 的 Netfilter 时,人们往往会有类似

iptables -L INPUT -P DROP
iptables -L INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

(和同上FORWARD)——忘记在“启用”规则中提到状态RELATED ——因此禁止 ICMP 消息 有关的建立 TCP 连接以到达本地网络堆栈。

检查您在这方面没有过于严格。

要了解的内容:P-MTU、P-MTU 发现、ICMP“无法分段”消息, TCP 最大安全帧

相关内容