メールサーバの構築(MercuryMail編)


ここでは、MercuryMail のアドインの設定を行っていきます。
アドインは、以下の3種類があるが、自分の環境に合わせて利用してください。なお、ここでは動作させるための最低限の説明を示します。詳細は、それぞれのアドインの説明書のPDFファイルがインストールディレクトリにあるので、参考にしてください。

No. アドイン名 機 能 概 要
1 SpamHalter ベイジアンフィルタによるスパムフィルタである。残念ながら、日本語メールには対応していないので、語彙による検出は難しいが一般的な特徴は検出できるのと、海外からのメールはしっかり検出できるため有効である。
2 ClamWall Linuxではよく使用されているフリーのウイルス対策ソフトClamAVにより、リアルタイムでメールのウイルススキャンを行なうことができる。サーバ機では、一般のウイルス対策ソフトはインストールするとおかしくなるのでことがある(クライアント用のウイルス対策ソフトは、一種のメールサーバ/クライアントなので動作がバッティングする)なので、本アドインは非常に有効である。
なお、プロバイダアカウントのメールをMercuryDのPOPクライアント機能で受信してから配送すればウイルススキャンできるので、ぜひ導入すべきである。
3 GrayWall グレイリストによるスパム対策アドインである。本機能は、メールが送られてくると1回目は受信せず拒否(コード:451)し、リトライしてきた2回目のメールを受け取るというものである。これは、スパムは一般的にメールを拒否されてもリトライしないという特徴を利用したスパム対策機能である。一度受け取ると、ホワイトリスト扱いになるので遅延しなくなる。
一般的に検出率は高いようであるが、一度は拒否するため正規メールでも配送が遅れる(遅延時間は送信側メールサーバの設定しだい。)ので、使用する場合は注意が必要である。正規のドメインやアドレス(インターネット側にいる正規ユーザ等)は、ホワイトリストに登録していくことで遅延回避できるが限度はある。


■SpamHalter の設定

ベイジアンフィルタによるスパムフィルタのため、学習させないと検出精度が上がってこないのでユーザがしっかり運用する必要があります。

  1. まずは、スタータ用のデータベースを Ararat s.r.o. から取得し、インストールする。この作業を行なわないと、いつまでも検出できない。
    ダウンロードは、SpamHalter のページにある、words4.zip を適当な場所にダウンロード する。

  2. ダウンロードした words4.zip を解凍すると、 words4.db3 というファイルができあがるので、C:\MERCURY\spamhalter 配下にコピーする。 MercuryMail が起動中だと上書きできないので停止してからコピーする。

  3. 「設定」->「SpamHalter」で SpamHalter の管理画面を起動する。
    SpamHalterを動作させるため、「一般設定」タブの「一般スイッチ」で「スパムフィルタを有効にする」にチェックを入れる。



  4. 続けて、「基本設定」タブで基本的な動作の設定を行なう。



    1. 「訂正」で誤判定したスパム/正規メールの再学習を行なうための設定を行なう。
      MercuryMailでは、判定結果をヘッダに付加(デフォルトでスパムと判定されると「X-SPAMWALL: SPAM detected!」というヘッダが付加される)してユーザに配送される。これを利用してメーラで振り分けを行なう。
      しかしながら、時として、スパムを見逃したり、逆に正規メールをスパムと誤判定してしまう場合がある。MercuryMailではこれらのメールを特定のアカウントに送信することによって、再学習させる機能があり、ここではそのためのアカウントとそのアカウント用のパスワードを設定する。

      • 見逃したスパムの訂正用アカウント (デフォルト: spam)
        スパムにも関わらず正規メールとして誤配送されてしまったメールをスパムと学習させるためのアカウントである。デフォルトのままでよい。
        ユーザは見逃したスパムをこのアカウントに送信すると、実際には配送されずにベイジアンフィルタの学習に利用される。

      • スパム誤判定メールの訂正用アカウント (デフォルト: nospam)
        上記とは逆にスパムと誤判定されてしまったメールを正規メールとして学習させるためのアカウントである。これもデフォルトのままでよい。

      • オフサイト訂正用のパスワード (デフォルト: password)
        本パスワードは、上記アカウントが通常のメールアドレスであることからインターネット側からも受信できてしまう。そのため、でたらめなデータを送り込まれると学習がメチャメチャになってしまうので、それをガードするためのパスワードである。インターネット側(下記でローカルIPネットワークで設定されたネットワーク以外)からアクセスがあった場合、本パスワードがないものは拒否されるようになっている。従って、インターネット側から本機能を利用する場合は、以下のようなアドレスでここで指定したパスワードを付加して送信する。

         アカウント(spam/nospam)+パスワード(password)@ドメイン(mail.example.com)

    2. 「ローカルSMTP接続の承認」の「ローカルIPネットワーク」では、信頼できるネットワーク、即ち、localhost(127.0.0.1/8)と家庭内のネットワーク(例では、192.168.0.0/16)を指定する。送信者がここからの場合は、SpamHalterはスパムチェックされない。

  5. 上記で指定したアカウントは、メールが配送されるわけではないが実在しなければならないため、ユーザ定義で spam/nospam ユーザを追加しておく。



■ClamWall の設定

ウイルスは減少傾向にあるとはいえ、ClamAVを利用してサーバでリアルタイムでウイルススキャンができるので非常に安心です。しかも無料でできるのでありがたいことです。

  1. まずは、ClamWallでは、ClamAV関係のファイル等が 「C:\MERCURY\CLAMAV」 フォルダ配下にないとエラーがでるので、「C:\MERCURY\CLAMAV」 フォルダを作成しておく。

  2. 次にWindows用のClamAVバイナリをClamAV for Win32からダウンロードしてくる。実際のファイルは、こちらからダウンロードできるので、適当な場所にダウンロード する。

  3. ダウンロードした clamAV.msiを実行しインストールする。
    インストールを実行するため、「Next >」をクリックする。



  4. インストールするフォルダを聞いてくるので、「Browse」ボタンで先に作成した 「C:\MERCURY\CLAMAV」ディレクトリを指定し、「Next >」をクリックする。



  5. 本当にインストールしてよいか聞いてくるので、そのままでよいので「Next >」をクリックする。



  6. インストールが完了したので、「Close」をクリックする。



  7. ここで、ClamAV関係の設定を行なう。

    1. このままでは、ClamWallが正しく動作しないので、「C:\MERCURY\CLAMAV\conf」ディレクトリ配下にある、「clamd.conf」と「freshclam.conf」を1階層上の「C:\MERCURY\CLAMAV」ディレクトリ 配下にコピーする。

    2. コピーした「clamd.conf」と「freshclam.conf」で以下の設定を変更する。

      [ clamd.conf ]
      No. パラメータ設定値 備 考
      1 変更前 LogFile "C:\Program Files\clamAV\log\clamd.log" パスをインストール時に変更した "C:\MERCURY\CLAMAV" に変更。
      変更後 #LogFile "C:\Program Files\clamAV\log\clamd.log"
      LogFile "C:\MERCURY\CLAMAV\log\clamd.log"
      2 変更前 #DatabaseDirectory C:\Program Files\clamAV\data パスをインストール時に変更した  "C:\MERCURY\CLAMAV" に変更。
      変更後 #DatabaseDirectory C:\Program Files\clamAV\data
      DatabaseDirectory "C:\MERCURY\CLAMAV\data"


      [ freshclam.conf ]
      No. パラメータ設定値 備 考
      1 変更前 #DatabaseDirectory C:\Program Files\clamAV\data パスをインストール時に変更した "C:\MERCURY\CLAMAV" に変更。
      変更後 #DatabaseDirectory C:\Program Files\clamAV\data
      DatabaseDirectory C:\MERCURY\CLAMAV\data
      2 変更前 UpdateLogFile "C:\Program Files\clamAV\log\freshclam.log" パスをインストール時に変更した "C:\MERCURY\CLAMAV" に変更。
      変更後 #UpdateLogFile "C:\Program Files\clamAV\log\freshclam.log"
      UpdateLogFile "C:\MERCURY\CLAMAV\log\freshclam.log"
      3 変更前 DatabaseMirror db.local.clamav.net データベースのURLを日本(JP)に変更。
      変更後 DatabaseMirror db.JP.clamav.net
      4 変更前 NotifyClamd "C:\Program Files\ClamAV\conf\clamd.conf" パスをインストール時に変更した "C:\MERCURY\CLAMAV" に変更。
      変更後 #NotifyClamd "C:\Program Files\ClamAV\conf\clamd.conf"
      NotifyClamd "C:\MERCURY\CLAMAV\clamd.conf"

  8. 「設定」->「ClamWall」でClamWallの管理画面を起動する。
    まずは、「一般設定」タブの「一般スイッチ」で「ウイルスフィルタを有効にする」にチェックを入れ、ClamWallを有効にする。



  9. 続けて、「ログ/レポート」タブで以下の設定を行う。

    1. ログファイルのディレクトリをMercuryのLOGSディレクトリ配下に変更する。
    2. レポートで、デフォルトでは「送信者に禁止した情報を送信」するようになっているが、送信者は偽装されているため廃棄メールを返送すると相手にとってはスパムと同じになってしまうので、送信しないようにチェックを外す。



  10. 「ClamAV」タブで以下の設定を行う。

    1. ClamAVモードを「Mercuryによって起動・制御されるClamAVデーモン」にする。
    2. ClamAVデーモン設定で、「ClamAVのコンソールウィンドウを隠す」にチェックを入れる。
    3. ClamAVデーモンの位置でclamd.exeがあるディレクトリ(C:\MERCURY\CLAMAV)を「選択」を使用して指定する。



  11. ここで設定変更を有効にするため、MercuryMailを再起動する。

  12. 再起動が完了したら動作確認をするため、登録済みの試験ユーザで自分あてにテストメールを送信してみる。
    設定に問題がなければ、ウイルススキャンがなされ、同時にfreshclamによってウイルスデータベースが最新化されるはずなので、以下の内容を確認する。

    1. メールのヘッダにClamWallが検査した以下のヘッダが付与されているか確認する。

      X-CLAMWALL: Passed through antiviral test by ClamWall 1.1.2 on mail.aconus.com (5852)

    2. C:\MERCURY\LOGS\cwxxxx.logに以下のようなClamWallの検査ログが出ていることを確認する。

        20070909 153120.204 MG000002 From: <oyaji@mail.aconus.com>
        20070909 153120.204 MG000002 To: oyaji@mail.aconus.com
      C 20070909 153126.001 MG000002 ClamD version: ClamAV 0.91.2/2839/Wed Mar 14 18:24:32 2007
      C 20070909 153126.001 MG000002 ClamD started
      C 20070909 153126.017 MG000002 FreshClam started
      _ 20070909 153126.063 MG000002 Done! (5854)

    3. C:\MERCURY\CLAMAV\log\clamd.logに以下のような起動ログが記録されていることを確認する。

      Mon Sep 09 15:31:20 2007 -> +++ Started at Mon Sep 09 15:31:20 2007
      Mon Sep 09 15:31:20 2007 -> clamd daemon 0.91.2 (OS: windows, ARCH: i386, CPU: i686)

        (snip)


      ここでエラーが出ていなければ、コマンドプロンプトでnetstatで確認すると、3310番ポートでclamd.exeが起動されているはずである。

      C:\>netstat -abn -p tcp

      Active Connections

        Proto  Local Address          Foreign Address        State           PID

        TCP    0.0.0.0:3310           0.0.0.0:0              LISTENING       160
        [clamd.exe]

        (snip)


    4. 上記と同時に、frechclamが起動され、ClamAVのアップデートがなされたか確認する。
      C:\MERCURY\CLAMAV\log\freshclam.logに以下のようなメッセージが残され、それ以下にアップデートの履歴が出ていることを確認する。

      freshclam daemon 0.91.2 (OS: windows, ARCH: i386, CPU: i686)
      ClamAV update process started at Sun Sep 9 15:31:26 2007

        (snip)


      また、C:\MERCURY\CLAMAV\data\main.incフォルダ内の各種データベースの更新日付やC:\MERCURY\CLAMAV\data\dayly.cvdの更新日付も確認しておく。

    5. 正常な動作が確認できたら、テスト用のウイルスをeicarのWebサイトからダウンロードして、ウイルスが検出できるのか確認する。4種類のテストウイルスがあるので、全てテストしてみる。ClamWallがウイルスを検出すると、C:\MERCURY\LOGS\cwxxxx.logに以下のような記録が残る。

         20070910 205027.956 MG000002 From: <oyaji@mail.aconus.com>
        20070910 205027.956 MG000002 To: oyaji@mail.aconus.com
      V 20070910 205028.049 MG000002 Eicar-Test-Signature
      K 20070910 205028.049 MG000002 Killed!
      _ 20070910 205028.049 MG000002 Done! (102)

■GrayWall の設定

Graylist(Greylistと記述されることが多い?)による対策は効果が大きいようですが、初回メールが遅延することや、インターネット側にこのサーバを利用するクライアントがいる場合の運用が難しい等の課題があるので、よく検討してから適用したほうが良いと思います。

  1. 「設定」->「ClamWall」でClamWallの管理画面を起動する。
    まずは、「一般設定」タブの「一般スイッチ」で「グレイリストを有効にする」にチェックを入れ、GrayWallを有効にする。



  2. 「基本設定」タブの「グレイリスト タイムアウト」で各種タイマを設定する。一般的にはデフォルトのままで変更は不要である。

    1. ロック解除するための最小リトライ間隔(デフォルト: 10分)
      1回目のアクセスで拒否されてから再送してくるまでの最小時間を設定する。この時間以下での再送は無視されるので、注意が必要である。因みに、Postfixのデフォルトは1000秒(16.7分)なので問題ないが、もう少し短いほうが安全かもしれない。
    2. ロック解除要求の満了時間(デフォルト: 1日)
      1回目のアクセス時に記録したデータベース(IPアドレス、送信者、宛先をハッシュしたもの)の保持時間。この間に再送がないとデータベースがクリアされるので、初めからやり直しとなる
    3. ロック解除成功の満了時間(デフォルト: 1週間)
      正規にロックが解除されても本時間経過したら一旦データベースが初期化され、再度グレイリストの処理を行われる。デフォルトは1週間である。



  3. 「除外」タブでグレイリスト処理から除外するの対象を設定する。

    1. ローカルSMTP接続の承認
      「ローカルIPネットワーク」に信頼できるネットワーク、即ち、localhost(127.0.0.1/8)と家庭内のネットワーク(例では、192.168.1.0/24)を指定する。送信者がここからの場合は、GrayWallはスパムチェックをしない。
    2. 処理から除外
      いわゆるホワイトリストであり、除外したいアドレスやドメイン(ワイルドカード使用)を1行に1アドレスで記述する。
      自分のドメインや自分のドメインのwell-knownアドレス(postmaster等)は偽装されるので絶対に登録しないこと。
      テスト欄にテストしたいアドレスを入れ、「実行!」をクリックするとリストにマッチするか試験できる。



  4. 設定が完了したら、フリーメールなどを使用して実際にテストアカウントにメールを送って確認する。
    テストメールを送信してしばらくするとメールが到着するが、一度、拒否され、その後、再送信によって受信されるはずである。(SMTPサーバのモニタ画面で確認できる)
    これでは、まどろっこしいと思うなら、GrayWallの設定を変更(除外のローカルIPアドレスを消去し、基本設定のロック解除の最小リトライ間隔を1分に変更)し、メーラでテストアカウント宛にテストメールを送信すれば、動作の確認ができる。OutlookExpressの例であるが、一度目は下記のようなエラーが表示され拒否されるので、リトライ間隔の時間以上待って再送信すれば送信されるはずである。(確認が済んだら設定を戻すこと。)

    受信者の 1 人がサーバーによって拒否されたため、メッセージを送信できませんでした。 拒否された電子
    メール アドレス : oyaji@mail.aconus.com 件名 'Re: テスト', アカウント : 'localhost', サーバー :
    'localhost', プロトコル : SMTP, サーバーの応答 : '451 GW: Requested action aborted: error in
    processing.', ポート : 25, セキュリティ (SSL): なし, サーバー エラー : 451, エラー番号 : 0x800CCC79

    C:\MERCURY\graywall\gwxxxx.logに以下のようなGrayWallのログが出ていることを確認する。1回目で拒否され、1回目で受付けされホワイトリスト化されている様子がわかる。

    H 20070910 214546.497 1 127.0.0.1: oyaji
    J 20070910 214546.529 1 oyaji@mail.aconus.com -> oyaji@mail.aconus.com
    I 20070910 214546.685 1 0: xm3QGHlQaTC0F5kpLCnRNw==
    N 20070910 214546.701 1 must wait!
    x 20070910 214546.701 1 Aborting!
    _ 20070910 214546.904 1 (0)
    H 20070910 214843.232 2 127.0.0.1: oyaji
    J 20070910 214843.341 2 oyaji@mail.aconus.com -> oyaji@mail.aconus.com
    I 20070910 214843.513 2 1: xm3QGHlQaTC0F5kpLCnRNw==
    O 20070910 214843.513 2 OK, allowed.
    J 20070910 214843.638 2 oyaji@mail.aconus.com -> oyaji@mail.aconus.com
    W 20070910 214843.794 2 is whitelisted


Top Pageへ