【问题标题】:How to accurately parse smtp message status code (DSN)?如何准确解析 smtp 消息状态码(DSN)?
【发布时间】:2009-08-06 13:53:06
【问题描述】:

RFC1893 声称状态码将采用以下格式,您可以阅读更多here

但我们的退回邮件管理系统很难从退回邮件中解析错误状态代码。我们能够获取原始消息,但根据电子邮件服务器的不同,代码将出现在不同的位置。是否有关于如何解析此类消息以获得更好结果的规则。我们不是在寻找 100% 的解决方案,而是至少 80% 的解决方案。

本文档定义了一组新的状态码来报告邮件系统 条件。这些状态代码旨在用于媒体和 语言独立状态报告。它们不适合 系统特定的诊断。

新状态码的语法 定义为:

      status-code = class "." subject "." detail
      class = "2"/"4"/"5"
      subject = 1*3digit
      detail = 1*3digit

空白字符和 cmets 不允许在状态中使用-
代码。内的每个数字子代码 必须表达状态码
没有前导零数字。

上面来自 RFC 的引用说明了一件事,但下面来自一个领先的退回管理工具的文字说明了一些不同的内容,我可以从中获得标准状态代码的良好来源:

返回码说明
0 UNDETERMINED -(即收件人回复)
10 次硬弹 - (即用户未知)
20 SOFT BOUNCE - 一般
21 SOFT BOUNCE - Dns 失败
22 SOFT BOUNCE - 邮箱已满
23 SOFT BOUNCE - 消息太大
30 弹跳 - 没有电子邮件地址。非常罕见!
40 普通反弹
50 邮件块 - 常规
51 MAIL BLOCK - 已知的垃圾邮件发送者
52 邮件块 - 检测到垃圾邮件
53 邮件块 - 检测到附件
54 邮件块 - 中继被拒绝
60 自动回复 - (即不在办公室)
70 瞬态反弹
80 订阅请求
90 取消订阅/删除请求
100 挑战回应

【问题讨论】:

  • “领先工具”的状态码是他们自己的“时事通讯”管理系统的专有代码。 DSN 没有提及订阅或垃圾邮件。看看tools.ietf.org/html/rfc3463

标签: email email-bounces


【解决方案1】:

我不确定这是一个完整的答案,但this algorithm for detecting bounces 可能有用。

【讨论】:

  • 这对史蒂文很有帮助。您是否将这个项目用于您的任何开发项目?
  • 不能说我有,但它看起来确实解决了您正在处理的相同问题。我不知道你的开发环境,所以我同样不能说你是应该考虑按原样使用那个项目还是根据你的需要调整正则表达式算法。但是任何工作示例都必须比干 RFC 更好。
  • 您的链接已失效。
猜你喜欢
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
相关资源
最近更新 更多