用于解析发现跳出的SMTP日志的工具

时间:2008-10-15 14:24:30

标签: parsing logging smtp zabbix splunk

我们的网络应用程序发送电子邮件。我们有很多用户,我们获得了很多反弹。例如,用户更改公司及其公司的电子邮件不再有效。

要查找退回,我使用日志解析器解析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日志,找到导致它们的退回和电子邮件吗?

5 个答案:

答案 0 :(得分:7)

据我所知,日志文件分析实际上只对检测SMTP会话级别拒绝的邮件有用。在远程MTA接收到传递消息但随后无法传递之后发生的跳出怎么办?

我们使用以下设置在传送到远程MTA后检测并分类所有跳出。

  1. 所有外发邮件都会获得unique return-path header,解码后会识别收件人的电子邮件地址和特定邮件。

  2. Apache James服务器接收返回路径地址的邮件。

  3. 自定义mailet,用Java开发并在Apache James中执行,解码到地址,将电子邮件文本发送到boogietools bounce studio进行跳出类型分类,然后将结果保存到我们的数据库中。

  4. 非常,非常好。我们能够检测到永久性硬弹跳和瞬态软弹跳,这些弹跳进一步分为非常精细的反弹类型,例如垃圾邮件拒绝,不在办公室的回复等。

答案 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地址)跳出的天真模式匹配将不准确。原因如下:

  • 实际失败反弹将会出现延迟警告。
  • 大多数外出和类似的自动回复使用空发件人来防止battlin-bots综合症。
  • 同样,质询 - 响应系统(如* spit * boxbe.com)倾向于使用空发送者。
  • 您的VERP-ed发件人地址(如果每个收件人都是持久性的)将被垃圾邮件发送者收集并作为垃圾邮件目标或反向散射返回。

所以,遗憾的是,唯一可行的方法是检查反弹信息本身。根据RFC1894,它们中的大多数将具有“报告/交付状态”MIME部分,并且根据您选择的语言,可能有库或模块来帮助其他退回格式。我唯一直接体验过的是Perl Mail :: DeliveryStatus :: BounceParser模块,该模块运行良好。