为了在 DMZ 中进行邮件中继,我最近将 Fedora Core 3 服务器替换为运行 CentOS 5 的服务器。
我的问题是,当服务器向特定的远程组织发送消息时,大于 500KB 的消息无法正确发送。它们似乎在传输过程中被挂在某个地方,超时,然后在可预测的重试之后,在队列中过期。
Sendmail 将问题描述为:MDeferred:与 [site] 的连接超时。
大(或更大)消息成功发送到我们测试过的每个其他远程系统。我们遇到麻烦的只是这个单一的组织。同样,只要不涉及我们的CentOS 5中继,我们就可以向这个组织发送大的或更大的消息。
我们花了很多时间处理不是很有帮助的数据包跟踪。似乎在传输一定深度后,对方开始请求重传数据包,我们也这样做了,但重传的数据包似乎从未到达过他们这边。
弄乱 iptables(即完全关闭它)也无济于事。
今天我们在 DMZ 中放置了一个 XP 系统作为中继的对等体,它可以很好地发送到远程组织,而同时中继不能。在我看来,这排除了我们与远程组织之间的所有防火墙和网络路径,并将矛头直接指向邮件中继。
鉴于我在为 Fedora Core 3 设置后重新访问此 sendmail,在设置以这种方式显示的系统时,我可能做错了什么吗?
我遇到这个问题的大多数时候,我禁用了 TCP 窗口缩放,这个问题就被绕过了。在您
/etc/sysctl.conf
的底部添加以下行:然后以 root 身份执行
sysctl -p
,看看会发生什么。请注意,这不是解决问题的方法,只是一种绕过。我发现触发此行为的因素包括您的机器所连接的交换机、实际电缆、介于两者之间的某些设备的软件版本以及 tg3 以太网驱动程序和芯片组的各种组合。您甚至可能会发现,如果您在同一台机器上安装另一个操作系统(比如 OpenBSD),问题就会消失。我还看到其他人将 MTU 设置为 500 来解决这个问题。
但正如我所说,我提供了一种可能的绕过方法,而不是解决您问题的方法。