我正在配置一个自定义邮件队列。问题是发送邮件时可能会出错。通常,人们不知道邮件未到达目的地的原因。因此,最简单的解决方案是尝试再次发送邮件。以下是我从口中知道的一些算法:
- 复制队列中的时间,以便从某个时间开始下次重试:1 分钟、2 分钟、4 分钟等。
- 指定一系列间隔(是上一个选项的一般情况):5 分钟、5 分钟、10 分钟、30 分钟等。
有时候,再次尝试发送邮件是没有意义的。无论如何,系统包含未发送邮件的日志。
您对此事的良好做法了解多少?什么是“良好”的持有间隔?至少,我应该考虑哪些事实来选择间隔?
答案1
你必须遵循 RFC 5321,其中明确规定了如何实现重试策略:https://www.rfc-editor.org/rfc/rfc5321#section-4.5.4
当您尝试实现自己的邮件服务器时,您必须完全阅读(并理解!)此 RFC。但我必须明确强调,几乎没有必要实现自己的邮件服务器(客户端)。已经有很多现成的(经过测试的!)解决方案,这些解决方案可以持续使用数年甚至数十年。因此,请使用现有软件,而不是从头开始。这不值得您遇到的麻烦。您知道 IPv6 吗?如果不知道,您应该知道!