如何对多个 Web 服务器进行集中出站电子邮件监控?

如何对多个 Web 服务器进行集中出站电子邮件监控?

我有一个由多个 Web 服务器组成的应用程序,它们使用 JavaMail 通过 gmail smtp 服务器发送外发邮件。

我希望对邮件发送进行一些集中监控和控制,因此我可能需要引入一个本地邮件服务器,通过该服务器发送来自 Web 服务器的所有出站邮件。我希望(我认为)能够从客户端(Web 服务器之一)查询新引入的本地邮件服务器以检索每条消息的发送状态,并且为了使此功能有用,本地邮件服务器理想情况下需要一些上下文信息,当邮件排队等待发送时提供这些信息,这些信息链接回 Web 服务器上有意义的内容(即事务 ID)。

邮件服务器将为支持团队提供一个工具来查看排队等待发送、已发送和未送达的消息,并具有一些不错的搜索功能和高级统计数据。

有人能评论一下这是否是一个合理的策略吗?是否有任何邮件服务器产品可以满足这些要求而无需太多定制?我偶然发现了 Apache James,但我遇到的文档是在 API 级别,而且我没有看到任何 GUI 监控工具的证据。

谢谢。

答案1

您可以让您的 Web 服务器仅在收到来自邮件服务器的最终“250 OK”时才认为“发送事务”已完成。如果没有收到,则应重试发送。这应该可以解决 smtp 服务器在接收时失败时出现的永久丢失问题。

SMTP 服务器本身具有在发生故障时不断重试发送电子邮件几次(可配置)的逻辑。如果电子邮件无法送达,您将收到退回邮件,然后应评估要做什么(重试或放弃,取决于退回的原因)。

由于退回可能是异步的,因此构建特定消息的查询接口有点困难,您可能能够发送消息,但在几小时甚至几天后仍会收到退回邮件。因此,消息的状态可能会从“已发送到 smtp 服务器”更改为“已退回”。

您可以构建一个您支持的 Web 服务,只需解析来自 Web 服务器的退回邮件和日志即可进行查询。

如果您安装了本地邮件服务器,则可以对配置进行更多操作(如您所述,重试多少次、何时重试等)。但邮件“投递”后仍可能会被退回……

相关内容