我对 exim4 上的消息队列有点困惑。我相信某条消息已经在队列中待了 21 天:
$ sudo exim -bp | head -n 2
21d 5.2K 1YU9Ma-0007Ow-Hf <[email protected]>
[email protected]
但是,考虑到现有的重试规则(我认为应该在 4 天后停止重试),这似乎没有意义:
$ sudo exim -brt yahoo.com
Retry rule: * * F,2h,15m; G,16h,1h,1.5; F,4d,6h;
这是怎么回事?我在日志中搜索了这个消息 ID,结果只找到了以下内容:
$ zgrep 1YU9Ma-0007Ow-Hf /var/log/exim4/mainlog*
/var/log/exim4/mainlog:2015-03-27 12:54:09 1YU9Ma-0007Ow-Hf == [email protected] routing defer (-51): retry time not reached
/var/log/exim4/mainlog:2015-03-27 12:54:13 1YU9Ma-0007Ow-Hf == [email protected] routing defer (-51): retry time not reached
/var/log/exim4/mainlog:2015-03-27 14:41:16 1YU9Ma-0007Ow-Hf == [email protected] routing defer (-51): retry time not reached
/var/log/exim4/mainlog:2015-03-27 14:42:08 1YU9Ma-0007Ow-Hf == [email protected] routing defer (-51): retry time not reached
/var/log/exim4/mainlog:2015-03-27 14:43:23 1YU9Ma-0007Ow-Hf == [email protected] routing defer (-51): retry time not reached
/var/log/exim4/mainlog.1:2015-03-26 13:52:25 1YU9Ma-0007Ow-Hf == [email protected] routing defer (-51): retry time not reached
...
在重试超时过期后,消息还会在队列中停留这么长时间,这有什么原因吗?
答案1
您是否碰巧有一份显示首次尝试发送电子邮件时间的日志?
在我过去见过的大多数情况下,exim 试图将电子邮件发送到不存在的地址,或者将电子邮件发送到不存在的电子邮件帐户。除非您在配置中指定将发送到非活动电子邮件的邮件“黑洞”,否则将发生这种情况,需要手动清理。或者,您可以运行以下命令:
exim -Mrm <message-id>
这将删除该电子邮件。