如何在 Zimbra 中安全地設定 SpamAssassin 自訂規則

應該編輯 Zimbra SpamAssassin 的哪個檔案?

對於 Zimbra Collaboration Suite 8.5 及更高版本,Zimbra 文件將本機 SpamAssassin 自訂設定放置在 `<path>` 目錄下/opt/zimbra/data/spamassassin/localrules。副檔名為 `.spamAssassin.rule` 的規則檔案.cf可以放在這裡;Zimbra 範例使用單獨的檔案來存放自訂規則。較早的 Zimbra 版本使用不同的位置,因此在編輯之前,請先驗證伺服器上的版本和目錄。目前軟體包佈局也可能因版本或部署而異。

本指南新增了一條小型的、可逆的全站規則,檢查了其語法,重新載入了郵件掃描服務,並驗證了郵件是否已送達。本指南假設您管理 Zimbra MTA。如果您執行多個 MTA 伺服器,請在每台掃描入站郵件的伺服器上套用此檔案並重新載入 SpamAssassin。

Zimbra 的自訂 SpamAssassin 規則指南記錄了 localrules 路徑和zmamavisdctl restart命令。其反垃圾郵件指南區分了較早的 ZCS 8 配置與 ZCS 8.5 及更高版本。

自訂規則會改變什麼?

SpamAssassin 規則會偵測郵件特徵,指派一個符號規則名稱,並計算一個分數。 SpamAssassin 會將該分數與其他測試結果結合。然後,Zimbra 會套用其配置的垃圾郵件處理閾值。規則本身並不能保證郵件一定會被放入垃圾郵件箱或被拒絕:郵件的其他評分以及伺服器的設定都至關重要。

在選擇評分標準時,這種差異至關重要。先從一個適中的值開始,檢查誤報情況,只有在測試顯示訊號可靠時才提高評分。切勿在未檢查自身所需的垃圾郵件評分和丟棄閾值的情況下,直接照搬範例中的高分值。

在修改任何內容之前,您應該確認哪些資訊?

  • 版本和路徑:請檢查您的 Zimbra 版本以及該路徑是否/opt/zimbra/data/spamassassin/localrules存在。根據 Zimbra 的文檔,本指南中的路徑適用於 ZCS 8.5 及更高版本。請勿假定其適用於更早的版本。
  • 哪些主機負責掃描郵件:識別所有執行 Amavis/SpamAssassin 的郵件傳輸代理程式 (MTA)。安裝在一台伺服器上的規則不會自動出現在另一台獨立的 MTA 上。
  • 規則意圖:選擇具體、可重複的訊息訊號。避免使用符合「免費」或「優惠」等寬泛詞語而缺乏額外證據的規則。
  • 回滾:在修改任何現有文件之前,請先對其進行記錄。新規則請使用新的、描述性的檔案名,切勿.cf意外覆蓋現有文件。

這些是伺服器層級的自訂設置,而非郵箱過濾器。所有郵件經過已設定掃描器的使用者都可能受到影響。

如何寫一條簡單的規則?

SpamAssassin 支援多種規則類型,例如`<header> header`、 `<body>` body、 `<body> uri` 和 ` meta<body>`。當郵件主題或郵件頭值是特定訊號時,`<header>` 規則非常有用。 `<body>` 規則搜尋文本郵件內容;SpamAssassin 的文檔指出,普通的 `<body>` 規則作用於解碼後的文本,預設會將主題視為郵件正文的一部分。當條件明確與連結相關時,請使用 `<URI>` 規則。

這裡提供一個刻意縮小範圍的範例:當測試郵件的主題包含特定短語時,系統會略微加分。請將該短語替換為您在自己的郵件中驗證過的信號;此範例並非通用的垃圾郵件特徵。

header LOCAL_SUBJECT_REVIEW Subject =~ /\bExample Vendor Alert\b/i
score LOCAL_SUBJECT_REVIEW 2.0
describe LOCAL_SUBJECT_REVIEW Subject contains the review phrase

符號名稱應唯一,並包含字母、數字和底線。該header行用於定義匹配項,score控制匹配成功時添加的分數,並describe在 SpamAssassin 的報告中提供解釋。描述應簡潔明了,並讓其他管理員清楚地了解此測試存在的意義。

SpamAssassin 的配置參考文件詳細介紹了郵件頭和郵件正文的規則語法、評分機制以及正規表示式。已安裝的 Zimbra SpamAssassin 版本可能與最新的 Apache 文件有所不同,因此在確認本機支援之前,請勿依賴較新的規則功能。

如何在 Zimbra 8.5 及更高版本上安裝規則?

  1. 使用管理員帳戶連線到 MTA,該帳戶可以切換到 Zimbra 服務帳戶。
  2. 檢查安裝目錄和本機規則目錄。例如:
    su - zimbra
    ls -ld /opt/zimbra/data/spamassassin/localrules
  3. 選擇一個尚不存在的檔案名,例如local_subject_review.cf。先檢查:
    ls -l /opt/zimbra/data/spamassassin/localrules/local_subject_review.cf
    如果該檔案已存在,請檢查並選擇另一個名稱,而不是覆蓋它。
  4. 以您擁有編輯器的使用者身分建立新文件zimbra,並新增以上三行規則:
    vi /opt/zimbra/data/spamassassin/localrules/local_subject_review.cf
  5. 儲存文件,然後確認所有者和內容:
    ls -l /opt/zimbra/data/spamassassin/localrules/local_subject_review.cf
    cat /opt/zimbra/data/spamassassin/localrules/local_subject_review.cf

如果目錄缺失,請停止操作並確認 Zimbra 版本及其文件中記錄的配置佈局。請勿在猜測的位置建立名稱相似的目錄;SpamAssassin 不一定會載入它。

應該如何驗證並重新加載?

重新載入前執行 SpamAssassin 的語法檢查。 Apache 命令列文件將其描述--lint為規則集和設定語法檢查。以 Zimbra 使用者身分執行該可執行檔(spamassassin --lint如果該可執行檔在 Zimbra 環境中可用)。如果找不到該命令或該命令無法載入 Zimbra 的配置,請找到捆綁的可執行文件,並使用與版本對應的配置路徑,而不是在不相關的系統安裝上進行測試。乾淨的 lint 結果只檢查語法,並不能證明您的模式能夠匹配您預期的訊息。

SpamAssassin 的命令參考文件解釋了 lint 選項。驗證成功後,以該zimbra使用者重新啟動 Amavis,以便掃描器載入變更後的規則:

zmamavisdctl restart

Zimbra 的自訂規則範例使用了此服務命令。在多 MTA 安裝中,請對每個適用的掃描器重複執行檔案部署和服務重新啟動操作。如果您的版本使用不同的服務指令,請參閱該版本的 Zimbra 文件。

如何判斷規則是否有效?

透過使用者使用的相同入站路由發送一條受控測試訊息。一則訊息使用規則中的完整主題短語,另一則訊息則不使用。檢查已送達訊息的原始標頭,特別X-Spam-Status是其中的 ` <head> LOCAL_SUBJECT_REVIEW` 和 `<score>` 屬性。比較這兩個訊息,並查看 Zimbra 將每個訊息分別發送到了何處。

如果規則僅出現在預期的測試中,且總分符合預期處理結果,則此結果有用。如果測試名稱缺失,請驗證郵件是否經過此郵件傳輸代理程式 (MTA),檔案名稱是否以 `.` 結尾.cf,檔案是否位於正確的本機規則目錄中,掃描器是否已成功重啟,以及樣本是否確實與正規表示式相符。請注意,郵件用戶端可能會在其常規視圖中隱藏診斷標頭;請開啟郵件原始碼或查看完整標頭。

如果規則產生誤報或不符怎麼辦?

  • 符合的合法郵件過多:降低分數或縮小正規表示式的範圍。在提高分數之前,請使用包含預期郵件和垃圾郵件的範例進行測試。
  • 沒有符合的訊息:請檢查確切的標頭名稱、不區分大小寫的正規表示式、轉義字元、檔案副檔名、路徑以及服務重新啟動情況。對於 URL,評估規則uri而非假設正文規則是最佳測試方法。
  • Lint 報告錯誤:請修正指定行,並在重新啟動前重新執行 lint。格式錯誤的自訂規則可能會導致配置問題或阻止預期測試載入。
  • 規則已顯示,但郵件仍留在收件匣中:如果該規則的加分未使總分超過您設定的垃圾郵件閾值,則此情況屬於正常現象。請查看完整X-Spam-Status分數和本地處理閾值。

要回滾,請僅刪除您新增的自訂文件,然後重新啟動 Amavis。如果您更改了現有文件,請恢復其已儲存的副本,並在重新載入之前驗證配置。請保留一份簡短的更改日誌,記錄規則的用途、評分、測試訊息和回滾檔案名,以便未來的管理員可以重新評估。

版本和行為限制

Zimbra 發布的路徑指南明確涵蓋了 ZCS 8.5 及更高版本,並針對早期版本提供了不同的佈局說明。捆綁的 SpamAssassin 版本和閾值取決於特定的安裝情況。有效的規則在不同的郵件格式、中繼和郵件流路徑下也可能表現不同。請查閱已安裝版本的文檔,在受控路由上進行測試,並根據郵件頭和真實的誤報樣本來判斷結果,而不僅僅是根據規則文字。

留下評論

如何在 Zimbra 中安全地設定 SpamAssassin 自訂規則

如何在 Zimbra 中安全地設定 SpamAssassin 自訂規則

了解 Zimbra 在何處載入自訂 SpamAssassin 規則、如何編寫和驗證 .cf 規則、重新啟動 Amavis、測試郵件頭以及如何安全地回溯。

如何在 Zimbra CE 中備份和還原單一郵箱

如何在 Zimbra CE 中備份和還原單一郵箱

使用 zmmailbox 備份和還原單一 Zimbra CE 郵箱。匯出包含元資料的 ZIP 存檔,進行驗證,並在測試帳戶中安全地測試復原功能。

如何在 ownCloud oCIS 中為使用者配置儲存配額

如何在 ownCloud oCIS 中為使用者配置儲存配額

了解如何為 ownCloud Infinite Scale 使用者設定個人空間配額,將其與專案空間和全域限制區分開來,並按角色為新使用者指派預設值。

修復 BigBlueButton FreeSWITCH SIP 註冊逾時問題:實用診斷指南

修復 BigBlueButton FreeSWITCH SIP 註冊逾時問題:實用診斷指南

透過檢查服務運作狀況、SIP 和 ESL 監聽器、NAT 位址、防火牆規則和日誌來診斷 BigBlueButton FreeSWITCH SIP 註冊逾時問題。

如何修復 ownCloud 行動應用程式「連線被拒絕」錯誤

如何修復 ownCloud 行動應用程式「連線被拒絕」錯誤

透過檢查伺服器 URL、HTTPS 連接埠、Web 伺服器、防火牆、代理、TLS 和受信任的網域來修復 ownCloud 行動應用程式連線被拒絕的錯誤。

如何在自架的 Matrix 伺服器上限制使用者註冊

如何在自架的 Matrix 伺服器上限制使用者註冊

比較在 Synapse 上控制新 Matrix 帳戶的方法,從停用公用註冊到頒發有限用途的令牌,並提供設定範例和檢查。

修復 ownCloud 空白頁/白屏死機:選擇正確的恢復路徑

修復 ownCloud 空白頁/白屏死機:選擇正確的恢復路徑

修正 ownCloud 空白頁問題,首先要區分瀏覽器、PHP、應用程式、權限、升級和代理故障,然後選擇幹擾最小的復原路徑。

如何修復 Zimbra 的「Nginx 代理服務已停止」錯誤

如何修復 Zimbra 的「Nginx 代理服務已停止」錯誤

診斷 Zimbra 停止的 NGINX 代理,讀取正確的日誌,安全地重新啟動它,並檢查針對缺失配置、無效連接埠、憑證和上游故障的修復措施。

修正 Zimbra Amavis 佔用 100% CPU 且不中斷郵件流的問題

修正 Zimbra Amavis 佔用 100% CPU 且不中斷郵件流的問題

在進行任何有風險的變更之前,請先檢查佇列、日誌、SpamAssassin、ClamAV 和復原跡象,以了解如何診斷和修復 Zimbra Amavis CPU 佔用率達到 100% 的問題。

修正 iPhone 上的 Zimbra ActiveSync 連線錯誤

修正 iPhone 上的 Zimbra ActiveSync 連線錯誤

透過檢查帳戶詳細資料、憑證、憑證、網路路徑和伺服器策略來排查 iPhone 上的 Zimbra ActiveSync 錯誤,並比較安全的替代方案。