この節には、次の項があります。
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 です。
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 文字列です。詳細は、「SpamAssassin オプション」を参照してください。
SpamAssassin はフリーウェアです。ソフトウェアとマニュアルについては、http//www.spamassassin.org を参照してください。
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 は、それ自体が置かれている個々のシステム上、単一のシステム配備の Messaging Server と同じシステム上、または 2 層配備の MTA と同じシステム上で実行できます。MTA とメッセージストア間で Local Mail Transfer Protocol (LMTP) が使われている場合、フィルタ処理は MTA から呼び出す必要があります。メッセージストアから呼び出すことはできません。MTA とメッセージストア間で SMTP が使われている場合は、いずれか一方から呼び出すことができ、いずれかのシステムか 3 つ目の別のシステムで実行できます。
SpamAssassin を実行するサーバーのファームを使用する場合は、それらの前でロードバランサを使用する必要があります。MTA は、SpamAssassin サーバー用に 1 つのアドレスのみを持つよう設定されます。
次に示す手順を実行して、SpamAssassin を配備します。
SpamAssassin をインストールして構成します。インストールおよび設定情報については、SpamAssassin ソフトウェアマニュアルを参照してください。「SpamAssassin オプション」も参照してください。
SpamAssassin のクライアントライブラリをロードおよび構成します。このためには、クライアントライブラリ libspamass.so と設定ファイルを MTA に対して指定する必要があります (ファイルは作成する必要がある)。「スパムのフィルタ処理ソフトウェアのクライアントライブラリをロードおよび構成する」を参照してください。
スパム用にフィルタ処理するメッセージを指定します。ユーザー、ドメイン、またはチャネルごとにメッセージをフィルタ処理できます。「フィルタ処理を行うメッセージを指定する」を参照してください。
スパムメッセージに対して実行するアクションを指定します。スパムは、破棄したり、フォルダにファイリングしたり、件名にタグ付けしたりできます。「スパムメッセージに対して実行するアクションを指定する」を参照してください。
必要に応じてほかのフィルタ設定パラメータを設定します。表 14–2 を参照してください。
この節では、一般的な 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 デーモンを起動します。
「SpamAssassin 設定の例」を参照してください。
SpamAssassin の結果文字列を件名行に追加することによって、ユーザーが SpamAssassin スコアを含むメッセージを読むかどうかを判断できます。例:
Subject: [SPAM True ; 99.3 / 5.0] Free Money At Home with Prescription Xanirex!
USE_CHECK を 0 に設定すると、判定文字列とともに一致する SpamAssassin テストのリストが返されます (「SpamAssassin オプション」の 「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 によって返される [結果文字列] が含まれます。「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 をテストするには、最初に spamassassion.opt ファイルに debug=1 を設定します。imta.cnf にあるチャネル固有の master_debug または slave_debug をオンにする必要はありません。そのあと、テストユーザーにテストメッセージを送信します。msg_svr_base/data/log/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 オプションの表を示します。
表 14–4 SpamAssassin オプション (spamassassin.opt)
オプション |
説明 |
デフォルト |
---|---|---|
libspamass.so でデバッグをオンにするかどうかを指定します。spamd 自体のデバッグは、spamd を呼び出すコマンド行で制御されます。0 または 1 に設定します。 |
0 |
|
SpamAssassin の結果文字列のプレフィックスを指定します。SpamAssassin の結果は次のようになります。 Spam-Test: False ; 0.0 / 5.0 Spam-Test: True ; 27.7 / 5.0 field オプションは、結果の 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” |
|
spamd が実行されているシステムの名前です。 |
localhost |
|
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 |
|
spamd が着信要求を待機するポート番号を指定します。 |
783 |
|
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 サーバーを介した接続を確立するために使用するユーザー名 (文字列) を指定します。 |
"" |
MODE 0 で使用される判定文字列を指定します。 |
“” |
メッセージの処理後、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! が返されます。