David Asked: 2013-01-17 01:21:19 +0800 CST2013-01-17 01:21:19 +0800 CST 2013-01-17 01:21:19 +0800 CST 从 sendmail 队列中删除匹配主题的邮件 772 我正在运行 centos,由于脚本错误,邮件队列中有大量电子邮件。有什么方法可以删除 sendmail 邮件队列中具有特定主题行的邮件。 linux 2 个回答 Voted Best Answer MadHatter 2013-01-17T01:27:04+08:002013-01-17T01:27:04+08:00 这对我来说刚刚好,在测试中(这就是为什么它在代码中嵌入了如此奇怪的主题行)。它依赖于这样一个事实,即在 sendmail 队列中组成消息的两个文件共享相同的文件名,但第一个字符除外。 cd /var/spool/mqueue for file in `grep "Subject:.*litigate gasworks" *|cut -f 1 -d:|cut -c2-`; do echo *${file} ; done 一旦您对它生成的文件列表感到满意,请更改echo为rm. 在像这样弄乱它的队列之前,不要忘记停止 sendmail;如果它下面的队列发生变化,它可能会变得乖戾。 mr.spuratic 2013-02-02T11:51:26+08:002013-02-02T11:51:26+08:00 在 sendmailcontrib/目录中有一个 perl 脚本qtool.pl,可以让您在 sendmail 运行时安全地干预假脱机目录。您可以按年龄、大小、发件人、收件人和主题(以及其他事项)进行删除、退回、移动和过滤。 令人费解的是,它没有包含在主要的 CentOS sendmail 软件包中,你可以在 sendmail-doc rpm 中找到它(感谢 kubanczyk 注意到这一点),或者你可以从源代码分发中提取它(ftp://ftp.sendmail .org/pub/sendmail/sendmail-current.tar.gz)。它具有最小的依赖性,它们都应该是正常 perl 安装的一部分。 要删除消息,请使用-d: qtool.pl -d -e '($msg{headers}->{Subject} =~ /whatever you need/i)' /var/spool/mqueue 将它们移动到离线 mqueue 目录(更安全): mkdir /var/spool/mqueue-junk qtool.pl -e '($msg{headers}->{Subject} =~ /whatever you need/i)' \ /var/spool/mqueue-junk /var/spool/mqueue 注意是“ qtool.pl destination/ source/”。锁定的文件(输出中队列 ID 带有“*”的文件mailq)不会被移动,您可能需要重试才能捕获这些文件。 您可以选择稍后使用 运行该队列sendmail -qR [...] -O QueueDirectory=/var/spool/mqueue-junk。 (qtool.pl已知旧版本无法正确解析标头,您需要省略大多数标头上的第一个字母,例如$msg{headers}->{ubject}而不是{Subject})
这对我来说刚刚好,在测试中(这就是为什么它在代码中嵌入了如此奇怪的主题行)。它依赖于这样一个事实,即在 sendmail 队列中组成消息的两个文件共享相同的文件名,但第一个字符除外。
一旦您对它生成的文件列表感到满意,请更改
echo
为rm
. 在像这样弄乱它的队列之前,不要忘记停止 sendmail;如果它下面的队列发生变化,它可能会变得乖戾。在 sendmail
contrib/
目录中有一个 perl 脚本qtool.pl
,可以让您在 sendmail 运行时安全地干预假脱机目录。您可以按年龄、大小、发件人、收件人和主题(以及其他事项)进行删除、退回、移动和过滤。令人费解的是,它没有包含在主要的 CentOS sendmail 软件包中,你可以在 sendmail-doc rpm 中找到它(感谢 kubanczyk 注意到这一点),或者你可以从源代码分发中提取它(ftp://ftp.sendmail .org/pub/sendmail/sendmail-current.tar.gz)。它具有最小的依赖性,它们都应该是正常 perl 安装的一部分。
要删除消息,请使用
-d
:将它们移动到离线 mqueue 目录(更安全):
注意是“
qtool.pl destination/ source/
”。锁定的文件(输出中队列 ID 带有“*”的文件mailq
)不会被移动,您可能需要重试才能捕获这些文件。您可以选择稍后使用 运行该队列
sendmail -qR [...] -O QueueDirectory=/var/spool/mqueue-junk
。(
qtool.pl
已知旧版本无法正确解析标头,您需要省略大多数标头上的第一个字母,例如$msg{headers}->{ubject}
而不是{Subject}
)