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