进出口和清除无效电子邮件

进出口和清除无效电子邮件

我现在有一个包含超过 1000 封电子邮件的 Exim 队列,我想运行该队列并删除所有无效电子邮件(不再存在的电子邮件)

答案1

exiqgrep -i -f [luser]@domain | xargs exim -Mrm

答案2

如果邮件在队列中并且被冻结,下面的方法应该可以工作——但是我还没有测试过,如果它变得有意识并吞噬了你的邮件服务器,我也不承担任何责任

for i in `mailq | grep "\*\*\* frozen \*\*\*" | cut -f 3 -d " "` ; do exim -Mrm $i ; done

如果需要命中非冻结消息,请根据需要更改 grep 模式(如果您有信心可以删除,这是最简单的方法一切在队列中,并确保以可以运行 exim -Mrm 和 mailq 的用户身份运行 - 您可能需要在sudo之前插入...mailqexim -Mrm

此外,几乎可以肯定,使用 xargs 而不是内置和反引号可以更简洁地完成此操作for。希望有人能尽快解决这个问题 :-)

答案3

扫描文件中/var/spool/exim4/msglog是否存在无效地址。

您可以使用类似 (使用无效地址) 的命令将地址标记为已送达 cd /var/spool/exim4/msglog; for msg in $(grep -l address); do exim4 -Mmd $msg address

您可以使用命令清除消息cd /var/spool/exim4/msglog; exim4 -M *。这将尝试传递队列中的所有消息。

您可以使用别名阻止传入到旧地址的邮件,/etc/aliases例如:

address : :fail: No longer here

请参阅man exim4man aliases以了解更多信息。

相关内容