无需重新启动即可清除 sendmail 队列的步骤是什么?

无需重新启动即可清除 sendmail 队列的步骤是什么?
                    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。

相关内容