【问题标题】:Finding "bad email addresses" in a mailbox在邮箱中查找“错误的电子邮件地址”
【发布时间】:2011-05-25 07:22:38
【问题描述】:
我拥有对 POP3 邮箱的编程访问权限以及对存储在数据库中的存档电子邮件的访问权限。我的目标是找出错误的电子邮件地址——返回(退回)电子邮件的电子邮件地址,其状态或消息如下:
- 无法投递的邮件
- 交付状态通知(失败)
- 未送达的邮件退回给发件人
- 来自 mailer-daemon 或 postmaster 等人员的电子邮件
有没有办法在不使用“启发式”的情况下过滤掉此类电子邮件?很容易扫描主题以查找“无法投递”之类的词或“mailer-daemon”之类的发件人,但如果有的话,我想要一个更好的解决方案。
请注意,我可以访问所有 POP3/数据库存档电子邮件的邮件标头。有没有我可以使用的标头?
【问题讨论】:
标签:
email
header
smtp
pop3
【解决方案1】:
一些邮件服务器实现RFC 3464。这样做的人通常会生成传递状态通知,其消息头 Content-Type 为 multipart/report 和三个组成部分(text/plain、message/delivery-status 和 message/rfc822)。因此,您可以检测消息的这些特征并相应地进行处理。消息通常如下所示:
来自:“邮件传递系统”
主题:交付状态通知(失败)
内容类型:多部分/报告; report-type=delivery-status
内容类型:文本/纯文本
交付状态通知的人类可读解释。
内容类型:消息/交付状态
传递状态通知的结构化机器可读原因。
内容类型:message/rfc822
原始消息。
对于那些以非结构化格式生成传递状态通知的邮件服务器,可能仍然需要通过分析 From: 和 Subject: 邮件标题的文本来检测它们的通知。