![SMTP 服务器:当接收连接被拒绝时,自动重试的支持程度如何?](https://linux22.com/image/556702/SMTP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9A%E5%BD%93%E6%8E%A5%E6%94%B6%E8%BF%9E%E6%8E%A5%E8%A2%AB%E6%8B%92%E7%BB%9D%E6%97%B6%EF%BC%8C%E8%87%AA%E5%8A%A8%E9%87%8D%E8%AF%95%E7%9A%84%E6%94%AF%E6%8C%81%E7%A8%8B%E5%BA%A6%E5%A6%82%E4%BD%95%EF%BC%9F.png)
当邮件服务器显示“连接被拒绝”时,假设邮件服务器重新上线,则电子邮件将在以后的尝试中发送。这项支持有多好?所有邮件服务器都支持这项功能吗?只有更强大的邮件服务器才支持吗?这是事实上的标准还是规范?
答案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天。