除了標準篩選功能外,Messaging Server 還提供對數項功能延伸的支援,這些延伸包括 addheader、addtag、spamtest 和 spamadjust。在將包含 SpamAssassin 分值的標頭增加至垃圾郵件和將 SpamAssassin 結果字串增加至主旨行中對 addheader 和 addtag 進行了說明。
這些延伸可讓管理員設定不同的臨界值以及設定覆寫 SpamAssassin 判定結果的安全名單。甚至可以將兩者合併,以設定不同的臨界值,具體視特定郵件的傳送者而定。spamadjust 為非標準動作。spamtest 在 ftp://ftp.isi.edu/in-notes/rfc3685.txt 中有說明。
用來針對 addtag 分隔多個主旨行標籤附加的內部分隔符號字元已經從空格變更為垂直列。這樣就能增加包含空格的標籤,如有些垃圾郵件過濾器一樣。例如,addtag "[Probable Spam]" 先前表示 addtag "[Probable" 以及 addtag "spam]"。現在這被視為單一標籤 "[Probable Spam]"。此變更可避免在標籤中使用垂直列。
spamtest 可用於對 SpamAssassin 分值和特定值進行比較,方法是將篩選 [RELATIONAL] 延伸與 "i;ascii-numeric" 比較器配合使用。SpamAssassin 分值通常為實數,但 spamtest 首先將分值捨入為最接近的整數,從而將分值強制變更為 0 到 10 之間的整數值。小於 0 的數值強制變更為 0,大於 10 的數值強制變更為 10。最終,附加由 Messaging Server 維護的文字字串,以產生 spamtest 測試可查看的測試字串。:percent 受 spamtest 支援 (請參閱 SIEVE Email Filtering: Spamtest and Virustest Extensions draft-ietf-sieve-spamtestbis-05)。
spamadjust 用於調整目前的垃圾郵件分值。此動作使用要對其進行實數值掃描的單一字串引數。此值用於調整目前垃圾郵件分值。整個字串也會附加至目前的分值文字字串。在下面顯示的範例中,字串應為「undisclosed recipients」。
允許多個 spamadjust 動作;每個動作均被計入目前分值。此外分值永遠從 0 開始。允許簽署的數字值,才能降低和提高目前分值。沒有針對 spamadjust 的 require 陳述式;而應該列出 spamtest 延伸。
例如,可將 spamadjust 與設定為 2 的 SpamAssassin MODE 配合使用,如下所示:
spamfilterX_string_action=data:,require ["spamtest"];spamadjust "$U";
然後系統層級的篩選器就可以透過檢查特定類型的標頭 (如果找到), 將 SpamAssassin 分值增加 5,修改 SpamAssassin 分值:
require "spamtest"; if header :contains ["to", "cc", "bcc", "resent-to", "resent-cc", "resent-bcc"] ["<undisclosed recipients>", "undisclosed.recipients"] {spamadjust "+5 undisclosed recipients";} |
最後,使用者層級的篩選程序檔可以測試結果值、捨棄確定為垃圾郵件的郵件、歸檔可能是垃圾郵件的郵件和允許來自本機網域中位址的郵件通過:
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" {fileinfto "spam-likely";} else {keep;} |