如何检测自动生成的电子邮件
创始人
2024-03-02 03:19:13
0

当你用电子邮件系统发送自动回复时,你需要注意不要向自动生成的电子邮件发送回复。最好的情况下,你将获得无用的投递失败消息。更可能的是,你会得到一个无限的电子邮件循环和一个混乱的世界。

事实证明,可靠地检测自动生成的电子邮件并不总是那么容易。以下是基于为此编写的检测器并使用它扫描大约 100,000 封电子邮件(大量的个人存档和公司存档)的观察结果。

Auto-submitted 信头

RFC 3834 定义。

这是表示你的邮件是自动回复的“官方”标准。如果存在 Auto-Submitted 信头,并且其值不是 no,你应该发送回复。

X-Auto-Response-Suppress 信头

由微软定义。

此信头由微软 Exchange、Outlook 和其他一些产品使用。许多新闻订阅等都设定了这个。如果 X-Auto-Response-Suppress 包含 DR(“抑制投递报告”)、AutoReply(“禁止 OOF 通知以外的自动回复消息”)或 All,你应该发送回复。

List-Id 和 List-Unsubscribe 信头

RFC 2919) 定义。

你通常不希望给邮件列表或新闻订阅发送自动回复。几乎所有的邮件列表和大多数新闻订阅都至少设置了其中一个信头。如果存在这些信头中的任何一个,你应该发送回复。这个信头的值不重要。

Feedback-ID 信头

由谷歌定义。

Gmail 使用此信头识别邮件是否是新闻订阅,并使用它为这些新闻订阅的所有者生成统计信息或报告。如果此信头存在,你应该发送回复。这个信头的值不重要。

非标准方式

上述方法定义明确(即使有些是非标准的)。不幸的是,有些电子邮件系统不使用它们中的任何一个 :-( 这里有一些额外的措施。

Precedence 信头

RFC 2076 中没有真正定义,不鼓励使用它(但通常会遇到此信头)。

请注意,不建议检查是否存在此信头,因为某些邮件使用 normal 和其他一些(少见的)值(尽管这不常见)。

我的建议是如果其值不区分大小写地匹配 bulkauto_replylist,则发送回复。

其他不常见的信头

这是我遇到的另外的一些(不常见的)信头。如果设置了其中一个,我建议发送自动回复。大多数邮件也设置了上述信头之一,但有些没有(这并不常见)。

  • X-MSFBL:无法真正找到定义(Microsoft 信头?),但我只有自动生成的邮件带有此信头。
  • X-Loop:在任何地方都没有真正定义过,有点罕见,但有时有。它通常设置为不应该收到电子邮件的地址,但也会遇到 X-Loop: yes
  • X-Autoreply:相当罕见,并且似乎总是具有 yes 的值。

Email 地址

检查 FromReply-To 信头是否包含 noreplyno-replyno_reply(正则表达式:^no.?reply@)。

只有 HTML 部分

如果电子邮件只有 HTML 部分,而没有文本部分,则表明这是一个自动生成的邮件或新闻订阅。几乎所有邮件客户端都设置了文本部分。

投递失败消息

许多传递失败消息并不能真正表明它们是失败的。一些检查方法:

  • From 包含 mailer-daemonMail Delivery Subsystem

特定的邮件库特征

许多邮件类库留下了某种痕迹,大多数常规邮件客户端使用自己的数据覆盖它。检查这个似乎工作得相当可靠。

  • X-Mailer: Microsoft CDO for Windows 2000:由某些微软软件设置;我只能在自动生成的邮件中找到它。是的,在 2015 年它仍然在使用。
  • Message-ID 信头包含 .JavaMail.:我发现了一些(5 个 50k 大小的)常规消息,但不是很多;绝大多数(数千封)邮件是新闻订阅、订单确认等。
  • ^X-MailerPHP 开头。这应该会同时看到 X-Mailer: PHP/5.5.0X-Mailer: PHPmailer XXX XXX。与 “JavaMail” 相同。
  • 出现了 X-Library;似乎只有 Indy 设定了这个。
  • X-Mailerwdcollect 开头。由一些 Plesk 邮件设置。
  • X-MailerMIME-tools 开头。

最后的预防措施:限制回复的数量

即使遵循上述所有建议,你仍可能会遇到一个避开所有这些检测的电子邮件程序。这可能非常危险,因为电子邮件系统只是“如果有电子邮件那么发送”,就有可能导致无限的电子邮件循环。

出于这个原因,我建议你记录你自动发送的电子邮件,并将此速率限制为在几分钟内最多几封电子邮件。这将打破循环链条。

我们使用每五分钟一封电子邮件的设置,但没这么严格的设置可能也会运作良好。

你需要为自动回复设置什么信头

具体细节取决于你发送的邮件类型。这是我们用于自动回复邮件的内容:

Auto-Submitted: auto-replied
X-Auto-Response-Suppress: All
Precedence: auto_reply

反馈

你可以发送电子邮件至 martin@arp242.net创建 GitHub 议题以提交反馈、问题等。


via: https://arp242.net/weblog/autoreply.html

作者:Martin Tournoij 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

捕捉发送至无回复电子邮件地...
要捕捉发送至无回复电子邮件地址的反弹邮件,你可以使用SMTP库来发...
2025-01-12 16:01:37
捕捉电子邮件正文中的第n个...
要捕捉电子邮件正文中的第n个URL出现,可以使用Python的正则...
2025-01-12 16:01:12
捕捉Excel信息并通过电...
要捕捉Excel信息并通过电子邮件发送它们,可以使用Python的...
2025-01-12 16:00:21
不知道为什么在URL中看到...
这可能是因为在登录表单中使用了GET方法而不是POST方法。GET...
2025-01-12 10:01:07
不知道如何在Wicket中...
在Wicket中实现在登录后从电子邮件重定向到网址,可以使用以下代...
2025-01-12 08:01:43
不允许特定的特殊字符出现在...
可以使用以下正则表达式来验证电子邮件地址,该正则表达式不允许特定的...
2025-01-11 12:31:33

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...