Linux中國

如何檢測自動生成的電子郵件

當你用電子郵件系統發送自動回復時,你需要注意不要向自動生成的電子郵件發送回復。最好的情況下,你將獲得無用的投遞失敗消息。更可能的是,你會得到一個無限的電子郵件循環和一個混亂的世界。

事實證明,可靠地檢測自動生成的電子郵件並不總是那麼容易。以下是基於為此編寫的檢測器並使用它掃描大約 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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國