我正在运行 CentOS 5 和 sendmail。 Sendmail 充当同一 LAN 网段上网络服务器的 MTA。大多数电子邮件都会通过,但我确实在 /var/log/maillog 中收到几个错误,内容如下:
Oct 20 11:10:01 mail sendmail[15733]: s9K29kgh015733: <webserver> [<ip redacted>] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
看起来,当网络服务器尝试创建电子邮件时,MTA 和网络服务器之间的连接偶尔会断开,因此我们会收到这些错误,而客户永远不会收到电子邮件。
如何监控运行 sendmail 的 Linux 服务器上的 NIC,以便了解是什么终止了连接?
答案1
网卡有问题吗?
您可以使用 ip_route2 工具ip
显示有关特定网络接口的统计信息。
$ ip -s link show wlp1s0
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether c8:f7:33:15:0b:12 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
2080111115 7611725 0 0 0 0
TX: bytes packets errors dropped carrier collsns
727520431 6328004 0 0 0 0
上图显示了接收 (RX) 和发送 (TX) 的数据包,以及数据包传入/传出 NIC 时发生的任何错误。你可以看到所有的接口是这样的:
$ ip -s link
类似的命令如ifconfig
和netstat -i
将报告相同类型的信息。
连接有问题?
如果 NIC 看起来没问题,那么我会在 foodc 链的更高层诊断问题。为此,您可以使用tcpdump
或wireshark
监视相应的接口,直至特定端口和特定 IP 地址。
笔记:这里有许多tcpdump
可用的示例命令:Tcpdump 使用示例。
在你的情况下,这样的事情将有助于捕获你的主机和网络服务器之间的网络流量。在CentOS系统上:
$ sudo tcpdump -n "src host 192.168.1.1 and dst port 25"
上面的 IP 是尝试连接到 CentOS 系统的服务器。端口 25 通常用于 SMTP。
进一步提升?
我怀疑您真正的问题不在下面,但很可能是邮件服务器由于某种原因丢弃了邮件。也许它格式错误或缺少标头信息。我建议打开邮件服务器的日志记录,假设它是sendmail
,您可以在配置文件中执行类似的操作,/etc/mail/sendmail.cf
.sendmail
之后您需要重新启动:
O LogLevel=9
答案2
Wireshark就是您正在寻找的。