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

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

我们的邮件队列中有很多来自某个地址的邮件。我想删除它们。我找到了按主题行删除的方法,但我想按发件人地址搜索,这似乎要棘手得多。(注意:这些主要是外发邮件。)

通过谷歌搜索,我找到了这个命令如何锻造,但没有解释它的作用。

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

我尝试使用 mailqueuemng,但没有取得太大进展(首先,它没有 --help)。

答案1

可以逐步分析管道以了解其功能。尝试按顺序运行每个命令,直到您理解所有命令:

postqueue -p

打印队列

postqueue -p | tail -n +2 

删除前几行

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

搜索任何带有[电子邮件保护];打印这些行的第一个字段。

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

摆脱任何*!

这将输出一堆队列 ID。

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

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

postqueue阅读、tailtr和的手册页postsuper。Awk 更复杂,它是一种自成一派的小语言。您需要的不仅仅是手册页才能理解它的复杂性,尽管根据我的经验,99% 的 awk 用法与该特定的单行代码非常相似。

答案2

抱歉,对已经回答过的问题再添加答案。

这适用于每天必须执行此操作的人(面临垃圾邮件活动的客户)。

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

我还分叉了这个工具并增加了与 zimbra 的兼容性和一些附加功能。

这是原始仓库

以下是我的叉子

安装如下:

git clone https://github.com/moebiuseye/pymailq.git
cd pymailq
git checkout dev

virtualenv venv
source venv/bin/activate

python ./setup.py install
pqshell

相关内容