除了標準篩選功能外,Messaging Server 還提供對數個篩選功能延伸的支援,這些功能延伸包括 addheader、addtag、spamtest 和 spamadjust。在將包含 SpamAssassin 分值的標頭增加至垃圾郵件和將 SpamAssassin 結果字串增加至主旨行中對 addheader 和 addtag 進行了說明。
這些延伸可讓管理員設定不同的臨界值以及設定置換 SpamAssassin 判定結果的安全名單。甚至可以將兩者合併,以設定不同的臨界值,具體視特定郵件的傳送者而定。spamadjust 為非標準動作。spamtest 在 ftp://ftp.isi.edu/in-notes/rfc3685.txt 中有說明。
spamtest 可用於對 SpamAssassin 分值和特定值進行比較,方法是將篩選 [RELATIONAL] 延伸與 "i;ascii-numeric" 比較器配合使用。SpamAssassin 分值通常為實數,但 spamtest 首先將分值捨入為最接近的整數,從而將分值強制變更為 0 到 10 之間的整數值。小於 0 的數值強制變更為 0,大於 10 的數值強制變更為 10。最終,附加由 Messaging Server 維護的文字字串,以產生 spamtest 測試可查看的測試字串。
spamadjust 用於調整目前的垃圾郵件分值。此動作使用要對其進行實數值掃描的單一字串引數。此值用於調整目前垃圾郵件分值。整個字串也會附加至目前的分值文字字串。在下面顯示的範例中,字串應為「undisclosed recipients」。
允許多個 spamadjust 動作;每個動作均被計入目前分值。此外分值永遠從 0 開始。允許簽署的數字值,才能降低和提高目前分值。沒有針對 spamadjust 的 require 陳述式;而應該為列示 spamtest 延伸。
例如,可將 spamadjust 與設定為 2 的 SpamAssassin MODE 配合使用,如下所示:
spamfilterX_string_action=data:,require ["spamtest"];spamadjust "$U";
然後系統級別的篩選器就可以透過檢查特定類型的標頭 (如果找到), 將 SpamAssassin 分值增加 5,修改 SpamAssassin 分值:
spamfilter1_string_action=require "spamtest"; \ if header :contains ["to", "cc", "bcc", "resent-to", "resent-cc", \ "resent-bcc"] ["<undisclosed recipients>", "undisclosed.recipients"] \ {spamadjust "+5 undisclosed recipients";} |
最後,使用者級別的篩選程序檔可以測試結果值、捨棄確定為垃圾郵件的郵件、歸檔可能是垃圾郵件的郵件和允許來自本機網域中位址的郵件通過:
spamfilter1_string_action=require ["spamtest", "relational", \ "comparator-i;ascii-numeric", "fileinto"]; \ if anyof (address :matches "from" ["*@siroe.com", \ "*@*.siroe.com"]) \ {keep;} \ elsif spamtest :value "ge" :comparator "i;ascii-numeric" "8" \ {discard;} \ elsif spamtest :value "ge" :comparator "i;ascii-numeric" "5" \ {fileinfo "spam-likely";} \ else \ {keep;} |