Begin Note
我相信这是一个类似但不重复的问题服务器故障问题,因为退回的邮件是发往合法电子邮件地址的,目前我可以向该地址发送退回的邮件,而退回的邮件仍在队列中。另一个 Server Fault 问题将我链接到答案,而不是在答案本身中提供答案,这是我过去被记分的地方。
End Note
我的问题是如何在不重启的情况下清除已锁定的 sendmail 系统。以下是一些背景信息:
我有一台 Linux Red Hat Enterprise WS 5 服务器,专门用于传输和接收仪表配置和仪表读数信息。该服务器使用 sendmail 发送少量到中等量的电子邮件。
Linux h2oamr.Somewhereton1.local
2.6.18-348.el5 #1 SMP
Wed Nov 28 21:22:00 EST 2012
x86_64 x86_64 x86_64 GNU/Linux
这个小 shell 脚本每月以 root 身份运行一次,本月,返回了一些内容,显示队列中有一条消息。
#!/bin/bash
#
# sendmail_alive.sh
# Change History:
# Charles M. Norton 12/13/2010
# Fix header, and add su -l -c to send as amr.
/usr/bin/mailq -v > /tmp/mailq.txt
su -l amr -c \
"mail -s 'sendmail status' [email protected] < /tmp/mailq.txt"
以下是我的机器人发送给我的内容:
/var/spool/mqueue (1 request)
-----Q-ID----- --Size-- -Priority- ---Q-Time--- --------Sender/Recipient--------
r3E822QG016051* 1208 31671 Apr 14 04:02 <[email protected]>
<[email protected]>
Total requests: 1
我尝试将电子邮件发送给与队列中滞留的邮件相同的收件人,并且几乎立即到达收件人。但是,原始滞留邮件仍留在 sendmail 队列中。
然后,我尝试了以下命令:
sendmail -bm
sendmail -OTimeout.hoststatus=0m -q -v
但一直收到锁定的 pid 消息。不幸的是,我没有保存锁定的 .pid 消息。
重新启动即可解决问题。
是否有可能在不重新启动的情况下清除队列?如果可以,如何操作?
答案1
尝试找出“为什么消息被锁定?”
您能否发布 ps 报告的相关 sendmail 进程状态?适用于 linux-debian 的版本:ps auxw | grep sendmail。恕我直言,您应该尝试找出应该减少哪个传送超时。
最有可能的嫌疑人:Timeout.connect,Timeout.iconnect。