我们的网络应用程序发送电子邮件。我们有很多用户,我们获得了很多反弹。例如,用户更改公司及其公司的电子邮件不再有效。
要查找退回,我使用日志解析器解析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日志,找到导致它们的退回和电子邮件吗?
答案 0 :(得分:7)
据我所知,日志文件分析实际上只对检测SMTP会话级别拒绝的邮件有用。在远程MTA接收到传递消息但随后无法传递之后发生的跳出怎么办?
我们使用以下设置在传送到远程MTA后检测并分类所有跳出。
所有外发邮件都会获得unique return-path header,解码后会识别收件人的电子邮件地址和特定邮件。
Apache James服务器接收返回路径地址的邮件。
自定义mailet,用Java开发并在Apache James中执行,解码到地址,将电子邮件文本发送到boogietools bounce studio进行跳出类型分类,然后将结果保存到我们的数据库中。
非常,非常好。我们能够检测到永久性硬弹跳和瞬态软弹跳,这些弹跳进一步分为非常精细的反弹类型,例如垃圾邮件拒绝,不在办公室的回复等。
答案 1 :(得分:6)
这article正是您正在寻找的。它基于伟大的工具log parser。
日志解析器功能强大,功能多样 提供通用查询的工具 访问基于文本的数据,如日志 文件,XML文件和CSV文件,如 以及关键数据来源 Windows®等操作系统 事件日志,注册表,文件 系统和ActiveDirectory®。您 告诉Log Parser你有什么信息 需要以及如何处理它。 您的查询结果可以是 基于文本的输出自定义格式, 或者他们可以坚持到更多 专业目标,如SQL,SYSLOG或 图表。大多数软件都是为了 完成数量有限的 具体任务。 Log Parser是 不同......它的方式数量 使用仅限于需要 和用户的想象力。该 world是您使用Log的数据库 解析器。
答案 2 :(得分:1)
我喜欢logParser。当我需要解析非常具体或自定义或使用正则表达式的东西时,我使用biterScripting。它们实际上有一些我用来开始的示例脚本。一个是http://www.biterscripting.com/Download/SS_WebLogParser.txt。
答案 3 :(得分:0)
我在这篇文章中建立了一个反弹计数器程序,但稍后才发现这种方法实际上不适用于高容量发件人,因为SMTP日志不是按顺序排列的。我的博文中有更多关于它的内容:Email Bounce Detection in SMTP Logs and Why It Is Impossible。
答案 4 :(得分:0)
您不想解析日志以尝试识别跳出。如果你只看日志,你会有误报和误报。
可能会在您投放到的服务器的下游生成退回。它们看起来像是在外发服务器日志中成功交付。
传入日志(从空发件人到您的某个VERP-ed地址)跳出的天真模式匹配将不准确。原因如下:
所以,遗憾的是,唯一可行的方法是检查反弹信息本身。根据RFC1894,它们中的大多数将具有“报告/交付状态”MIME部分,并且根据您选择的语言,可能有库或模块来帮助其他退回格式。我唯一直接体验过的是Perl Mail :: DeliveryStatus :: BounceParser模块,该模块运行良好。