Sendmail:清除/删除/刷新邮件队列
时间:2020-01-09 10:42:07 来源:igfitidea点击:
如何使用UNIX/Linux命令提示符永久删除Sendmail邮件服务器(SMTP)队列中的所有电子邮件?
您可以使用mailq
命令sendmail -bp
命令来显示排队等待将来传送的邮件的摘要。
执行以下命令:
# mailq
或者
# sendmail -bp
输出示例:
/var/spool/mqueue (1 request) -----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient---------- p61J75u5037681 893 Fri Jul 1 14:07 8BITMIME (Deferred: Connection timed out with example.com.) Total requests: 1
如果要清除队列中的所有消息,则可以cd到/var/spool/mqueue并删除所有文件:
# cd /var/spool/mqueue/ # ls # rm *
qtool.pl工具
Sendmail邮件服务器不提供任何命令从邮件队列中删除邮件。
上面的内容将从邮件队列中删除所有消息。
您可以使用位于sendmail源代码contrib目录中的qtool.pl脚本,如下所示:
# mailq
输出示例:
/var/spool/mqueue (1 request) -----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient---------- p61J75u5037681 893 Fri Jul 1 14:07 8BITMIME (Deferred: Connection timed out with example.com.) Total requests: 1
记下Q-ID p61J75u5037681并按以下方式运行qtool.pl:
# ./qtool.pl -C /etc/mail/sendmail.cf -d /var/spool/mqueue/p61J75u5037681
其中:
-C/etc/mail/sendmail.cf
指定sendmail配置文件。-d/var/spool/mqueue/p61J75u5037681
删除源指定的消息。在这种情况下,通过Q-ID。
删除所有排队进入example.com域的邮件。
首先,您需要使用mailq命令或者手动设置QIDS,如下所示:
QIDS="qid1 qid2 qidN"
或者
QIDS="$(mailq | grep -B1 'example.com' | grep '^[a-z]' | awk '{print }' | sed 's/\*$//')"
使用以下bash for循环删除example.com的所有消息:
for q in $QIDS do /usr/local/bin/qtool.pl -C /etc/mail/sendmail.cf -d /var/spool/mqueue/$q done