代码之家  ›  专栏  ›  技术社区  ›  Željko Filipin

用于分析查找跳转的SMTP日志的工具

  •  4
  • Željko Filipin  · 技术社区  · 17 年前

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

    为了找到反弹,我使用日志分析器解析了SMTP日志文件。日志来自Microsoft SMTP服务器。

    一些反弹很好,比如 550+#5.1.0+Address+rejected+user@domain.com . 有 user@domain.com 在弹跳中。

    但是有些邮件没有错误消息,比如 550+No+such+recipient .

    我创建了一个简单的Ruby脚本,它分析日志(使用日志分析器)以找出哪些邮件导致了类似 550+否+此类+接收者 .

    我只是很惊讶我找不到一个能做到这一点的工具。我已经找到了zabbix和splunk这样的工具来进行日志分析,但对于如此简单的任务来说,它们看起来太过分了。

    有人知道一个工具可以解析SMTP日志,找到引起它们的跳转和电子邮件吗?

    5 回复  |  直到 7 年前
        1
  •  6
  •   Jorge Ferreira    17 年前

    这个 article 正是你想要的。它是基于伟大的工具 log parser .

    日志分析器是一种功能强大、功能广泛的 提供通用查询的工具 访问基于文本的数据,如日志 文件、XML文件和csv文件,如 以及 Windows®操作系统,如 事件日志、注册表、文件 系统和Active Directory_?你 告诉日志分析器您的信息 需要以及您希望如何处理它。 查询结果可以是 在基于文本的输出中自定义格式, 或者他们可以坚持到更多 特殊目标,如SQL、Syslog或 图表。大多数软件的设计目的是 完成有限数量的 具体任务。日志解析器 不同…有多少种方法 使用受到需求的限制 以及用户的想象力。这个 世界是你的日志数据库 语法分析器。

        2
  •  7
  •   mysomic    16 年前

    据我所见,日志文件分析实际上只对检测在SMTP会话级别被拒绝的邮件有用。在远程MTA接受邮件进行传递,但随后无法传递邮件之后,会发生什么样的反弹?

    我们使用以下设置来检测 分类 在传递到远程MTA之后,所有反弹。

    1. 所有发送的邮件 unique return-path header 在解码时,识别收件人电子邮件地址和特定邮件。

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

    3. 一个定制的邮件,在Java中开发并在Apache杰姆斯中执行,它对地址进行解码,将电子邮件文本发送到 boogietools bounce studio 对于bounce类型分类,然后将结果保存到我们的数据库中。

    它工作得非常非常好。我们能够检测到永久性的硬反弹和暂时性的软反弹,它们进一步被分类为非常细微的反弹类型,如垃圾邮件拒绝、外出回复等。

        3
  •  1
  •   halfer Jatin Pandey    7 年前

    我喜欢LogParser。当我需要解析一些非常具体的、自定义的或者使用正则表达式时,我使用了位脚本。它们实际上有一些我开始使用的示例脚本。一个在 http://www.biterscripting.com/Download/SS_WebLogParser.txt .

        4
  •  0
  •       16 年前

    我在本文的基础上建立了一个bounce counter程序,后来才发现这个方法实际上不适用于大容量发送者,因为SMTP日志不是按顺序排列的。在我的博客文章中有更多关于它的内容: Email Bounce Detection in SMTP Logs and Why It Is Impossible .

        5
  •  0
  •   robc    16 年前

    您不希望解析日志来尝试识别反弹。如果你只看日志的话,你会同时有假阴性和假阳性。

    反弹可能是从交付到的服务器下游生成的。在您的传出服务器日志中,它们看起来像是成功的传递。

    对于传入日志中的跳转(从空发送者到您的一个verp ed地址)的天真模式匹配是不准确的。原因有几个:

    • 会有延迟警告与实际故障反弹混合在一起。
    • 大多数外出和类似的自动应答器使用空发送器来预防Battlin-Bots综合征。
    • 类似地,挑战响应系统(如*spit*boxbe.com)倾向于使用空发送器。
    • 如果每个收件人的verp-ed发送地址都是持久的,则垃圾邮件发送者会收集这些地址,并将其作为垃圾邮件目标或反向散射返回。

    因此,遗憾的是,唯一可靠的方法是检查bounce消息本身。根据RFC1894,它们中的大多数都有一个“报告/交付状态”的mime部分,根据您选择的语言,可能有库或模块来帮助处理其他bounce格式。我唯一有直接经验的是perl mail::deliveryStatus::bounceParser模块,它工作得很好。