標準の Sieve 機能以外にも、Messaging Server は多くの拡張機能を提供します。拡張機能には addheader、addtag、spamtest、spamadjust などがあります。addheader と addtag については、「スパムメッセージに SpamAssassin スコアを含むヘッダーを追加する」および 「件名行に SpamAssassin の結果文字列を追加するには」を参照してください。ここでは、spamtest と spamadjust について説明します。
これらの拡張は、管理者に、別のしきい値を設定する機能と、SpamAssassin の判定を無効にするホワイトリストを設定する機能を提供します。この 2 つの拡張を組み合わせて、特定のメッセージの差出人に応じて別のしきい値を持つようにすることもできます。spamadjust は非標準のアクションです。spamtest については、ftp://ftp.isi.edu/in-notes/rfc3685.txt を参照してください。
spamtest を使用して、Sieve [RELATIONAL] 拡張を使った特定の値に対する SpamAssassin スコアを、 "i;ascii-numeric" 比較子と比較することができます。SpamAssassin スコアは通常は実数ですが、spamtest は、最初にスコアを近似整数に丸めることで、スコアを 0 から 10 の整数値にします。0 未満の値は強制的に 0 になり、10 を超える値は強制的に 10 になります。最後に、Messaging Server が維持するテキスト文字列が付加されて、spamtest が示すテスト文字列が生成されます。
spamadjust は、現在のスパムスコアの調整に使われます。このアクションは、実際の数値に対してスキャンされる単一の文字列引数をとります。この値が現在のスパムスコアの調整に使われます。また、文字列全体も現在のスコアテキスト文字列に付加されます。次の例では、この文字列は “undisclosed recipients” です。
複数の spamadjust アクションを指定でき、それぞれが現在のスコアに追加されます。また、スコア値は常に 0 で始まります。符号付き数値を指定でき、現在のスコアを小さくしたり大きくしたりできます。spamadjust に対する require 句はなく、代わりに spamtest 拡張を列挙する必要があります。
たとえば、SpamAssassin の MODE を 2 に設定した spamadjust を使用すると、次のようになります。
spamfilterX_string_action=data:,require ["spamtest"];spamadjust "$U";
システムレベルの Sieve フィルタは、特定のタイプのヘッダーをチェックし、それが見つかった場合は 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";} |
最後に、ユーザーレベルの Sieve スクリプトは、結果を示す値のテスト、スパムであることが確実なメッセージの破棄、スパムと思われるメッセージのファイリング、ローカルドメインのアドレスからのメッセージ通過の許可を行うことができます。
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;} |