Spamassassin 將非垃圾郵件標記為垃圾郵件。我該如何這麼說呢?

Spamassassin 將非垃圾郵件標記為垃圾郵件。我該如何這麼說呢?

這是一個關於訓練 Spamassassin 的普遍問題。我有一個新設定的郵件伺服器,它透過 spamassassin 過濾傳入的郵件。我最近收到一份航班預訂被標記為垃圾郵件(評分 5)的郵件,我想告訴 spamassassin 這不是垃圾郵件。 (也許這樣做也會重新發送沒有修改過的 spamassassin 標頭的郵件?)

我嘗試四處搜索,但只找到了有關讓 spamassassin 將郵件標記為垃圾郵件(而不是修復誤報)的內容,或者針對寫電子郵件的人 - 如何不被標記為垃圾郵件的內容。

因此,關於向 Spamassassin 提供有關錯誤呼叫的回饋:

  1. 有沒有辦法從電子郵件用戶端(例如:Thunderbird)中執行此操作

  2. 有沒有辦法透過郵件伺服器上的命令列來執行此操作?

我想讓這個過程盡可能流暢,但無論如何都能完成工作。

SpamAssassin 提供的有關該電子郵件的詳細資訊:

 0.0 FSL_HELO_NON_FQDN_1    No description available.
 0.6 HK_RANDOM_ENVFROM      Envelope sender username looks random
-0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at http://www.dnswl.org/, no trust [82.150.225.129 listed in list.dnswl.org]
-0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3) [82.150.225.129 listed in wl.mailspike.net]
 0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different
 1.0 SPF_SOFTFAIL           SPF: sender does not match SPF record (softfail)
 1.6 SUBJ_ALL_CAPS          Subject is all capitals
 1.1 MIME_HTML_ONLY         BODY: Message only has text/html MIME parts
 0.7 HTML_IMAGE_ONLY_20     BODY: HTML: images with 1600-2000 bytes of words
 0.0 HTML_MESSAGE           BODY: HTML included in message
-0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders
 0.0 UNPARSEABLE_RELAY      Informational: message has unparseable relay lines
 0.0 T_REMOTE_IMAGE         Message contains an external image

顯然,罪魁禍首是全部大寫的主題行 SUBJ_ALL_CAPS 和 MIME_HTML_ONLY (我猜,沒有文字替代)。

該電子郵件是關於航班預訂確認的電子郵件,主題如下:

 Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS

標題:

X-Envelope-From: <[email protected]>
X-Envelope-To: <[email protected]>
Received: from mail1.amadeus.net (unknown)
    by 147-49-15-51.rev.cloud.scaleway.com(Postfix 3.1.0/8.13.0) with SMTP id unknown
    Fri, 20 Jan 2017 07:55:10 +0000
    (envelope-from <[email protected]>
Received: from obeap115 (nat-dns-mnp.amadeus.net [82.150.225.129])
    by mail1.amadeus.net (Postfix) with ESMTP id 3F7A9200042
    for <[email protected]>; Fri, 20 Jan 2017 07:55:10 +0000 (GMT)
From: [email protected]
TO: [email protected]
Message-ID: <CTS/GA/C50D54421A07/[email protected]>
FND-Request-ID: <CTS/GA/C50D54421A07/[email protected]>
Job-ID: 1
Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS
Date: Fri, 20 Jan 2017 07:55:09 +0000
Content-Type: multipart/mixed; 
    boundary="----=_Part_191904_1900935199.1484898909762"
MIME-Version: 1.0

答案1

在這種情況下,有一些具體和一般的建議可能有用。

具體的

這裡的根本問題是鷹航(Garuda Airlines),天哪,他們的小棉襪,正在發送帶有許多垃圾郵件特徵的確認電子郵件。主題行非常粗暴,他們發送純 HTML 電子郵件,其中包含大量圖像和很少文本,信封發件人 ( [email protected]) 顯然是機器構造的隨機數,以及他們(外包)確認系統的電子郵件提供商(amadeus. com) 有一個無用的SPF 記錄(儘管我們所有的建議都是相反的,有些人錯誤地認為列出的記錄有價值一些他們的發送系統和終端~all)。

對此,您無能為力。如果您想確保這些訊息能夠傳達給您,請在您的訊息中添加一行內容,~/.spamassassin/user_prefs說明whitelist_from *@amadeus.com會將這些訊息傳達給您。進一步篡改所觸發的規則的權重可能是一個壞主意。 SpamAssassin (SA) 規則集是透過過濾大量垃圾郵件並找出適用於大部分垃圾郵件的特徵而建立的;透過關閉這些規則,您的收件匣可能會開啟更多內容,而不僅僅是 Garuda 確認電子郵件。

一般的

這正是貝葉斯引擎可以很好處理的情況。它旨在過濾掉不觸發其他規則但包含您不想閱讀的內容的電子郵件,同時幫助過濾確實觸發這些規則但包含您不想閱讀的內容的電子郵件。想讀。

IIRC,如果你不訓練它,引擎將不會做任何事情。訓練它的最簡單方法是維護兩個資料夾,稱為(例如)spamham.spam您將已進入收件匣但您不想要的電子郵件副本放入其中;ham您將違反 SA 但您確實想要的電子郵件副本放入其中,例如此確認電子郵件。

然後每晚(左右)你有一個 cron 作業,上面寫著

sa-learn --spam --mbox mail/spam
sa-learn --ham  --mbox mail/ham

相應地修改路徑。隨著時間的推移,這將告訴引擎您喜歡閱讀什麼,不喜歡閱讀什麼。由於高貝葉斯分數可以為電子郵件的 SA 分數增加 +4.0 分,而低分數可以減去 1.9 分,因此訓練有素的引擎確實可以幫助 SA 區分什麼想讀什麼不 - 但是你必須付出努力去教它

答案2

您似乎正在使用鴿舍。我花了幾週時間試圖找出一個平滑的集成,它允許用戶輕鬆地訓練伺服器端垃圾郵件過濾器,而無需複製郵件。

關鍵部分是反垃圾郵件鴿子插件。反垃圾郵件插件觸發移動三個資料夾組之間的操作:trashunsurespam。具體來說,當偵測到從任何內容(但spam)到 的轉換時,會觸發垃圾郵件學習操作,而當偵測到從到 的spam轉換時,會觸發火腿學習操作。spamunsure

它支援不同的訓練後端。一個簡單的方法是mailtrain,它只是執行一個命令並將郵件放在標準輸入上。其配置可能如下所示:

plugin {
   antispam_backend = mailtrain
   antispam_mail_sendmail = /usr/local/bin/sa-learn-stdin.sh
   antispam_mail_spam = spam
   antispam_mail_notspam = ham
   antispam_mail_sendmail_args = -L
   antispam_spam = Junk;INBOX.Junk
   antispam_trash = Trash;INBOX.Trash
   antispam_allow_append_to_spam = no
}

和...一起/usr/local/bin/sa-learn-stdin.sh

#!/bin/bash
/usr/bin/spamc "$@" >> /tmp/sa-learn-log
exit 0

配置顯示“要學習為垃圾郵件,請運行/usr/local/bin/sa-learn-stdin.sh -L spam;要學習為火腿郵件,請運行/usr/local/bin/sa-learn-stdin.sh -L ham。”參數由antispam_mail_spamantispam_mail_notspam和進行配置antispam_mail_sendmail_args

這已經很不錯了。如果您可以設定客戶端將標記為垃圾郵件的郵件移至垃圾郵件資料夾中,那麼這已經是客戶端和伺服器之間的自動整合。同樣,如果您將伺服器配置為在發送時將分類為垃圾郵件的郵件儲存在垃圾郵件資料夾中(例如使用Sieve),則當使用者將其移出垃圾郵件資料夾時,該郵件將被識別為垃圾郵件。


為了改進與 Thunderbird 和 KMail 的集成,我寫了一個反垃圾郵件補丁,遺憾的是沒有得到上游的任何回饋;使用風險自負

它為反垃圾郵件添加了一個配置選項,只需將其添加到plugindovecot 配置中的部分即可:

   antispam_spam_flags = "Junk;$JUNK"

(引號對於防止$做任何有趣的事情很重要。)

透過該補丁,反垃圾郵件將如果郵件獲得垃圾郵件標誌或遺失所有垃圾郵件標誌,則觸發學習操作。標誌是 IMAP 功能,客戶端使用它來儲存伺服器端的資訊位元。事實證明,Thunderbird 和 KMail 使用這些標誌來儲存郵件的垃圾郵件狀態。

Junk當您將郵件標記為垃圾郵件時,Thunderbird 將設定該標誌。對於$JUNKKMail 標誌也是如此。因此,透過此配置,您可以透過在 KMail 的 Thunderbird 中將郵件標記為垃圾/非垃圾來觸發伺服器端學習。

其他用戶端(例如 K9-Mail)仍然運作良好,因為預設設定是移動垃圾郵件資料夾中的垃圾郵件,反垃圾郵件也會觸發。


我認為你可以實現相同的功能IMAP篩選器。這是我的 TODO,但不幸的是,我目前沒有一個具有足夠新的鴿舍的測試就緒環境。

相關內容