この節では、一般的な SpamAssassin 設定の例について説明します。
これらの例では、多数のオプションとキーワードを使用しています。表 14–1 および表 14–2 を参照してください。
この例では、ローカルメッセージストアに届くメッセージをテストし、spam というフォルダ内にスパムをファイリングします。最初の 3 つのステップは任意の順序で実行できます。
SpamAssassin の設定ファイルを作成します。
このファイルの名前と場所は、手順 2 で指定したものです。適切な名前は spamassassin.opt です。このファイルには、次に示す行が含まれます。
host=127.0.0.1 port=2000 mode=0 verdict=spam debug=1 |
host および port は、spamd が実行されているシステムの名前と、spamd が着信要求を待機するポートです。mode=0 は、メッセージがスパムとして認識された場合に、verdict によって指定された文字列が返されることを指定します。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。表 14–4 を参照してください。
option.dat ファイルに、次に示す行を追加します。
! for Spamassassin spamfilter1_config_file=/opt/SUNWmsgsr/config/spamassassin.opt spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so spamfilter1_optional=1 spamfilter1_string_action=data:,require "fileinto"; fileinto "$U"; |
spamfilter1_config_file は、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 デーモンを起動します。次の形式のコマンドを使用してこれを実行します。
spamd -d
spamd は、デフォルトではローカルシステムからの接続を受け入れるだけです。SpamAssassin と Messaging Server が別のシステム上で実行されている場合は、次の構文が必要です。
spamd -d -i listen_ip_address -A allowed_hosts
listen_ip_address は待機対象のアドレスであり、allowed_hosts はこの spamd インスタンスに接続できる、認証されたホストまたはネットワークのリスト (IP アドレスを使用) です。
-i listen_ip_address で 0.0.0.0 を設定すると、spamd にすべてのアドレスを待機させることができます。spamfilterX_verdict_ n を使用すると、システムの IP アドレスを変更したときにコマンドスクリプトを変更しなくても済むため、すべてのアドレスを待機することをお勧めします。
この例では、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=127.0.0.1 port=2000 mode=1 field= debug=1 |
host および port は、spamd が実行されているシステムの名前と、spamd が着信要求を待機するポートです。mode=1 は、メッセージがスパムであると判明した場合に SpamAssassin の結果文字列が返されることを指定します。field= は、SpamAssassin の結果文字列のプレフィックスを指定します。この例では、プレフィックスは Sieve スクリプトで指定するため、必要ありません。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。
option.dat ファイルに、次に示す行を追加します。
!for Spamassassin spamfilte1r_config_file=/opt/SUNWmsgsr/config/spamassassin.opt spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so spamfilter1_optional=1 spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test: $U"; |
前に示した例と同様、最初の 3 つのオプションは、SpamAssassin 設定ファイル、共有ライブラリ、および、共有ライブラリで失敗があった場合に MTA 操作を続行することを指定します。そのあとに次の行が続いています。
spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test: $U";
この行は、スパムメッセージにヘッダーを追加することを指定します。ヘッダーには、リテラルプレフィックス Spam-text: と、そのあとに SpamAssassin が返す文字列が含まれます。前の手順で mode=1 を指定したため、SpamAssassin 結果文字列が返されます。次に例を示します。True; 7.3/5.0
設定をコンパイルしなおし、サーバーを再起動して、spamd デーモンを起動します。
「14.4.5 SpamAssassin 設定の例」を参照してください。
SpamAssassin の結果文字列を件名行に追加することによって、ユーザーが SpamAssassin スコアを含むメッセージを読むかどうかを判断できます。次に例を示します。
Subject: [SPAM True ; 99.3 / 5.0] Free Money At Home with Prescription Xanirex!
USE_CHECK を 0 に設定すると、判定文字列とともに一致する SpamAssassin テストのリストが返されます (「14.4.7 SpamAssassin オプション」の 「14.4.7 SpamAssassin オプション」を参照)。このリストは非常に長くなることがあるため、USE_CHECK は 1 に設定することをお勧めします。
フィルタ処理するメッセージを指定します。
詳細は、「スパムを個別のフォルダにファイリングする」の手順 3 を参照してください。
SpamAssassin の設定ファイルを作成します。
この手順の詳細は、「スパムを個別のフォルダにファイリングする」を参照してください。mode=1 は、メッセージがスパムであると判明した場合に SpamAssassin の結果文字列が返されることを指定します。
host=127.0.0.1 port=2000 mode=1 debug=1 |
host および port は、spamd が実行されているシステムの名前と、spamd が着信要求を待機するポートです。mode=1 は、メッセージがスパムであると判明した場合に SpamAssassin の結果文字列が返されることを指定します。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。
option.dat ファイルに、次に示す行を追加します。
!for Spamassassin spamfilter1_config_file=/opt/SUNWmsgsr/config/spamassassin.opt spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so spamfilter1_optional=1 spamfilter1_string_action=data:,addtag “[SPAM detected: $U]”; |
前に示した例と同様、最初の 3 つのオプションは、SpamAssassin 設定ファイル、共有ライブラリ、および、共有ライブラリで失敗があった場合に MTA 操作を続行することを指定します。そのあとに次の行が続いています。
spamfilter1_string_action=data:,addtag “[SPAM detected $U]”;
この行は、 Subject: 行にタグを追加することを指定します。これには、リテラルプレフィックス SPAM detected が含まれ、そのあとに field 文字列 (デフォルトは Spam-Test)、そのあとに SpamAssassin によって返される [結果文字列] が含まれます。「14.4.5 SpamAssassin 設定の例」で 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.0
spamassassin.opt で field= を設定して、Spam-Test のデフォルト値を削除します。よりすっきりとしたメッセージが返されます。
Subject: [SPAM True ; 91.3 / 5.0] Vigaro Now!Spamscore: True ; 91.3 / 5.0
設定をコンパイルしなおし、サーバーを再起動して、spamd デーモンを起動します。
「スパムを個別のフォルダにファイリングする」を参照してください。
この例では、SpamAssassin スコアに基づいてメッセージをフィルタする方法を示します。spamadjust および spamtest Sieve フィルタアクションが使用されます。この例では、SpamAssassin スコアが含まれるヘッダーがすべてのメッセージに追加されます。このヘッダーは、スパム電子メールの検出を向上させるために SpamAssassin ソフトウェア管理者が使用する可能性があります。メッセージの SpamAssassin スコアが 5 〜 10 である場合、そのメッセージはユーザーのアカウントの spam フォルダにフィルタされます。メッセージの SpamAssassin スコアが 10 より大きい場合、そのメッセージは破棄されます。デフォルトでは、SpamAssassin はスコアが 5 以上のメッセージをスパムであるとみなします。
フィルタ処理するメッセージを指定します。
詳細は、「スパムを個別のフォルダにファイリングする」の手順 3 を参照してください。
SpamAssassin の設定ファイルを作成します。
このファイルの名前と場所は、spamfilter_configX_file で指定したものです (次の手順を参照)。このファイルには、次に示す行が含まれます。
debug=1 host=127.0.0.1 port=783 mode=2 field= |
host および port は、spamd が実行されているシステムの名前と、spamd が着信要求を待機するポートです。mode=2 の場合、スコアに関係なく SpamAssassin 結果文字列が常に返されます。field= は、SpamAssassin の結果文字列のプレフィックスを指定します。この例では、プレフィックスは Sieve スクリプトで指定するため、必要ありません。debug=1 は、SpamAssassin ライブラリでデバッグをオンにします。
option.dat ファイルに、次に示す行を追加します。
! For SpamAssassin spamfilter1_config_file=/opt/SUNWmsgsr/config/spamassassin.opt spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so spamfilter1_optional=1 spamfilter1_string_action=data:, require ["addheader","spamtest"]; \ spamadjust "$U"; addheader "Spam-test: $U" |
前に示した例と同様、最初の 3 行は、SpamAssassin 設定ファイル、共有ライブラリ、および、共有ライブラリで失敗があった場合に MTA 操作を続行することを指定します。残りの 2 行では、SpamAssassin から返される文字列から SpamAssassin スコア ($U、これは spamtest 操作で使用される) を抽出し、スパムスコアヘッダー (たとえば Spam-test: True; 7.3/5.0) をすべてのメッセージに追加することを指定します。
スパムスコアに基づいて電子メールを処理するように、チャネルレベルのフィルタを作成します。
「チャネルレベルのフィルタを作成する」を参照してください。このファイルに次のルールを追加します。
require ["spamtest","relational","comparator-i;ascii-numeric","fileinto"]; if spamtest :value "ge" :comparator "i;ascii-numeric" "10" {discard;} elsif spamtest :value "ge" :comparator "i;ascii-numeric" "5" {fileinto "spam";} else {keep;} |
2 行目では、SpamAssassin スコアが 10 以上の場合にスパム電子メールを破棄します。3 行目では、スコアが 5 以上である電子メールをユーザーの spam フォルダにファイリングします。最後の行 else {keep;} では、5 より小さいスコアを受け取ったすべてのメッセージを保持します。
設定をコンパイルしなおし、サーバーを再起動して、spamd デーモンを起動します。
「スパムを個別のフォルダにファイリングする」の最後の手順を参照してください。