Linux下sMail服务器经常无法连接

Linux下sMail服务器经常无法连接

在此输入图像描述iredmail我有一个在Centos6.5系统上 搭建的邮件服务器A。邮件服务器有一个公共IP aaa。

本地网络中大约有40~50个操作系统为windows的邮件客户端,它们都NAT为公网ip ccc(路由器C是linux系统构建的)。另一方面,同一本地网络中很少有机器使用linux系统。其中一些无法经常与邮件服务器连接。

例如,我使用带有 Fedora 19 的桌面到邮件服务器 443 端口,并使用命令telnet在邮件服务器上捕获tcpdump

15:16:55.144222 IP xxx.xxx.xxx.xxx.46989 > xxx.xxx.xxx.xxx.https: Flags [S], seq 939563650, win 29200, options [mss 1460,sackOK,TS val 23633360 ecr 0,nop,wscale 7], length 0
15:17:03.160282 IP xxx.xxx.xxx.xxx.46989 > xxx.xxx.xxx.xxx.https: Flags [S], seq 939563650, win 29200, options [mss 1460,sackOK,TS val 23641376 ecr 0,nop,wscale 7], length 0

但是使用 Windows 7,它与 Feodra 19 位于同一集线器上,以 telnet 邮件服务器 443 端口

15:20:54.484991 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [S], seq 31344922, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
15:20:54.485034 IP xxx.xxx.xxx.xxx.https > xxx.xxx.xxx.xxx.49218: Flags [S.], seq 1361958840, ack 31344923, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
15:20:54.485558 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [.], ack 1, win 4380, length 0
15:20:55.685554 IP xxx.xxx.xxx.xxx.https > xxx.xxx.xxx.xxx.49218: Flags [S.], seq 1361958840, ack 31344923, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
15:20:55.686359 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [.], ack 1, win 4380, options [nop,nop,sack 1 {0:1}], length 0
15:21:05.122927 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [F.], seq 1, ack 1, win 4380, length 0
15:21:05.123193 IP xxx.xxx.xxx.xxx.https > xxx.xxx.xxx.xxx.49218: Flags [F.], seq 1, ack 2, win 115, length 0
15:21:05.123813 IP xxx.xxx.xxx.xxx.49218 > xxx.xxx.xxx.xxx.https: Flags [.], ack 2, win 4380, length 0

所有的Windows 7和Feodra19都在同一网络环境中,但Windows 7总是成功,而Feodar 19有时会失败。但是,当我使用具有公共IP bbb到邮件服务器的Linux服务器B时telnet,它成功并且从未失败。我考虑是否是linux连接到同一个源ip的问题。

Windows 本地网络邮件客户端通常以 3 分钟间隔连接到邮件服务器来检查邮件。不知道对解决问题有用还是没用。

答案1

我终于自己找到了原因。
这一切都是因为:

net.ipv4.tcp_tw_recycle=1

由于 Windows 的 SYN 包中始终没有时间戳选项,而 Linux 的 SYN 包中始终
有时间戳选项,因此邮件服务器不会创建带有错误时间戳的新 TCP/IP 连接请求。

相关内容