XMailCfg を導入してください。
はじめに、SpamAssassinをインストールしなければなりません。
次にXMailCfg の「フィルタの管理」「SMTPセッション終了後処理」という画面を開きます。
フィルタ画面
送信者アドレス: *
あて先アドレス: *
リモートIPアドレス: 0.0.0.0/0
ローカルIPアドレス: 0.0.0.0/0
起動ファイル名: xmspamc.tab
起動コマンドと引数: "!aex,wlex" "xmspamc.exe" "@@FILE" "C:\temp" "-D" "18.0" "-b"
と入力し、「追加する」ボタンをクリックします。
起動コマンドと引数について解説を行いますと、
最初の"!aex,wlex"は、SMTP認証とSMTPホワイトリストに登録されたユーザに対してはフィルタを実施しないという意味で、SpamAssassin の特性上から言っても設定したほうが良いでしょう。
"xmspamc.exe"は、このサイト上からダウンロードし、パスの通った場所に置いてください。或いは、パスの通った場所がわからない方は、例えば "C:\XmailServer\MailRoot\bin" というような XMail をインストールしたフォルダに "xmspamc.exe" をコピーしておいて、最初の "xmspamc.exe" を "C:\XmailServer\MailRoot\bin\xmspamc.exe" というようにフルパス形式で記述してもかまいません。
次の"@@FILE"は、XMailServer が実際に処理するスプールファイル名に置換してくれる引数の形式です。
"C:\temp"では、テンポラリ(一時的)フォルダを指定しますが、実際に存在するフォルダを指定しなければなりません。一般的には、このようなフォルダは存在しないはずなので、コマンドプロンプトから
>C: >cd \ >mkdir temp
とタイプしてフォルダを作成するか、エクスプローラからフォルダを作成するか、とにかくフォルダを作成しておいてください。
次の "-D" "18.0" の組は、完全にSpamメールであるから受信拒否を行ってメールを捨てるというSpamのスコアになります。「メールの受信拒否は一切行わない」というポリシであれば、"-D" "99999.0" というように大きい値を設定しましょう。製作者の環境では、SpamAssassin の自動学習機能をオフにしてスコアを安定させた状態で運用するかわりに 18.0 以上のスコアはSpamメールとして問題無いと割り切って捨てています。
補足:日本語対応のパッチを利用しているので、学習の対象となるスコアは高めに設定していますが、自動学習をオンにしています。自動学習機能をオフにしていた理由は、AutoWhiteListにより変な学習をしてしまう事が多かった点にあり、現在では AutoWhiteList機能を無効にしているので、変な学習が減りました。次に自動学習機能をオンにしたい理由があり、cygwin環境では、sa-learn コマンドにて学習してくれるベイジアンの保存場所と、サービスが参照するベイジアンの保存場所が異なるためで、これを正確に手動で学習させるためには、ベイジアンDBをコピーして回らなければなりません(cygwin環境ではsa-learn コマンドで制御できない)。
最後の "-b" オプションは、メールサイズが 256 kbyte 以上あるメールを受信した場合の挙動の指定になります。一般的に 256 kbyte 未満のメールでは、オリジナルのメールに手を加えて、スパムのスコアや件名を変更してメーラ(メール送受信ソフト)でスパムメールとして振り分けルールにより振り分けできるようにする事が容易ですが、メールサイズが大きいと書き換えや判定作業は困難です。そこで、このオプションを付加した場合には、メールの先頭(256kbyteまで)を SpamAssassin に通してみて、Spam判定を試み、もし Spam であると判定された場合には、大胆にメールを捨ててしまおうという挙動になります。よって、このような大胆な行動には不安を感じる。もしくは、「メールの受信拒否は一切行わない」というポリシであれば、"-b" は削っておいて下さい。製作者の環境ではこのオプションを有効にしています。これは、大きなSpam メールを送っても無駄ですよという Spammer に対するメッセージを送らなければならないという信念と、Eメールは、伝達として確実な媒体では無いという割切りがあってやっている事です。
高度なオプションとして、"-P" "1" という組を追加するという選択肢もあります。この場合はメールを受信拒否して捨てるのではなく、Spoolエラーとして取り扱います。ただし、このオプションを選択した場合には、それなりの知識と管理が必要になります。不良管理者である製作者は、このオプションを使っていません(Spoolエラー自体も削除してるぐらいですから~残念)。
調整
SpamAssassin の実行には時間がかかります。そこで、XMailServer がフィルタ処理にかかる時間が長くても待機してくれるようにする事と、フィルタ処理した結果をログに書き留めてくれるように設定を加えなければなりません。
XMailCfg の「基本セットアップ」「レジストリ登録」を開きます。
推奨のオプションに -Qg -QT 240 を加え「登録する」ボタンを押します。
-Qg を加えると、フィルタ処理した結果がログに記録されます。
-QT 240 というオプションでは、240 秒 = 4 分をフィルタ処理の最大待機時間として指定しています。もし、フィルタ処理したログ(後述)にタイムアウトが記録されるようであれば、-QT 360 というように待機時間を延長してみると良いでしょう。
ログ確認
XMailCfg の「アクセスログ」「フィルタ処理のログ1(XMail)」を開きます。
実行コマンドが xmspamc.exe となっている行に着目します。
XMail戻り値が 0 になっているかでフィルタが動作しているかどうかを判断できます。エラーコードの詳細はここを参照してください。ポピュラーな値は -5 で、タイムアウトに達したという意味ですので、この場合は -QT 480 というようにタイムアウト値を大きくしてあげましょう。
フィルタ戻り値は、0 が何もしていない、4 が受信拒否した、7 がメールデータを修正した、5 が受信拒否しSpoolエラーにした という意味になります。
