如何从邮件队列中删除某个地址的所有邮件?

我们在邮件队列中有很多来自某个地址的消息。 我想删除他们中的很多。 我已经find了通过主题行删除的方法,但是我想通过发件人地址进行search,这似乎是一个棘手的问题。 (注意:这些主要是传出的消息。)

一些谷歌search在HowToForge上find了我的这个命令,但是没有解释它的function。

postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } / spammer@example\.net/ { print $1 }' | tr -d '*!' | postsuper -d - 

我正在尝试使用mailqueuemng,但并没有达到很远的距离(它没有一个–help,一件事)。

可以一步一步地分析pipe道,看看它做了什么。 尝试按顺序运行每个命令,直到您全部了解它们:

 postqueue -p 

打印队列

 postqueue -p | tail -n +2 

摆脱了第一对夫妇的线路

 postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } / spammer@example\.net/ { print $1 }' 

[email protected]任何行; 打印这些行的第一个字段。

 postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } / spammer@example\.net/ { print $1 }' | tr -d '*!' 

摆脱任何*!

这将输出一堆队列ID。

最后的命令告诉postfix删除那些队列ID。

阅读postqueuetailtrpostsuper上的Fine Man页面。 awk是一个更复杂的,它是它自己的小语言。 您需要的不仅仅是一个手册页来理解其复杂性,尽pipe根据我的经验,99%的awk使用情况非常类似于特定的一行。

对不起,添加一个已经回答的问题的答案。

这是每天必须这样做的人(面对垃圾邮件的客户)。

有一个人写了“pymailq”,一个可以帮助解决这个问题的工具。

我也分叉了这个工具,并添加了与zimbra的兼容性和一些额外的function。

这是原始的回购

这是我的叉子

安装过程如下所示:

 git clone https://github.com/moebiuseye/pymailq.git cd pymailq git checkout dev virtualenv venv source venv/bin/activate python ./setup.py install pqshell