SMTP 服务器:当接收连接被拒绝时,自动重试的支持程度如何?

SMTP 服务器:当接收连接被拒绝时,自动重试的支持程度如何?

当邮件服务器显示“连接被拒绝”时,假设邮件服务器重新上线,则电子邮件将在以后的尝试中发送。这项支持有多好?所有邮件服务器都支持这项功能吗?只有更强大的邮件服务器才支持吗?这是事实上的标准还是规范?

答案1

如上所述,它在 RFC 5321 中进行了描述,但不幸的是,SMTP 服务器中的实现有所不同。至少有以下几种情况:

  • 每 5 秒重试一次
  • 每隔一小时
  • 尝试间隔时间加倍
  • 以 5、10、15、20 分钟为步长重试……
  • 永不重试

一些服务器甚至区分 4xy 重试代码、连接丢失、超时、网络不可达和其他临时错误,并对每种情况采取不同的行为。

总结一下:即使有标准,你也必须承认它不能依赖于实施。

答案2

SMTP 服务器通常会尝试几天才能传递邮件。RFC 5321 简单邮件传输协议第 6.1 节 可靠的递送和电子邮件回复4.5.4 重试策略

编辑

添加了 RFC 摘录:

当接收方 SMTP 接受一封邮件(通过发送“250 OK”消息来响应 DATA)时,它就承担了投递或中继该邮件的责任。它必须认真对待这一责任。它绝不能因为一些无关紧要的原因而丢失邮件,例如主机后来崩溃或可预见的资源短缺。

...

无法立即传输的邮件必须排队并由发件人定期重试。

...

重试持续到消息传送完成或者发送者放弃为止;放弃时间一般需要至少4-5天。

相关内容