我最近用一个运行CentOS 5的Fedora Core 3服务器replace了DMZ中的邮件中继。
我的问题是,当服务器发送消息到特定的远程组织时,大于500KB的消息不能正确发送。 他们似乎在传输的某个地方被挂起,超时,然后在可预测的重试之后,在队列中到期。
Sendmail将问题描述为:MDeferred:连接超时[site]。
大的(或更大的)消息成功发送到我们testing过的每一个远程系统。 这是我们遇到麻烦的这个单一的组织。 同样,只要不涉及我们的CentOS 5中继,我们就可以向这个组织发送更大或更大的消息。
我们花了很多时间去处理那些不太有用的数据包。 看起来,在一定的传输深度之后,另一端开始请求数据包重传,我们这样做了,但是重传的数据包似乎没有到达他们的一边。
与iptables混淆(即closures完全)也没有帮助。
今天我们在DMZ中join一个XP系统作为中继的一个对等点,它可以很好地发送给远程组织,同时中继不能。 在我看来,这排除了我们和远程组织之间的所有防火墙和networkingpath,并将手指直接指向邮件中继。
假设我在为Fedora Core 3设置后重新访问这个sendmail,那么在设置这个系统时可能会出现什么错误?
大部分时间我遇到这个问题,我禁用TCP窗口缩放和问题被绕过。 在你的/etc/sysctl.conf底部添加以下几行:
net.ipv4.tcp_rmem = 4096 87380 174760 net.ipv4.tcp_wmem = 4096 16384 131072 net.ipv4.tcp_window_scaling = 0
然后以root身份执行sysctl -p ,看看会发生什么。 请注意,这不是解决问题的办法,只是一个旁路。 我发现触发这种行为的事情包括您的机器连接的交换机,实际的电缆,中间某些设备的软件版本以及tg3以太网驱动程序和芯片组的各种组合。 你甚至可以观察到,如果你在同一台机器上安装另一个操作系统(如OpenBSD),问题就消失了。
我也看到其他人将MTU设置为500,以使其消失。
但就像我说的,我提供了一个可能的旁路,而不是解决您的问题。