据我所知,exim 重试应该基于主机,而不是基于消息。这对我来说似乎很有道理;如果主机的服务器超载或以其他方式告诉您“延迟发送消息”,则将导致此问题的消息延迟几个小时似乎不太妥当,但要继续用发往该主机的所有其他消息重击服务器(即,如果 yahoo 说“停止”,您应该停止所有 yahoo 消息!不要只是继续尝试并延迟它们,因为服务器一遍又一遍地告诉您停止!)。
据我所知,Exim 的工作方式应该是这样的,但是:
我的重试规则(针对“大主机”,也就是那些在推迟或阻塞时受到最大影响的主机,我们使用:每 5 小时一次,持续 4 天):
\N^[^@]+@yahoo.\N * F,4d,5h; \N^[^@]+@rogers.\N * F,4d,5h; \N^[^@]+@hotmail.\N * F,4d,5h;
检查exinext的结果:
传输:mx-rogers.mail.am0.yahoodns.net [98.139.214.154/208.83.209.44]:1W1Lmv -0004iy-IL 错误 -45:MAIL FROM: SIZE=13119 之后远程邮件服务器出现 SMTP 错误:主机 mx-rogers.mail.am0.yahoodns.net [98.139.214. 154]:4214。 第一次失败:2014 年 1 月 9 日 15:12:45 最后尝试:2014 年 1 月 9 日 15:12:45 下次尝试:2014 年 1 月 9 日 20:12:45 传输:mx-rogers.mail.am0.yahoodns.net [98.139.214.154/208.83.209.44]:1W1M9J -0007Cj-PV 错误 -45:MAIL FROM: SIZE=13105 之后远程邮件服务器出现 SMTP 错误:主机 mx-rogers.mail.am0.yahoodns.net [98.139.214. 154]:4514。 第一次失败:2014 年 1 月 9 日 15:40:17 最后尝试:2014 年 1 月 9 日 15:40:17 下次尝试时间:2014 年 1 月 9 日 20:40:17 传输:mx-rogers.mail.am0.yahoodns.net [98.139.214.154/208.83.209.47]:1W1Lss -000521-Cf 错误 -45:MAIL FROM:SIZE=13113 之后远程邮件服务器出现 SMTP 错误:主机 mx-rogers.mail.am0.yahoodns.net [98.139.214。 154]:4214。 第一次失败:2014 年 1 月 9 日 15:12:06 最后尝试:2014 年 1 月 9 日 15:12:06 下次尝试时间:2014 年 1 月 9 日 20:12:06
我之所以选择这个例子,是因为它显示了相同的 mx 服务器和 IP(我记得这可能会对重试规则产生影响……)。据我所知,如果 15:12:06 的电子邮件是第一个触发重试的电子邮件,那么 15:40:17 的电子邮件(发往同一主机)至少在 4 小时内不应该被尝试发送。似乎发生的情况是,无论规则如何,它都会在第一次尝试时尝试发送电子邮件。
我们怎样才能解决这个问题?
答案1
我所看到的是它按照设计应该如何工作。
如果消息不属于“队列运行”,则(在这种情况下,当收到消息时)将尝试立即传递。
一次那失败,它将遵守重试次数。虽然您看到每个的“下次尝试”都不同,但当它再次尝试处理这些消息时,它应该遵守主机的重试次数。
参考: Exim - 重试配置 (从上往下第四段)