我们的网络应用程序发送电子邮件。我们有很多用户,并且有很多跳出率。例如,用户更换公司,他的公司电子邮件不再有效。
为了查找退回邮件,我使用日志解析器解析 SMTP 日志文件。日志来自 Microsoft SMTP 服务器。
有些退回邮件效果很好,例如 550+#5.1.0+Address+rejected+user@domain.com
。退回邮件中有 user@domain.com
。
但有些错误消息中没有电子邮件,例如 550+No+such+recipient
。
我创建了简单的 Ruby 脚本,用于解析日志(使用日志解析器)来查找哪些邮件导致了类似 550+No+such+recipient
的情况。
我只是很惊讶我找不到可以做到这一点的工具。我找到了 Zabbix 和 Splunk 等用于日志分析的工具,但对于如此简单的任务来说,它们看起来有点大材小用。
有人知道可以解析 SMTP 日志、查找退回邮件和导致这些日志的电子邮件的工具吗?
最佳答案
据我所知,日志文件分析实际上仅对检测在 SMTP session 级别被拒绝的邮件有用。远程 MTA 已接受要传送的邮件但随后未能传送该邮件后发生的退回邮件会怎样?
我们使用以下设置来检测传送到远程 MTA 后的所有退回邮件并对其进行分类。
所有外发邮件都会被赋予 unique return-path header解码后,可识别收件人电子邮件地址和特定邮件。
安 Apache James接收返回到返回路径地址的邮件的服务器。
自定义邮件,用 Java 开发并在 Apache James 中执行,解码收件人地址,将电子邮件文本发送到 boogietools bounce studio用于反弹类型分类,然后将结果保存到我们的数据库中。
效果非常非常好。我们能够检测永久性硬退回邮件和暂时性软退回邮件,这些退回邮件进一步分为非常细粒度的退回邮件类型,例如垃圾邮件拒绝、外出回复等。
关于parsing - 用于解析 SMTP 日志以查找退回邮件的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/204910/