Sun Java System Messaging Server 6 2005Q1 管理ガイド |
第 14 章
スパムとウィルスのフィルタ処理プログラムを Messaging Server に統合するこの章では、Messaging Server を使用して、スパムおよびウィルスのフィルタ処理ソフトウェアを統合および設定する方法について説明します。この章で説明するスパムおよびウィルスのフィルタ処理技術は、変換チャネルによって提供される技術よりも強力です (「変換チャネル」を参照)。Messaging Server では、Symantec Brightmail AntiSpam、SpamAssassin、および Internet Content Adaptation Protocol (ICAP、RFC 3507) がサポートするスパム防止/ウィルス防止プログラム (Symantec AntiVirus Scan Engine など) がサポートされています。
この章には、以下の節があります。
スパムのフィルタ処理プログラムを Messaging Server に統合する - 動作方式Messaging Server から見ると、スパム防止ソリューションはどれも同じように動作します。
- Messaging Server は、スパムのフィルタ処理ソフトウェアにメッセージのコピーを送信します。
- スパムのフィルタ処理ソフトウェアは、メッセージを分析し、スパムかどうかの判定を返します。プログラムによっては、SpamAssassin のようにスパムスコアを含む判定も返します。スパムスコアは、メッセージがスパムである確率を数値で示すものです。
- Messaging Server はこの判定を読み取り、メッセージに対して Sieve アクションを実行します (「スパムメッセージに対して実行するアクションを指定する」を参照)。
スパムのフィルタ処理プログラムは、プロトコルを介して MTA と対話します。Symantec AntiVirus Scan Engine などの ICAP ベースのプログラムで使用するような標準プロトコル、Brightmail で使用するような独自のプロトコル、または、SpamAssassin で使用するような非標準のプロトコルが使用可能です。各プロトコルには、MTA とのインタフェースのためのソフトウェアのフックが必要です。Brightmail および Spam Assassin は、メッセージングサーバーと最初に統合できるスパムのフィルタ処理プログラムです。MTA は現在、ICAP を使用するプログラムをサポートしています。
サードパーティのスパムのフィルタ処理プログラムを配備および設定するMessaging Server にサードパーティのフィルタ処理ソフトウェアを配備するには、5 つのアクションが必要です。
- 配備するスパムのフィルタ処理プログラムと、配備先のサーバー数を決定します。Messaging Server では、最大 4 種類のスパムおよびウィルス防止プログラムを使用して着信メッセージをフィルタ処理できます。これらのプログラムは、個々のシステム上、単一のシステム配備の Messaging Server と同じシステム上、または 2 層配備の MTA と同じシステム上で実行できます。必要なサーバー数は、メッセージ負荷、ハードウェアのパフォーマンス、およびほかの要因によって異なります。サイトでのハードウェア要件を決定するガイドラインについては、スパムのフィルタ処理ソフトウェアのマニュアルを参照するか、販売代理店にお問い合わせください。
- スパムのフィルタ処理ソフトウェアをインストールして構成します。この情報については、スパムのフィルタ処理ソフトウェアのマニュアルを参照するか、販売代理店にお問い合わせください。
- フィルタ処理のクライアントライブラリをロードおよび構成します。このためには、MTA option.dat ファイルにクライアントライブラリと設定ファイルを指定して、さらにフィルタ処理ソフトウェアの設定ファイルに必要なオプションを設定する必要があります。「スパムのフィルタ処理ソフトウェアのクライアントライブラリをロードおよび構成する」
- フィルタ処理を実行するメッセージを指定します。ユーザー、ドメイン、またはチャネルごとにメッセージをフィルタ処理できます。「フィルタ処理を行うメッセージを指定する」
- スパムに対して行う処置を指定します。スパムは、破棄したり、フォルダにファイリングしたり、件名にタグ付けしたりできます。「スパムメッセージに対して実行するアクションを指定する」
スパムのフィルタ処理ソフトウェアのクライアントライブラリをロードおよび構成する
それぞれのスパムフィルタ処理プログラムは、Messaging Server のクライアントライブラリファイルと設定ファイルを提供します。クライアントライブラリをロードおよび構成するには、次の 2 つのことが必要です。
- option.dat ファイルに、スパムのフィルタ処理ソフトウェアのライブラリパス (spamfilterX_library) と設定ファイル (spamfilterX_config_file) を指定します。これら以外にも、スパムのフィルタ処理の LDAP 属性やスパムメッセージに実行する Sieve アクションを指定するためのいくつかのオプションがあります。
- スパムのフィルタ処理ソフトウェアの設定ファイルに、必要なオプションを指定します。それぞれのスパムフィルタ処理プログラムには、個々の設定ファイルおよび設定オプションがあります。これらについては、フィルタ処理ソフトウェアの節およびスパムのフィルタ処理ソフトウェアのマニュアルで説明しています。「Symantec Brightmail AntiSpam を使用する」または「SpamAssassin を使用する」、および「Symantec Anti-Virus Scanning Engine (SAVSE) を使用する」を参照してください。
スパムのフィルタ処理ソフトウェアのライブラリパスを指定する
Messaging Server は、メッセージに対して最大 4 種類のフィルタ処理システムを呼び出せます。たとえば、Symantec AntiVirus Scan Engine と SpamAssassin の両方を使用してメッセージを実行できます。それぞれのフィルタ処理ソフトウェアは、1 から 4 までの番号で識別されます。これらの番号は、各種のスパムフィルタオプション、LDAP 属性、およびチャネルキーワードの一部として表示され、フィルタの ID 番号として X が使用されます。たとえば、sourcespamfilterXoptin または spamfilterX_config_file のようになります。キーワードまたはオプション名から ID 番号を省略した場合、デフォルトは 1 です。
次の option.dat 設定では、Messaging Server が Symantec AntiVirus Scan Engine と SpamAssassin の両方を使用してメッセージをフィルタ処理するように指定しています。
spamfilter1_library=Symantec_Library_File
spamfilter1_config_file=Symantec_Config_File
spamfilter2_library=SpamAssassin_Library_File
spamfilter2_config_file=SpamAssassin_Config_Fileほかのオプションまたはキーワードを使用してシステムを設定する場合は、オプションまたはキーワードの最後に対応する番号を指定してください。たとえば、sourcespamfilter2optin は SpamAssassin を参照します。sourcespamfilter1optin は Symantec AntiVirus Scan Engine を参照します。連続した番号を使用する必要はありません。たとえば、Symantec AntiVirus Scan Engine を一時的に無効にするには、spamfilter1_library 設定ファイルをコメントアウトするだけすみます。
フィルタ処理を行うメッセージを指定する
スパムのフィルタ処理ソフトウェアのインストールが完了して Messaging Server で使用可能になったら、フィルタ処理を行うメッセージを指定する必要があります。Messaging Server では、ユーザー、ドメイン、またはチャネルごとにフィルタするよう設定できます。それぞれの場合について、次の節で説明します。
ユーザーレベルのフィルタ処理を指定するには
ユーザーごとにフィルタ処理を指定したほうがよい場合があります。たとえば、スパムまたはウィルスのフィルタ処理を ISP の顧客に対するプレミアムサービスとして提供する場合に、サービスを受けるユーザーと受けないユーザーを指定できます。ユーザーごとのフィルタ処理を行うための一般的な手順は、次のとおりです。
- スパムのフィルタ処理ソフトウェアを起動するユーザー LDAP 属性を指定します。
option.dat に LDAP_OPTINXオプションを設定します。次に例を示します。
LDAP_OPTIN1=SymantecAV
LDAP_OPTIN2=SpamAssassin- スパムのフィルタ処理の対象となるユーザーエントリにフィルタ属性を設定します。
フィルタ属性は複数値を持ち、サーバーによって異なります。手順 1 の例を使用した場合のエントリを以下に示します。
SymantecAV:virus
SpamAssassin:spamウィルスとスパムの両方をフィルタ処理できる Brightmail のようなプログラムの場合、有効な値は spam および virus です。複数値を持つ属性として使用する場合、それぞれの値に個別の属性を入力する必要があります。たとえば、Brightmail のフィルタ属性が Brightmail に設定されている場合のエントリは以下のとおりです。
Brightmail:spam
Brightmail:virusユーザーレベルのフィルタ処理の例
この例では、Brightmail が使用されていると仮定しています。また、option.dat ファイルで LDAP_OPTIN1 が Brightmail に設定されているとします。Otis Fanning というユーザーには、そのユーザーエントリの Brightmail 属性が spam および virus に設定されています。このユーザーのメールには、Brightmail によってスパムとウィルスのフィルタ処理が行われます。コード例 14-1 は、Otis Fanning に対する Brightmail のユーザーエントリを示しています。
Symantec AntiVirus Scan Engine および SpamAssassin が使用された場合、エントリは次のようになります。
SymantecAV:virus
SpamAssassin:spamこのほかの例と詳細については、「Symantec Brightmail AntiSpam を使用する」、「SpamAssassin を使用する」、または「Symantec Anti-Virus Scanning Engine (SAVSE) を使用する」を参照してください。
ドメインレベルのフィルタ処理を指定するには
フィルタ処理の対象となるドメインを指定できます。この機能の使用例は、スパム防止またはウィルス防止のフィルタ処理を ISP ドメインの顧客に対するプレミアムサービスとして提供する場合です。ドメインのフィルタ処理を指定するための一般的な手順は、次のとおりです。
- フィルタ処理ソフトウェアを起動するドメイン LDAP 属性を指定します。
option.dat に LDAP_DOMAIN_ATTR_OPTINXオプションを設定します。次に例を示します。
LDAP_DOMAIN_ATTR_OPTIN1=SymantecAV
LDAP_DOMAIN_ATTR_OPTIN2=SpamAssassin- フィルタ属性をスパムのフィルタ処理の対象となるドメインエントリに設定します。
フィルタ属性は複数値を持ち、サーバーによって異なります。手順 1 の例を使用した場合のエントリを以下に示します。
SymantecAV:virus
SpamAssassin:spamウィルスとスパムの両方をフィルタ処理できる Brightmail のようなプログラムの場合、有効な値は spam および virus です。複数値を持つ属性として使用する場合、それぞれの値に個別の属性値を入力する必要があります。たとえば、LDAP_DOMAIN_ATTR_OPTIN1 が Brightmail に設定されている場合のエントリは以下のとおりです。
Brightmail:spam
Brightmail:virusドメインレベルのフィルタ処理の例
この例では、Brightmail が使用されていると仮定しています。また、option.dat ファイルで LDAP_DOMAIN_ATTR_OPTIN1 が Brightmail に設定されているとします。Sun LDAP スキーマ 1 の DC ツリーの sesta.com ドメインエントリでは、Brightmail 属性は spam および virus に設定されています。Sun LDAP スキーマ 2 の場合、ドメインエントリに Brightmail を設定して、スパムのフィルタ処理の対象にします。
sesta.com に送信されるすべてのメールは、Brightmail によってスパムおよびウィルス用にフィルタ処理されます。コード例 14-2 に、ドメインエントリを示します。
コード例 14-2 Brightmail 用の LDAP ドメインエントリの例
dn:dc=sesta,dc=com,o=internet
objectClass:domain
objectClass:inetDomain
objectClass:mailDomain
objectClass:nsManagedDomain
objectClass:icsCalendarDomain
description:DC node for sesta.com hosted domain
dc:sesta
inetDomainBaseDN:o=sesta.com,o=isp
inetDomainStatus:active
mailDomainStatus:active
mailDomainAllowedServiceAccess:+imap, pop3, http:*
mailRoutingHosts:manatee.siroe.com
preferredMailHost:manatee.siroe.com
mailDomainDiskQuota: 100000000
mailDomainMsgQuota: -1
mailClientAttachmentQuota: 5
Brightmail:spam
Brightmail:virus
Symantec AntiVirus Scan Engine および SpamAssassin が使用された場合、エントリは次のようになります。
SymantecAV:virus
SpamAssassin:spamこのほかの例と詳細については、「Symantec Brightmail AntiSpam を使用する」、「SpamAssassin を使用する」、または「Symantec Anti-Virus Scanning Engine (SAVSE) を使用する」を参照してください。
チャネルレベルのフィルタ処理を指定するには
ソースチャネルまたは宛先チャネルによるフィルタ処理を行うと、スパムのフィルタ処理の柔軟性と精度が大幅に向上します。たとえば、次のようなフィルタ処理を実行するとします。
Messaging Server により、ソースチャネルまたは宛先チャネルによるフィルタ処理を指定できます。このためのメカニズムは、表 14-1 で説明するチャネルキーワードです。次の例は、チャネルレベルのフィルタ処理の設定方法を示しています。
- メッセージをバックエンドメッセージストアのホストに送信するすべての SMTP サーバーの imta.cnf ファイルに書き換えルールを追加します。次に例を示します。
msg_store1.siroe.com $U@msg_store1.siroe.com
- その書き換えルールと対応するチャネルを destinationspamfilterXoptin キーワードを使用して追加します。次に例を示します。
tcp_msg_store1 smtp subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
"pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D ¥
destinationspamfilter1optin spam
msg_store1.siroe.com
表 14-1 スパムフィルタ用の MTA チャネルキーワード
チャネルキーワード
説明
destinationspamfilterXoptin
これらのサービスがユーザーまたはドメインによって LDAP_OPTIN LDAP 属性で指定されていない場合でも、このチャネル宛のすべてのメッセージがスパム防止ソフトウェア X によってフィルタ処理されることを指定します (ソフトウェア X のフィルタ処理は option.dat の spamfilterX_library によって定義される)。フィルタパラメータはフィルタ処理プログラムによって異なり、キーワードのあとに続きます。たとえば、Brightmail のパラメータは通常、spam または virus または spam,virus です。SpamAssassin のパラメータは spam です。
この例では、メッセージストア宛のメールはすべて、スパムでないかスキャンされます。
ims-ms destinationspamfilter1optin spam,virus. . .
sourcespamfilterXoptin
これらのサービスがユーザーまたはドメインによって LDAP_OPTIN LDAP 属性で指定されていない場合でも、このチャネルから発信されるすべてのメッセージがスパム防止ソフトウェア X によってフィルタ処理されることを指定します。キーワードのあとにはシステム全体のデフォルトパラメータが続きます。使用できるパラメータはフィルタ処理プログラムによって異なります。たとえば、Brightmail の場合のパラメータは、spam または virus または spam,virus です。SpamAssassin の場合、パラメータは spam です。switchchannel が有効な場合、このキーワードは switched-to チャネルに入れられます。
チャネルレベルのフィルタ処理の例
以下の例では、番号 1 によって指定されるフィルタ処理プログラムを想定しています。
例 1: MTA リレーから msg_store1.siroe.com というバックエンドメッセージストアへのすべてのメールを、スパムおよびウィルス用にフィルタ処理します。
- メッセージをバックエンドメッセージストアのホストに送信する imta.cnf ファイルに、書き換えルールを追加します。次に例を示します。
msg_store1.siroe.com $U@msg_store1.siroe.com
- その書き換えルールと対応するチャネルを destinationspamfilterXoptin キーワードを使用して追加します。次に例を示します。
tcp_msg_store1 smtp subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
"pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D ¥
destinationspamfilter1optin spam,virus
msg_store1.siroe.com例 2: MTA を通過するすべての着信メールをスパム用にフィルタ処理します (通常、すべての着信メッセージは tcp_local チャネルを通過する)。
tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥
sourcespamfilter1optin spam
tcp-daemon例 3: MTA を通過するすべてのインターネットへの発信メールをフィルタ処理します (通常、インターネットへのすべての発信メッセージは tcp_local チャネルを通過する)。
tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥
destinationspamfilter1optin spam
tcp-daemon例 4: MTA を通過するすべての着信および発信メールをフィルタ処理します。
tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥
sourcespamfilter1optin spam destinationspamfilter1optin spam
tcp-daemon例 5: ユーザーの optin を使わずに、2 層システムにあるローカルメッセージストア宛のすべてのメールをフィルタ処理します。
ims-ms smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥
destinationspamfilter1optin spam
tcp-daemon例 6: すべての着信および発信メールをスパムおよびウィルス用にフィルタ処理します (使用するソフトウェアがスパムとウィルスの両方をフィルタ処理することを前提とする)。
tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL ¥
maytlsserver maysaslserver saslswitchchannel tcp_auth ¥
destinationspamfilter1optin spam,virus sourcespamfilter1optin ¥
spam,virus
tcp-daemonスパムメッセージに対して実行するアクションを指定する
スパムのフィルタ処理プログラムは、メッセージを分析し、スパムかどうかの判定を Messaging Server に返します。そのあと Messaging Server は、メッセージに応じたアクションを実行します。アクションは、Sieve メールフィルタ処理言語を使って指定します。指定できるアクションは、メッセージの破棄、フォルダへのファイリング、ヘッダーの追加、件名へのタグの追加などです。if-then-else ステートメントを含む複雑な Sieve スクリプトも指定できます。
注
複雑な Sieve 構文については、Sieve 仕様 3028 を参照してください。http://www.cyrusoft.com/sieve/ も参照してください。
Sieve スクリプトは、表 14-2 で説明する MTA スパムフィルタオプション (option.dat) で指定します。主なスパムフィルタアクションのオプションは NULL 値がスパム判定値として返された時に実行される Sieve ルールを指定するSpamfilterX_null_action と、文字列がスパム判定として返された時に実行される Sieve ルールを指定する SpamfilterX_string_action です。
スパムのフィルタ処理プログラムは、通常、文字列または NULL 値を MTA に返して、メッセージがスパムであることを示します。プログラムによってはスパムスコアも返します。スパムスコアは、スパムであるメッセージまたはスパムではないメッセージの確率を示す数値です。このスコアは、アクションシーケンスの一部として使用できます。次の例は、フィルタ処理を行うメッセージに対するアクションの指定方法を示しています。それぞれの例では、番号 1 によって指定されるフィルタ処理プログラムを想定しています。
例 1: NULL 判定値を含むスパムメッセージをファイル SPAM_CAN にファイリングします。
spamfilter1_null_action=data:,require "fileinto"; fileinto "SPAM_CAN";
同じアクションを、次の文字列を返すスパムメッセージで実行できます。
spamfilter1_string_action=data:,require "fileinto"; fileinto "SPAM_CAN";
例 2: 返された判定文字列を含むスパムメッセージを、その判定文字列のあとに指定されているファイル内にファイリングします。$U がこれを実行します。つまり、返される判定文字列が spam の場合、メッセージは spam というファイルに保存されます。
spamfilter1_null_action=data:,require "fileinto"; fileinto "$U";
例 3: 文字列判定値を含むスパムメッセージを破棄します。
spamfilter1_string_action=data:,discard
同じアクションを、NULL 値を返すスパムメッセージで実行できます。
spamfilter1_null_action=data:,require "fileinto"; fileinto "SPAM_CAN";
例 4: この行では、文字列判定値によってスパムであると判断された各メッセージに、ヘッダー Spam-test: FAIL を追加しています。
spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test:FAIL";
例 5: この行では、文字列を返すスパムメッセージの件名に、文字列 [PROBABLE SPAM] を追加しています。
spamfilter1_string_action=data:,addtag "[PROBABLE SPAM]";
例 6: この行では、ヘッダーに resent-from および User-1 がある場合は、文字列判定値が仮定され、スパムメッセージがメールボックス testspam にファイリングされます。メッセージにこのヘッダーがない場合、メッセージは spam にファイリングされます。
spamfilter1_string_action=data:,require "fileinto";¥
if header :contains ["resent-from"] ["User-1"] {¥
fileinto "testspam";¥
} else {¥
fileinto "spam";};
判定文字列はほとんどのスパムフィルタソフトウェアで設定できるため、返される文字列に応じてさまざまなアクションを指定できます。これは、対応するペアの spamfilterX_verdict_n オプションと spamfilterX_action_n オプションを使って実行できます。
例 7: これらの対応するペアのオプションは、判定文字列 remove が返されたスパムメッセージを破棄します。
spamfilter1_verdict_0=remove
spamfilter1_action_0=data:,discardスパム判定文字列の指定方法については、該当のスパムフィルタ処理ソフトウェアの節を参照してください。
表 14-2 MTA スパムフィルタオプション (option.dat)
SpamAssassin 用の MTA オプション
説明
SpamfilterX_config_file
フィルタ処理ソフトウェア X 設定ファイルのフルパスとファイル名を指定します。
デフォルト: なしSpamfilterX_library
フィルタ処理ソフトウェア X 共有ライブラリのフルパスとファイル名を指定します。
デフォルト: なしSpamfilterX_optional
フィルタ処理ライブラリ X によって報告された障害を、一時的な処理の失敗として処理するか無視するかを制御します。デフォルト値 0 は、スパムのフィルタ処理の問題により一時的な処理の障害が発生すると指定します。この値を 1 に変更すると、スパムフィルタの処理は場合によってはライブラリ障害のフィルタ処理をスキップしますが、すべてではありません。特に、システムがライブラリコードを返さずにスタックすると、一部の MTA もスタックすることがあります。-2 と 2 も設定できます。これらは、それぞれ 0 および 1 と同じですが、スパムフィルタプラグインによって問題が報告された場合に syslog メッセージが送信される点で異なります。
デフォルト: 0
LDAP_optinX
ユーザー単位でフィルタ処理ソフトウェア X を有効にするために使用する LDAP 属性の名前を指定します。これは、inetMailUser オブジェクトクラス内の属性である必要があります。
属性自体には複数の値を指定でき、大文字小文字は区別されます。SpamAssassin の場合、値は小文字の spam にする必要があります。
デフォルト: なし
LDAP_domain_attr_optinX
ドメイン単位でフィルタ処理ソフトウェア X を有効にするために使用する LDAP 属性の名前を指定します。宛先ドメインに適用されます。オブジェクトクラス mailDomain 内にある必要がある以外は、LDAP_optin と同様です。
デフォルト: なし
SpamfilterX_null_optin
LDAP_optinX または LDAP_domain_attr_optinX で定義される属性の値として見つかった場合に、属性がそこにはないかのように MTA を機能させる文字列を指定します。つまり、そのエントリに対するフィルタ処理を無効にします。詳細は、「フィルタ処理を行うメッセージを指定する」を参照してください。
デフォルト: 空の文字列。空の optin 属性は、デフォルトでは無視されます。これは、iPlanet Messaging Server 5.2 からの変更です。5.2 では、空の optin 属性は空の optin リストでフィルタ処理をトリガしました。5.2 の動作は、spamfilterX_null_optin を実際には発生することのない文字列に設定することによって復元できます。
SpamfilterX_null_action
フィルタ処理ソフトウェア X の判定が NULL で返された場合にメッセージの処理を指定する Sieve ルールを定義します。Sieve 式は、ファイル URL を使って外部的に保存できます。例: file:///var/opt/SUNWmsgsr/config/null_action.sieve また、アドレスがスパムの送信に使用されていた、関係のない相手に非配信通知を配信する傾向があるため、スパムを拒否するときに Sieve 拒否アクションを使用しないでください。
デフォルト: data:,discard;SpamfilterX_string_action
判定が文字列で返された場合にメッセージの処理を指定する Sieve ルールを定義します。Sieve 式は、ファイル URL を使って外部的に保存できます。例: file:///var/opt/SUNWmsgsr/config/null_action.sieve また、サーバーがスパムの送信に使用されていた、関係のない相手に非配信通知を配信する傾向があるため、スパムを拒否するときに Sieve 拒否アクション (reject) を使用しないでください。
デフォルト: data:,require "fileinto"; fileinto "$U;
ここで、$U は verdict が返した文字列です。
spamfilterX_verdict_n
spamfilterX_verdict_n および spamfilterX_action_n は対応するペアであり、n は 0 から 9 の数字です。これらのオプションにより、任意の判定文字列に Sieve フィルタを指定できます。これは、spamfilterX_verdict_n および spamfilterX_action_n を、それぞれ判定文字列および Sieve フィルタに設定することによって行われます。ここで、n は 0 から 9 の整数です。たとえば、サイトで「reject」判定によって Sieve 拒否アクションを発生させるには、次のように指定します。
spamfilter1_verdict_0=reject
spamfilter1_action_0=data:,require "reject"; reject "Rejected by spam filter";spamfilterX_verdict_n オプションと対応するアクションのオプションすべてのデフォルト値は、空の文字列です。
デフォルト: なし
spamfilterX_action_n
spamfilterX_verdict_n を参照してください。デフォルト: なし
spamfilterX_final
一部のフィルタ処理ライブラリには、受取人アドレスに基づいて一連のアクションを実行する機能があります。spamfilterX_final は、フィルタ処理ライブラリに渡される受取人アドレスを指定します。値が 0 の場合はいわゆる中間アドレスを使用し、1 の場合は最終形式の受取人アドレスを送信します。
デフォルト: 0
optin_user_carryover
転送はスパムフィルタ処理に対するチャレンジです。forward 配信オプションを指定し、別のユーザーの転送アドレスを指定するユーザーエントリを考慮します。さらに、ユーザーエントリは、一部の固有のフィルタ処理に optin するように設定します。フィルタ処理を転送されるメッセージに適用すべきでしょうか。これに対し、1 人の特定のユーザーにとって正しいフィルタ処理を選択しても、ほかのユーザーにとっては正しい選択ではない場合もあります。また、サイトのセキュリティポリシーに違反する手段としてフィルタ処理操作が省かれることもあります。
すべてのケースに対応できる 1 つの答えはないため、OPTIN_USER_CARRYOVER は、スパムのフィルタ処理の optin リストが転送されるときに、あるユーザーエントリまたはエイリアスエントリから別のエントリに転送される方法を制御します。これはビットエンコード値です。ビット値には、次のような意味があります。
ビット 0 (値 1): 各 LDAP ユーザーエントリは、以前アクティブだったユーザーまたはドメインの optin よりも無条件で優先されます。
ビット 1 (値 2): ユーザーのドメインに optin 属性がある場合、以前アクティブだったユーザー、ドメイン、エイリアスよりも優先されます。
ビット 2 (値 4): ユーザーに optin 属性がある場合、以前アクティブだったユーザー、ドメイン、エイリアスよりも優先されます。
ビット 3 (値 8): [optin] 非定位置パラメータで指定した optin は、以前アクティブだったユーザー、ドメイン、エイリアスよりも優先されます。
デフォルト: 0 (ユーザーが別のユーザーに転送する配信オプションを持つ場合、optin が累積します。このデフォルトにより、転送時にサイトのセキュリティポリシーが有効であることが保証されます。ほかの設定では保証されない場合があります)。
Symantec Brightmail AntiSpam を使用するBrightmail ソリューションは、Brightmail サーバーおよびスパムとウィルスを防止するルールで構成され、ルールのリアルタイムの更新版は電子メールサーバーにダウンロードされます。
Brightmail の機能
Brightmail サーバーは顧客のサイトに配備されます。Brightmail では、電子メールプローブがインターネット周辺に配置され、新しいスパムを検出します。Brightmail の技術者はリアルタイムでこのスパムを阻止するカスタムルールを作成します。ルールは Brightmail サーバーにダウンロードされます。これもリアルタイムで行われます。Brightmail のデータベースは更新され、Brightmail サーバーは特定のユーザーまたはドメインの電子メールに対してこのデータベースフィルタを使用します。
Brightmail のアーキテクチャ
図 14-1 に、Brightmail のアーキテクチャを示します。
図 14-1 Brightmail と Messaging Server のアーキテクチャ
Brightmail Logistics and Operations Center (BLOC) が電子メールプローブからスパムを受信すると、オペレータがただちに適切なスパムフィルタ処理ルールを作成します。作成されたルールは、Brightmail の顧客のマシンにダウンロードされます。同様に、Symantec Security Response のリアルタイムのウィルスルールが Brightmail から送信されます。これらのルールは顧客の Brightmail サーバーでスパムやウィルスを検出するために使用されます。
MTA は Brightmail SDK を使用して Brightmail サーバーと通信します。MTA は Brightmail からの応答に基づいてメッセージを送信します。MTA はメール (1a) または (1b) を受信すると、Brightmail サーバー (2) にメッセージを送信します。Brightmail サーバーはルールとデータを使用してメッセージがスパムやウィルスであるかどうか判断し (3)、判定を MTA に返します。その判定に基づいて、MTA はメッセージを破棄するか、フォルダに保存するか (4a)、通常どおり宛先に配信するかのいずれかを実行します。
Brightmail SDK はサードパーティのソフトウェアなので、Sun のインストールキットには含まれていません。Brightmail SDK およびサーバーソフトウェアは、Brightmail Inc. から入手する必要があります。MTA には、Brightmail を統合するために Brightmail SDK をロードするかどうか、どこにロードするかを指定する構成設定があります。
SDK がロードされると、Brightmail のメッセージ処理は複数の係数と細分度 (アクティブな処理が「optin」であることを示す、Brightmail で使用される用語) によって決定されます。これは、次の基準に基づいて示されます。
各メッセージ受取人にとっては、上記の optin とデフォルトは組み合わされています。つまり、チャネルのデフォルトがすでにスパムとウィルスの両方に対して指定されていれば、ユーザー単位の optin は不要になります。言い換えると、システム管理者が全員に対してスパムとウィルスのフィルタ処理を行うことを決定すれば、ユーザーにスパムやウィルスの対策を選択させる必要はないということです。システムまたはドメインオプションによってすでにユーザーが optin している場合、処理を optin 解除する (そのサービスを不要とする) ことはできません。また、サービスを optin していて、別のアドレスにメールを転送した場合、そのアドレスはフィルタ処理が実行されたあとにメールを受信します。
提供されるサービスは、ウィルス検出またはスパム検出の 2 つのみです。Brightmail では、「content-filtering」サービスも提供されますが、この機能は Sieve を使用して提供されるため、Brightmail で Sieve フィルタ処理を実行した場合の付加価値はありません。
メッセージにウィルスが含まれていると判明した場合は、ウィルスを除去するように Brightmail サーバーを設定でき、これによって除去済みのメッセージが MTA に再送信されます。ウィルス除去済みのメッセージが再送信されると、元のメッセージから情報が失われることによって生じる副次的な悪影響があるため、MTA に除去済みのメッセージを再送信しないように Brightmail を設定することをお勧めします。メッセージがスパムである場合、Brightmail からその設定とともに返された判定に基づいて、MTA はメッセージの処理を決定できます。メッセージは、破棄したり、フォルダにファイリングしたり、件名にスパムまたはウィルスとしてタグ付けしたり、Sieve ルールに渡したり、通常どおり INBOX に配信したりできます。
Brightmail サーバーは、MTA と同一システム上に配置することも、別のシステムに配置することもできます。任意の数の MTA を実行する Brightmail サーバーのファームを構築することもできます。Brightmail SDK では、Brightmail 設定ファイルによって使用する Brightmail サーバーが決定されます。
Brightmail の要件とパフォーマンスの考慮
- Brightmail サーバーは Solaris オペレーティングシステムで実行する必要があります。
- Brightmail がスパムとウィルスの両方のチェックを実行する場合、MTA のメッセージスループットは 50% ほど低下する可能性があります。MTA のスループットを維持するには、各 MTA につき 2 台の Brightmail サーバーが必要です。
- SpamAssassin にはユーザー単位で別の種類のフィルタ処理を実行する機能がありますが、同じメッセージに 2 つの別のフィルタ処理基準を同時に適用することはできません。このため、SpamAssassin ではシステム全体のフィルタ処理のみ可能です。個々のユーザーに対するフィルタ処理はできません。
Brightmail を配備する
以下の手順を実行して、Brightmail を配備します。
- Brightmail をインストールして構成します。インストールおよび設定情報については、Brightmail ソフトウェアマニュアルを参照するか、販売代理店にお問い合わせください。一部の Brightmail 設定ファイルオプションについては「Brightmail 設定オプション」に示しますが、完全な最新の情報は Brightmail のマニュアルを参照してください。
- Brightmail クライアントライブラリをロードおよび構成します。このためには、Brightmail クライアントライブラリ libbmiclient.so と設定ファイル config を MTA に対して指定する必要があります。「スパムのフィルタ処理ソフトウェアのクライアントライブラリをロードおよび構成する」を参照してください。
- スパム用にフィルタ処理するメッセージを指定します。ユーザー、ドメイン、またはチャネルごとにメッセージをフィルタ処理できます。「フィルタ処理を行うメッセージを指定する」を参照してください。
- スパムメッセージに対して実行するアクションを指定します。スパムは、破棄したり、フォルダにファイリングしたり、件名にタグ付けしたりできます。「スパムメッセージに対して実行するアクションを指定する」を参照してください。
- 必要に応じてほかの MTA フィルタ設定パラメータを設定します。「MTA スパムフィルタオプション (option.dat)」を参照してください。
Brightmail 設定オプション
一部の Brightmail 設定ファイルオプションについては、表 14-3 に示します。Brightmail 設定ファイルオプションの完全なリストは、Brightmail から入手できます。オプションおよび値は大文字と小文字が区別されません。
表 14-3 Brightmail 設定ファイルオプション (一部)
Brightmail オプション
説明
blSWPrecedence
1 つのメッセージが複数の判定を受けることがあります。その場合、このオプションで順序を指定します。このオプションを virus-spam と指定した場合、メッセージに対して先にウィルス処理、次にスパム処理が行われます。判定はハイフン (-) で区切られます。これは Sun Java System Messaging Server で Brightmail を使用する場合に推奨される設定です。
blSWClientDestinationDefault
スパムでもウィルスでもなく、したがって判定を受けない通常のメッセージの配信方法を指定します。このようなメールを通常に配信するには、値として inbox を指定します。デフォルトはありません。
blSWLocalDomain
この属性ではローカルとみなされるドメインを指定します。いくつかのドメインがすべてローカルとみなされ、それを指定する場合は、この属性の行は複数になることがあります。ローカルドメインと外部ドメインを使用して、判定のための 2 種類の処理を指定します。
次の blSWClientDestinationLocal と blSWClientDestinationForeign を参照してください。たとえば、次のように指定します。
blSWLocalDomain=siroe.com
blSWClientDestinationLocal
このオプションではローカルドメイン用に判定とアクションのペアを指定します。この指定は通常 2 行で行われ、1 行はスパム用、もう 1 行はウィルス用です。値は verdict|action という形式をとります。次に例を示します。
blSWClientDestinationLocal=spam|spambox
blSWClientDestinationLocal=virus|
「null」アクション (| の右側に指定なし) に対するデフォルトの Brightmail 解釈は、メッセージを破棄することです。したがって、上記の例では判定が virus であるメッセージは破棄されます。また、判定が spam である場合、上記の例では spambox というフォルダにメッセージが保存されます。メッセージがスパムでもウィルスでもない場合、判定は一致せず、前出の blSWClientDestinationDefault の設定内容に基づいてメールは通常どおり配信されます。
Brightmail サーバーを MTA と別のマシンで使用している場合には、各 MTA によって実行されるアクションをカスタマイズできます。それには次の MTA オプションを使用して Brightmail サーバーから返されるアクションや判定を無効にします。Brightmail_verdict_n/Brightmail_action_n/Brightmail_null_action/Brightmail_string_action。この例では、MTA で別の Brightmail_null_action を使用してウィルスアクション (MTA のアクションを無効にするアクション) を無効にできます。または Brightmail_verdict_0=spambox と Brightmail_action_0=data:,require "fileinto";fileinto "Junk"; を使用して、spambox の代わりに Junk というフォルダに保存できます。
blSWClientDesintationForeign
上記の blSWClientDestinationLocal と同じ形式と内容です。ただし、ローカル以外のドメインのユーザーに適用されます。
blSWUseClientOptin
Sun Java System Messaging Server で使用する場合は、常に TRUE に設定してください。
blswcServerAddress
ip:port[,ip:port,...] という形式で Brightmail サーバーの IP アドレスとポート番号を指定します
SpamAssassin を使用するこの節には、以下の項があります。
SpamAssassin の概要
Messaging Server では、SpamAssassin の使用がサポートされています。SpamAssassin はフリーウェアのメールフィルタで、スパムの特定に使用されます。SpamAssassin は Perl で記述されたライブラリ、アプリケーションのセット、および SpamAssassin のメッセージングシステムへの統合に使用するユーティリティで構成されています。
SpamAssassin では、すべてのメッセージのスコアが計算されます。スコアは、メッセージヘッダーや本文の情報に対して一連のテストを実行することによって計算されます。各テストに成功するか失敗するかによって、True (スパム) または False (スパムではない) がレンダリングされます。スコアは正または負の実数です。スコアが指定したしきい値 (通常 5.0) を超えると、スパムであるとみなされます。SpamAssassin の結果文字列の例を次に示します。
True ; 18.3 / 5.0
True は、メッセージがスパムであることを示します。18.3 は SpamAssassin スコアです。5.0 はしきい値です。
SpamAssassin には高い設定性があります。テストはいつでも追加したり削除したりでき、既存テストのスコアは調整されます。これらはすべてさまざまな設定ファイルを通じて実行されます。SpamAssassin の詳細については、SpamAssassin の Web サイトを参照してください。
Brightmail のスパムおよびウィルススキャンライブラリを呼び出す場合と同じ方法で SpamAssassin spamd サーバーに接続できます。Messaging Server で提供するモジュールの名前は libspamass.so です。
SpamAssassin/Messaging Server の動作方式
spamd は SpamAssassin のデーモンバージョンであり、MTA から呼び出すことができます。spamd は、要求のソケットを待機し、子プロセスを生成してメッセージがテストされるようにします。子プロセスは、メッセージが処理され結果が戻されたあと、破棄されます。コード自体は子プロセス間で共有されるため、理論上、フォークは効率的なプロセスであるはずです。
SpamAssassin インストールによるクライアント部分、spamc は、使用されません。代わりに、Messaging Server の一部である libspamass.so という共有ライブラリによってこの機能が実行されます。libspamass.so は、Brightmail SDK の読み込みと同じように読み込まれます。
MTAから見ると、SpamAssassin とスパムのフィルタ処理用の Brightmail は、ほぼ透過的に切り替えることができます。同じ機能を持っているわけではないので、完全に透過的というわけではありません。たとえば、Brightmail ではウィルス用のフィルタ処理も行えますが、SpamAssassin はスパム用のフィルタ処理にしか使われません。この 2 つのソフトウェアパッケージによって返される結果、つまり判定も、異なります。SpamAssassin がスコアを提供するのに対し、Brightmail は判定名のみを提供します。このため、設定にもいくつかの違いがあります。
MTA と一緒に SpamAssassin を使用すると、SpamAssassin からはスコアと判定のみが返されます。メッセージ自体は変更されません。つまり、ヘッダーの追加や件名の変更のようなオプションは、Sieve スクリプトによって行う必要があります。また、mode オプションを使用すると、判定を示すために返す文字列を指定できます。文字列の選択肢は、NULL、デフォルト、SpamAssassin の結果文字列、または verdict 文字列です。詳細は、表 14-4 を参照してください。
SpamAssassin の要件と使用法の考慮
- SpamAssassin はフリーウェアです。ソフトウェアとマニュアルについては、http://www.spamassassin.org を参照してください。
- SpamAssassin は、スパムを非常に正確に検出できるよう調整し設定することができます。SpamAssassin の調整はユーザーと SpamAssassin コミュニティが行うもので、Messaging Server は SpamAssassin で実行できる内容を提供したり拡張したりはしません。
- 特定のメンバーが利用可能でない場合、SpamAssassin によるスループットの低下は Brightmail の場合より大きいと思われます。
- MTA と統合された SpamAssassin は、ユーザー、ドメイン、またはチャネルに対して有効にできます。
- SpamAssassin は、Vipul Razor または Distributed Checksum Clearinghouse (DCC) のようなそのほかのオンラインデータベースを使って設定できます。
- Messaging Server は Secure Socket Layer (SSL) バージョンの libspamass.so を提供しません。ただし、OpenSSL を使うように SpamAssassin を構築できます。
- Perl 5.6 以降が必要です。
SpamAssassin を実行する場所
SpamAssassin は、それ自体が置かれている個々のシステム上、単一のシステム配備の Messaging Server と同じシステム上、または 2 層配備の MTA と同じシステム上で実行できます。MTA とメッセージストア間で Local Mail Transfer Protocol (LMTP) が使われている場合、フィルタ処理は MTA から呼び出す必要があります。メッセージストアから呼び出すことはできません。MTA とメッセージストア間で SMTP が使われている場合は、いずれか一方から呼び出すことができ、いずれかのシステムか 3 つ目の別のシステムで実行できます。
SpamAssassin を実行するサーバーのファームを使用する場合は、それらの前でロードバランサを使用する必要があります。MTA は、SpamAssassin サーバー用に 1 つのアドレスのみを持つよう設定されます。
SpamAssassin を配備する
以下の手順を実行して、SpamAssassin を配備します。
- SpamAssassin をインストールして構成します。インストールおよび設定情報については、SpamAssassin ソフトウェアマニュアルを参照してください。「SpamAssassin オプション」も参照してください。
- SpamAssassin のクライアントライブラリをロードおよび構成します。このためには、クライアントライブラリ libspamass.so と設定ファイルを MTA に対して指定する必要があります (ファイルは作成する必要がある)。「スパムのフィルタ処理ソフトウェアのクライアントライブラリをロードおよび構成する」を参照してください。
- スパム用にフィルタ処理するメッセージを指定します。ユーザー、ドメイン、またはチャネルごとにメッセージをフィルタ処理できます。「フィルタ処理を行うメッセージを指定する」を参照してください。
- スパムメッセージに対して実行するアクションを指定します。スパムは、破棄したり、フォルダにファイリングしたり、件名にタグ付けしたりできます。「スパムメッセージに対して実行するアクションを指定する」を参照してください。
- 必要に応じてほかのフィルタ設定パラメータを設定します。「MTA スパムフィルタオプション (option.dat)」を参照してください。
SpamAssassin 設定の例
この節では、一般的な SpamAssassin 設定の例について説明します。
- 「件名行に SpamAssassin の結果文字列を追加するには」
注
これらの例では、多数のオプションとキーワードを使用しています。詳細は、「スパムフィルタ用の MTA チャネルキーワード」および「MTA スパムフィルタオプション (option.dat)」を参照してください。
スパムを個別のフォルダにファイリングするには
この例では、ローカルメッセージストアに届くメッセージをテストし、spam というフォルダ内にスパムをファイリングします。最初の 3 つのステップは任意の順序で実行できます。
- SpamAssassin の設定ファイルを作成します。
このファイルの名前と場所は、手順 2 で指定したものです。適切な名前は spamassassin.opt です。このファイルには以下の行が含まれます。
host および port は、spamd が実行されているシステムの名前と、spamd が着信要求を待機するポートの名前です。mode=0 は、メッセージがスパムとして認識された場合に、verdict によって指定された文字列が返されることを指定します。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。SpamAssassin 設定パラメータについては、表 14-4 を参照してください。
- option.dat ファイルに以下の行を追加します。
spamfilter1_config_files は、SpamAssassin 設定ファイルを指定します。
spamfilter1_library は、SpamAssassin 共有ライブラリを指定します。
spamfilter1_optional=1 は、spamd による失敗があった場合に MTA が操作を続行することを指定します。
spamfilter1_string_action は、スパムメッセージに対して実行する Sieve アクションを指定します。
この例では、spamfilter1_string_action は必須ではありません。これは、デフォルト値があらかじめ data:,require "fileinto"; fileinto "$U; であるためです。この行では、スパムメッセージがフォルダに送られることを指定しています。フォルダの名前は、SpamAssassin によって返されるスパム判定値です。SpamAssassin によって返される値は、spamassassin.opt の verdict オプションによって指定されます (手順 1 を参照)。この例では、フォルダ名は spam です。
- フィルタ処理するメッセージを指定します。
ローカルメッセージストアに届くすべてのメッセージをフィルタ処理するには、ims-ms チャネルの destinationspamfilterXoptin spam を追加して imta.cnf ファイルを変更します。
!
! ims-ms
ims-ms defragment subdirs 20 notices 1 7 14 21 28 backoff "pt5m" "pt10m" "pt30m" "pt1h" "pt2h" "pt4h" maxjobs 4 pool IMS_POOL fileinto
$U+$S@$D destinationspamfilter1optin spam
ims-ms-daemon- 設定をコンパイルしなおし、サーバーを再起動します。MTA を再起動するだけでかまいません。stop-msg を実行する必要はありません。
# imsimta cnbuild
# imsimta restart- spamd デーモンを起動します。次の形式のコマンドを使用してこれを実行します。
スパムメッセージに SpamAssassin スコアを含むヘッダーを追加する
この例では、SpamAssassin によってスパムであると判断された各メッセージに、ヘッダー「Spam-test: 結果文字列」を追加しています。ヘッダーの例は次のとおりです。
Spam-test:True ; 7.3 / 5.0
ここで、「Spam-test:」はリテラルで、その後ろはすべて結果文字列です。True はそれがスパムであることを意味し、False はスパムではないことを意味します。7.3 は SpamAssassin スコアです。5.0 はしきい値です。この結果は、一定のスコアを超えたメールや一定のスコア間のメールをファイリングまたは破棄できる、Sieve フィルタを設定する場合に便利です。
また、USE_CHECK を 0 に設定すると、判定文字列とともに一致する SpamAssassin テストのリストが返されます。表 14-4 の「USE_CHECK」を参照してください。
- フィルタ処理するメッセージを指定します。詳細は、「スパムを個別のフォルダにファイリングするには」の手順 3 を参照してください。
- SpamAssassin の設定ファイルを作成します。
このファイルの名前と場所は、spamfilter_configX_file で指定したものです (次の手順を参照)。このファイルには、以下の行が含まれます。
host および port は、spamd が実行中のシステムの名前と、spamd が着信要求を待機するポートの名前です。mode=1 は、メッセージがスパムであると判明した場合に SpamAssassin の結果文字列が返されることを指定します。field= は、SpamAssasin の結果文字列のプレフィックスを指定します。この例では、プレフィックスは Sieve スクリプトで指定するため、必要ありません。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。
- option.dat ファイルに以下の行を追加します。
前に示した例と同様、最初の 3 つのオプションは、SpamAssassin 設定ファイル、共有ライブラリ、および、共有ライブラリで失敗があった場合に MTA 操作を続行することを指定します。
spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test:$U";
この行は、スパムメッセージにヘッダーを追加することを指定します。ヘッダーには、リテラルプレフィックス Spam-text: と、その後に SpamAssassin が返す文字列が含まれます。手順 2 で mode=1 を指定したため、SpamAssassin 結果文字列が返されます。例: True ; 7.3 / 5.0
- 設定をコンパイルしなおし、サーバーを再起動して、spamd デーモンを起動します。
「スパムを個別のフォルダにファイリングするには」を参照してください。
件名行に SpamAssassin の結果文字列を追加するには
SpamAssassin の結果文字列を件名行に追加することによって、ユーザーが SpamAssassin スコアを含むメッセージを読むかどうかを判断できます。次に例を示します。
Subject:[SPAM True ; 99.3 / 5.0] Free Money At Home with Prescription Xanirex!
USE_CHECK を 0 に設定すると、判定文字列とともに一致する SpamAssassin テストのリストが返されます (表 14-4 の「USE_CHECK」を参照)。このリストは非常に長くなることがあるため、USE_CHECK は 1 に設定することをお勧めします。
- フィルタ処理するメッセージを指定します。「スパムを個別のフォルダにファイリングするには」の手順 3 を参照してください。
- SpamAssassin の設定ファイルを作成します。
この手順の詳細は、「スパムを個別のフォルダにファイリングするには」を参照してください。mode=1 は、メッセージがスパムであると判明した場合に SpamAssassin の結果文字列が返されることを指定します。
host および port は、spamd が実行中のシステムの名前と、spamd が着信要求を待機するポートの名前です。mode=1 は、メッセージがスパムであると判明した場合に SpamAssassin の結果文字列が返されることを指定します。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。
- option.dat ファイルに以下の行を追加します。
前に示した例と同様、最初の 3 つのオプションは、SpamAssassin 設定ファイル、共有ライブラリ、および、共有ライブラリで失敗があった場合に MTA 操作を続行することを指定します。
spamfilter1_string_action=data:,addtag "[SPAM detected $U]";
この行は、Subject: 行にタグを追加することを指定します。これには、リテラルプレフィックス SPAM detected が含まれ、そのあとに field 文字列 (デフォルトは Spam-Test)、そのあとに SpamAssassin によって返される [結果文字列] が含まれます。手順 2 で mode=1 を指定したため、SpamAssassin 結果文字列が返されます。したがって、件名行は次のようになります。
Subject:[SPAM detected Spam-Test:True ; 11.3 / 5.0] Make Money!
addheader と addtag を併用することもできます。
spamfilter1_string_action=data:,require ["addheader"];addtag "[SPAM detected $U]";addheader "Spamscore:$U";
メッセージは次のようになります。
Subject:[SPAM detected Spam-Test:True ; 12.3 / 5.0] Vigaro Now!
Spamscore:Spam-Test:True ; 12.3 / 5.0spamassassin.opt で field= を設定して、Spam-Test のデフォルト値を削除します。よりすっきりとしたメッセージが返されます。
Subject:[SPAM True ; 91.3 / 5.0] Vigaro Now!
Spamscore:True ; 91.3 / 5.0- 設定をコンパイルしなおし、サーバーを再起動して、spamd デーモンを起動します。
「スパムを個別のフォルダにファイリングするには」を参照してください。
SpamAssassin をテストする
SpamAssassin をテストするには、最初に spamassassion.opt ファイルに debug=1 を設定します。imta.cnf にあるチャネル固有の master_debug または slave_debug をオンにする必要はありません。そのあと、テストユーザーにテストメッセージを送信します。msg_svr_base/data/tcp_local_slave.log* ファイルには次のような行があるはずです。
15:15:45.44: SpamAssassin callout debugging enabled; config /opt/SUNWmsgsr/config/spamassassin.opt
15:15:45.44: IP address 127.0.0.1 specified
15:15:45.44: Port 2000 selected
15:15:45.44: Mode 0 selected
15:15:45.44: Field "Spam-Test:" selected
15:15:45.44: Verdict "spam" selected
15:15:45.44: Using CHECK rather than SYMBOLS
15:15:45.44: Initializing SpamAssassin message context
...
15:15:51.42: Creating socket to connect to SpamAssassin
15:15:51.42: Binding SpamAssassin socket
15:15:51.42: Connecting to SpamAssassin
15:15:51.42: Sending SpamAssassin announcement
15:15:51.42: Sending SpamAssassin the message
15:15:51.42: Performing SpamAssassin half close
15:15:51.42: Reading SpamAssassin status
15:15:51.67: Status line:SPAMD/1.1 0 EX_OK
15:15:51.67: Reading SpamAssassin result
15:15:51.67: Result line:Spam:False ; 1.3 / 5.0
15:15:51.67: Verdict line:Spam-Test:False ; 1.3 / 5.0
15:15:51.67: Closing connection to SpamAssassin
15:15:51.73: Freeing SpamAssassin message context
ログファイルにこのような行が含まれていない場合、または spamd が実行されていない場合は、SMTP サーバーに最後のピリオド (.) が送信されたあと、SMTP ダイアログに次のようなエラーメッセージが返されます。
452 4.4.5 Error writing message temporaries - Temporary scan failure:End message status = -1
また、option.dat に spamfilter1_optional=1 が設定 (強く推奨) されている場合、メッセージは受け入れられますがフィルタ処理は行われません。これはスパムのフィルタ処理が有効になっていないのと同じで、tcp_local_slave.log* に次の行が表示されます。
15:35:15.69: Creating socket to connect to SpamAssassin
15:35:15.69: Binding SpamAssassin socket
15:35:15.69: Connecting to SpamAssassin
15:35:15.69: Error connecting socket:Connection refused
15:35:15.72: Freeing SpamAssassin message context
SpamAssassin に対する呼び出しは、SMTP サーバーがメッセージ全体を受信したあと、つまり、最後の「.」が SMTP サーバーに送信されたあとで、SMTP サーバーが受け取ったメッセージの差出人に認識される前に行われます。
もう 1 つのテストは、たとえば Mail-SpamAssassin-2.60 ディレクトリから、sample-spam.txt を使ってサンプルのスパムメッセージを送信することです。このメッセージには、次のような特殊なテキスト文字列が含まれます。
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
対応する tcp_local_slave.log* には、次のような内容が含まれます。
16:00:08.15: Creating socket to connect to SpamAssassin
16:00:08.15: Binding SpamAssassin socket
16:00:08.15: Connecting to SpamAssassin
16:00:08.15: Sending SpamAssassin announcement
16:00:08.15: Sending SpamAssassin the message
16:00:08.15: Performing SpamAssassin half close
16:00:08.15: Reading SpamAssassin status
16:00:08.43: Status line:SPAMD/1.1 0 EX_OK
16:00:08.43: Reading SpamAssassin result
16:00:08.43: Result line:Spam:True ; 1002.9 / 5.0
16:00:08.43: Verdict line:Spam-Test:True ; 1002.9 / 5.0
16:00:08.43: Closing connection to SpamAssassin
16:00:08.43: Mode 0 verdict of spam
16:00:08.43: Mode 0 verdict of spam
16:00:08.47: Freeing SpamAssassin message context
mail.log_current ファイルの対応するエントリは、次のようになります。宛先アドレスの +spam 部分は、メッセージが spam というフォルダにファイリングされることを示します。
15-Dec-2003 15:32:17.44 tcp_intranet ims-ms E 1 morchia@siroe.com rfc822;morchia
morchia+spam@ims-ms-daemon
15-Dec-2003 15:32:18.53 ims-ms D 1 morchia@siroe.com rfc822;morchia morchia+spam@ims-ms-daemon
SpamAssassin オプション
この節では、SpamAssassin オプションの表を示します。
表 14-4 SpamAssassin オプション (spamassassin.opt)
オプション
説明
デフォルト
debug
libspamass.so でデバッグをオンにするかどうかを指定します。spamd 自体のデバッグは、spamd を呼び出すコマンド行で制御されます。0 または 1 に設定します。
0
field
SpamAssasin の結果文字列のプレフィックスを指定します。SpamAssassin の結果は次のようになります。
Spam-Test:False ; 0.0 / 5.0
Spam-Test:True ; 27.7 / 5.0field オプションは、結果の Spam-Test 部分の変更方法を提供します。空の field 値が指定されると「:」が削除されることに注意してください。
USE_CHECK が 0 に設定されている場合、結果の文字列は次のようになります。
Spam-test:False ; 0.3 / 4.5 ; HTML_MESSAGE,NO_REAL_NAME
Spam-test:True ; 8.8 / 4.5 ; NIGERIAN_BODY, NO_REAL_NAME,PLING_PLING,RCVD_IN_SBL,SUBJ_ALL_CAPS
"Spam-test"
host
spamd が実行されているシステムの名前。
localhost
mode
SpamAssassin フィルタ結果から判定情報への変換を制御します。つまり、メッセージ処理後にどの判定情報を返すかを指定します。次の 4 種類のモードが使用可能です。詳細は、「SpamAssassin の mode オプション」を参照してください。
0 - メッセージがスパムメッセージの場合は、判定文字列 (verdict オプションで指定される文字列) を返します。MTA オプション spamfilterX_string_action を使用して、verdict 文字列が返された場合の処理を指定できます。以下で定義する verdict オプションが空である場合や指定されていない場合、メッセージがスパムメッセージのときは、NULL 判定を返します。MTA オプション spamfilterX_null_action を使用して、NULL 判定が返された場合の処理を指定できます。
スパムではない場合は、SpamAssassin のデフォルトの結果文字列を返します。デフォルトの判定とは、何のアクションもとらず通常どおり配信することを意味します。
1 - メッセージがスパムであると判明した場合は SpamAssassin の結果文字列を返します。スパムではない場合は、SpamAssassin のデフォルトの結果文字列を返します。デフォルトの判定とは、何のアクションもとらず通常どおり配信することを意味します。SpamAssassin の結果文字列は、次のように表示されます。True ; 6.5 / 7.3
2 - モード 1 と同様。ただし、メッセージがスパムかどうかにかかわらず SpamAssassin の結果文字列が返される点で異なります。デフォルト判定または NULL 判定が返されることはなく、verdict オプションが使用されることはありません。
3 - メッセージがスパムであると判明した場合に SpamAssassin の結果文字列を返します。スパムではない場合は verdict オプションで指定された verdict 文字列を返します。SpamAssassin 結果文字列に対するアクションを制御するには、spamfilterX_verdict_n オプションと spamfilterX_action_n オプションの一致ペアを使用します。verdict 文字列に対するアクションを制御するには、spamfilterX_string_action を使用します。
0
port
spamd が着信要求を待機するポート番号を指定します。
783
USE_CHECK
1 - spamd CHECK コマンドを使って SpamAssassin スコアを返します。
0 - SYMBOLS コマンドを使って一致する SpamAssassin テストのスコアとリストを返すことができます。2.55 以前のバージョンの SpamAssassin でこのオプションを使うと、システムがハングアップしたりその他の問題が発生することがあります。前述の「field」を参照してください。
SOCKS_HOST
文字列。中間にある SOCKS サーバーの名前を指定します。このオプションが指定されている場合、指定された SOCKS サーバーを介して ICAP 接続が確立され、直接には接続されません。
""
SOCKS_PORT
中間にある SOCKS サーバーが動作しているポートを指定します。
1080
SOCKS_PASSWORD
SOCKS サーバーを介した接続を確立するために使用するパスワード (文字列) を指定します。ユーザー名およびパスワードが必要かどうかは、SOCKS サーバーの設定によって異なります。
""
SOCKS_USERNAME
SOCKS サーバーを介した接続を確立するために使用するユーザー名 (文字列) を指定します。
""
verdict
MODE 0 で使用される判定文字列を指定します。
""
SpamAssassin の mode オプション
メッセージの処理後、SpamAssassin はメッセージがスパムかどうかを判定します。mode オプションを使用すると、判定を示すために返す文字列を指定できます。文字列の選択肢は、NULL、デフォルト、SpamAssassin の結果文字列、または verdict オプションで指定された verdict 文字列です。デフォルトの文字列とは、NULL、SpamAssassin の結果文字列、または verdict で指定された文字列ではなく、その他の設定不可能な結果文字列です。mode の動作の概要を次の表で説明します。
表 14-5 SpamAssassin の mode オプションに対応して返される文字列
verdict の設定
スパムかどうか
mode=0
mode=1
mode=2
mode=3
verdict="" (設定なし)
はい
NULL
SpamAssassin の結果
SpamAssassin の結果
SpamAssassin の結果
いいえ
デフォルト
デフォルト
SpamAssassin の結果
デフォルト
verdict=文字列
はい
verdict 文字列
SpamAssassin の結果
SpamAssassin の結果
SpamAssassin の結果
いいえ
デフォルト
デフォルト
SpamAssassin の結果
verdict 文字列
1 列目は、verdict オプションが設定されているかどうかを示します。2 列目は、メッセージがスパムかどうかを示します。mode の列は、各モードに対応して返される文字列を示します。たとえば、verdict が設定されておらず mode が 0 に設定されている場合、メッセージがスパムでなければデフォルト文字列が返されます。verdict が YO SPAM! に設定されていて mode が 0 に設定されている場合、メッセージがスパムであれば YO SPAM! という文字列が返されます。
Symantec Anti-Virus Scanning Engine (SAVSE) を使用するSAVSE の配備方法以外にも、この節には、ほかの ICAP 対応のスパム防止/ウィルス防止プログラムを配備する際に有効な情報が含まれています。この節には、以下の項があります。
SAVSE の概要
SAVSE は、ウィルススキャンサービスを提供する TCP/IP サーバーアプリケーションおよび通信用のアプリケーションプログラミングインタフェース (API) です。ネットワークインフラストラクチャ機器を通して提供されたり、これらの機器に保存されるトラフィックを保護するために設計されています。モバイルコードや圧縮ファイル形式も含め、すべての主要なファイル形式でウィルス、ワーム、およびトロイの木馬を検出し、これらから保護します。詳細については、Symantec の Web サイトを参照してください。
SAVSE の要件と使用法の考慮
これは Symantec から単独でライセンス許可された製品です。
SAVSE の構成では、スキャンモードだけがサポートされています。スキャンと修復、スキャンと削除のモードはサポートされていません。
SAVSE を実行する場所
SAVSE、または ICAP をサポートするほかのサーバーは、それ自体が置かれている個々のシステム上、単一のシステム配備の Messaging Server と同じシステム上、または 2 層配備の MTA と同じシステム上で実行できます。MTA とメッセージストア間で Local Mail Transfer Protocol (LMTP) が使われている場合、フィルタ処理は MTA から呼び出す必要があります。メッセージストアから呼び出すことはできません。MTA とメッセージストア間で SMTP が使われている場合は、いずれか一方から呼び出すことができ、いずれかのシステムか 3 つ目の別のシステムで実行できます。
SAVSE を実行するサーバーのファームを使用する場合は、それらの前でロードバランサを使用する必要があります。MTA は、SpamAssassin サーバー用に 1 つのアドレスのみを持つよう設定されます。
SAVSE を配備する
以下の手順を実行して、SAVSE を配備します。
- SAVSE をインストールして構成します。インストールおよび設定情報については、Symantec ソフトウェアマニュアルを参照してください。「SAVSE オプション」も参照してください。
- SAVSE のクライアントライブラリをロードおよび構成します。このためには、クライアントライブラリ libicap.so と設定ファイルを MTA に対して指定する必要があります (ファイルは作成する必要がある)。「スパムのフィルタ処理ソフトウェアのクライアントライブラリをロードおよび構成する」を参照してください。
- ウィルス用にフィルタ処理するメッセージを指定します。ユーザー、ドメイン、またはチャネルごとにメッセージをフィルタ処理できます。「フィルタ処理を行うメッセージを指定する」を参照してください。
- ウィルスメッセージに対して実行するアクションを指定します。ウィルスは、破棄したり、フォルダにファイリングしたり、件名にタグ付けしたりできます。「スパムメッセージに対して実行するアクションを指定する」を参照してください。
- 必要に応じてほかのフィルタ設定パラメータを設定します。「MTA スパムフィルタオプション (option.dat)」を参照してください。
SAVSE の設定例
次の例では、ローカルメッセージストアに届くメッセージをテストして、ウィルスを含むメッセージを破棄します。最初の 3 つのステップは任意の順序で実行できます。
- SAVSE の設定ファイルを作成します。
このファイルの名前と場所は、手順 2 で指定したものです。ここでは SAVSE.opt という名前を使用します。このファイルの設定例を次に示します。
host および port は、SAVSE プログラムが実行されているシステムの名前と、SAVSE プログラムが受信要求を待機するポート (SAVSE のデフォルトは 1344) です。mode=0 は、メッセージがウィルスを含んでいると認識された場合に、verdict によって指定された文字列 (この例の場合は virus という単語) が返されることを指定します。debug=1 はデバッグをオンにします。ICAP 設定パラメータについては、表 14-6 を参照してください。
- option.dat ファイルを作成します。次に例を示します。
spamfilter1_config_files は、SAVSE 設定ファイルを指定します。
spamfilter1_library は、SAVSE 共有ライブラリの場所を指定します。
spamfilter1_optional=1 は、SAVSE プログラムによる失敗があった場合に MTA が操作を続行することを指定します。
spamfilter1_string_action は、スパムメッセージに対して実行する Sieve アクションを指定します。この値は、ウィルスを含むメッセージが破棄されるように指定します。これはデフォルト値なので、値を変更する場合を除き、指定する必要はありません。
- フィルタ処理するメッセージを指定します。
ローカルメッセージストアに届くすべてのメッセージをフィルタ処理するには、ims-ms チャネルの destinationspamfilter1optin spam を追加して imta.cnf ファイルを変更します。
!
! ims-ms
ims-ms defragment subdirs 20 notices 1 7 14 21 28 backoff "pt5m" "pt10m" "pt30m" "pt1h" "pt2h" "pt4h" maxjobs 4 pool IMS_POOL fileinto
$U+$S@$D destinationspamfilter1optin virus
ims-ms-daemon- 設定をコンパイルしなおし、サーバーを再起動します。MTA を再起動するだけでかまいません。stop-msg を実行する必要はありません。
# imsimta cnbuild
# imsimta restart- SAVSE が起動していることを確認します。
自動的に起動しているはずですが、起動していない場合は、次のような起動コマンドを使用します。/etc/init.d/symcscna start
ほかの使用可能な設定
mode を 0 に設定して spamfilterX_null_option とともに使用すると、メッセージがスパムであると判明した場合に特定のフォルダにメッセージをファイリングするなど、ほかのアクションを実行できます。次に例を示します。
spamfilter1_null_option=data:,require "fileinto"; fileinto "VIRUS";
感染したメッセージをフォルダにファイリングすることは、ほとんどの場合不適切です。
mode を 1 に設定すると、アクションを起動できます。たとえば、mode を 1 に設定して、MTA の spamfilterX_string_action オプションを次のように設定すると、スパムの結果を拒否メッセージに含めることができます。
spamfilter1_string_action=data:,require "reject"; reject "Message contained a virus [$U]";
reject アクションはウィルスを差出人に送り返すため、fileinto と同様、このアクションを使用してウィルスを処理する方法は不適切です。
option.dat ファイルに行を追加して、スパムメッセージのヘッダーにタグを追加することもできます。次に例を示します。
spamfilter1_string_action=data:,addtag "[SPAM detected!]";
mode を 2 に設定すると、メッセージにウィルスが含まれると判定されるかどうかにかかわらず、アクションを実行できます。あとでテストできるヘッダーフィールドが追加されているところは、明らかに mode 2 のアプリケーションです。
spamfilterX_string_action=data:,require ["addheader"];addheader "$U"
SAVSE オプション
SAVSE オプションファイルは実際に、かなり一般的な ICAP オプションファイルです。オプションファイルの名前および場所は、option.dat の spamfilterX_config_file で設定されています。SAVSE オプションファイルは、option=value という形式の行から構成されています。HOST というオプションが 1 つ必要です。このオプションは、ICAP フィルタ処理サーバーが動作しているシステムの名前に設定する必要があります。ICAP サーバーがローカルホストで動作していても、このオプションを設定する必要があります。SAVSE オプションファイルを以下に示します。
表 14-6 ICAP オプション
オプション
説明
デフォルト
debug
ICAP インタフェースモジュールからのデバッグ出力を有効または無効にします。0 または 1。
0
field
ICAP の結果のプレフィックスを指定します。SAVSE の結果文字列は次のようになります。
Virus-Test:False
Virus-Test:True; W32.Mydoom.A@mm.encこのオプションは、結果の Virus-Test: 部分の変更方法を提供します。空の field 値が指定されると「:」が削除されることに注意してください。
Virus-Test:
host
ICAP フィルタ処理サーバーが動作しているシステムの名前
localhost
mode
ICAP フィルタ結果から判定情報への変換を制御します。つまり、メッセージ処理後に返す文字列情報を指定します。次の 4 種類のモードが使用可能です。詳細は、「ICAP の mode オプション」を参照してください。
0 - メッセージにウィルスが含まれる場合は、判定文字列 (verdict オプションで指定される文字列) を返します。MTA オプション spamfilterX_string_action を使用して、verdict 文字列が返された場合の処理を指定できます。verdict オプションが空である場合や設定されていない場合は、NULL 判定を返します。MTA オプション spamfilterX_null_action を使用して、NULL 判定が返された場合に、メッセージを破棄するデフォルトアクションを置き換えるときの処理を指定できます。
メッセージにウィルスが含まれていない場合は、デフォルトの文字列が返されます。デフォルトの文字列とは、設定不可能な文字列で、何のアクションもとらず通常どおり配信することを意味します。
1 - メッセージにウィルスが含まれていると判明した場合は ICAP の結果文字列を返します。メッセージにウィルスが含まれていない場合は、デフォルトの文字列が返されます。デフォルトの文字列とは、何のアクションもとらず通常どおり配信することを意味します。以下に、ICAP 結果文字列の例を 2 つ示します。
VIRUS TEST: FALSE
VIRUS-TEST: TRUE; W32.Mydoom.A@mm.enc2 - ICAP 結果文字列を無条件に返します。デフォルト判定または NULL 判定が返されることはなく、verdict オプションが使用されることはありません。この設定は、メッセージにウィルスが含まれると判定されるかどうかにかかわらず、アクションを実行する必要がある場合を対象にしています。あとでテストできるヘッダーフィールドが追加されているところは、明らかに mode 2 のアプリケーションです。
spamfilterX_string_action=data:,require ["addheader"];addheader "$U"
3 - メッセージにウィルスが含まれていると判明した場合は ICAP の結果文字列を返します。ウィルスが含まれていない場合は verdict オプションで指定された verdict 文字列を返します。この設定は、ウィルスが発見されたらある 1 つのアクションを実行し、発見されなかったら別のアクションを実行する必要がある場合を対象としています。ICAP 結果文字列に対応するアクションを制御するには、spamfilterX_verdict_n オプションと spamfilterX_action_n オプションの一致ペアを使用します。verdict 文字列に対するアクションを制御するには、spamfilterX_string_action を使用します。
0
port
ICAP サーバーが動作しているポート番号を指定します。
1344
SOCKS_HOST
文字列。中間にある SOCKS サーバーの名前を指定します。このオプションが指定されている場合、指定された SOCKS サーバーを介して ICAP 接続が確立され、直接には接続されません。
""
SOCKS_PORT
整数。中間にある SOCKS サーバーが動作しているポートを指定します。
1080
SOCKS_PASSWORD
文字列。SOCKS サーバーを介した接続を確立するために使用するパスワードを指定します。ユーザー名およびパスワードが必要かどうかは、SOCKS サーバーの設定によって異なります。
""
SOCKS_USERNAME
文字列。SOCKS サーバーを介した接続を確立するために使用するユーザー名を指定します。
""
verdict
MODE 0 および 3 で使用される判定文字列を指定します。
""
ICAP の mode オプション
メッセージの処理後、ICAP ウィルス防止プログラムは SASVE と同様に、メッセージにウィルスが含まれているかどうかを判定します。mode オプションを使用すると、この判定を示すために ICAP プログラムから返す文字列を指定できます。文字列の選択肢は、NULL、デフォルト、ICAP の結果文字列、または verdict オプションで指定された verdict 文字列です。デフォルトの文字列とは、NULL、ICAP の結果文字列、または verdict で指定された文字列ではなく、プログラムによって返されるその他の設定不可能な文字列です。mode の動作の概要を次の表で説明します。
表 14-7 ICAP の mode オプションに対応して返される判定文字列
verdict の設定
ウィルスかどうか
mode=0
mode=1
mode=2
mode=3
verdict="" (設定なし)
はい
NULL
ICAP の結果
ICAP の結果
ICAP の結果
いいえ
デフォルト
デフォルト
ICAP の結果
デフォルト
verdict=文字列
はい
verdict 文字列
ICAP の結果
ICAP の結果
ICAP の結果
いいえ
デフォルト
デフォルト
ICAP の結果
verdict 文字列
1 列目は、verdict オプションが設定されているかどうかを示します。2 列目は、メッセージにウィルスが含まれているかどうかを示します。mode の列は、各モードに対応して返される文字列を示します。たとえば、verdict が設定されておらず mode が 0 に設定されている場合、メッセージにウィルスが含まれていなければ、ICAP プログラムからデフォルト文字列が返されます。verdict が WARNING VIRUS! に設定されていて mode が 0 に設定されている場合、メッセージにウィルスが含まれていれば、ICAP プログラムは WARNING VIRUS! という文字列が返されます。
Sieve 拡張のサポート標準の 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 ["addheader"];addheader "$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;}