Exim 重试是基于消息而不是基于主机的?为什么

Exim 重试是基于消息而不是基于主机的?为什么

据我所知,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 - 重试配置 (从上往下第四段)

相关内容