Linux shell脚本,用于从exim队列中删除2天前冻结的电子邮件



我想把shell脚本放在cron作业下,该作业将执行以下操作:

1) 删除Exim队列中的2天前的电子邮件,这些邮件是被退回/冻结的邮件,不会发送。脚本不能删除合法的消息,这些消息只是在等待传递。

2) 删除来自无效发件人(如null或<>)的邮件和/或发送给无效收件人nobody或<>

非常感谢。

exiqgrep是您的朋友!您可以很容易地找到符合特定条件的队列项目,并将找到的消息id:s通过管道发送到remove命令。例如:

exiqgrep -z -o 172800 -i | xargs -r exim -Mrm 

其翻译如下:找到冻结(-z)且超过两天(-o 172800)的队列项目(exiqgrep),并将其消息id:s(-i)输出到xargs,该xargs仅在获得任何输入(-r)时运行,该输入告诉exim删除(-Mrm)具有给定消息id:s的项目。

Null(或<>)发件人肯定不是无效的!反弹和其他(非)交付报告通常从空地址发送,以避免在反弹无法交付的情况下出现无限循环。然而,如果你的队列中有很多这样的东西,并且它们在那里停留很长时间(例如,如果你试图反弹从假地址发送的垃圾邮件),你当然也可以清理它们。例如:

exiqgrep -o 86400 -f '<>' -i | xargs -r exim -Mrm

其查找具有空发件人的早于一天的队列项目并将其删除。

编辑:您也可以在exim.conf中设置以下选项,以在两天后自动删除冻结反弹:

ignore_bounce_errors_after = 2d

相关内容

  • 没有找到相关文章

最新更新