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


MercuryMail のインストールが完了したので、今度は設定を行っていきます。
なお、MercuryMail は非常に多機能なので、その全てを取り上げることはできませんので、ここでは、SMTP/POP3/IMAP4の各サーバを動作させることと、外部からの利用を考え、SMTP AUTHやAPOPの設定およびSSL対応について述べることとします。また、IMAP4が使えるためWebメールのSquirrelMailとの連携についても触れることとします。

■ユーザの登録

サーバ設定の正常性を確認するため試験用に、まずはユーザ登録を行います。
  1. まずは、Admin ユーザのパスワード設定を行う。「設定」->「ローカルユーザ管理」で下記のユーザ定義の画面が表示されるので、「Admin」を選択し、「変更」 を選択する。



  2. ユーザの詳細画面が表示されるので、「パスワード」にパスワードとAPOPを使用するなら「APOP選択」にAPOP用パスワードを入力し、「OK」を押す。Adminユーザは、「管理者特権 ・・ 」のチェックは外さないこと。



  3. 一般ユーザの追加は、1項のユーザ定義の画面の「追加」を選択し、同様に設定していきます。

■サポートプロトコルの設定

次に、このサーバでサポートするプロトコルを選択します。ここでは、基本的なSMTP/POP3/IMAP4の各サーバを動作させることとします。

  1. ここでは、MercuryMailで扱うプロトコルを選択する。メイン画面から、「設定」->「プロトコルモジュール」を選択すると、下記のプロトコルモジュール選択の画面が表示されるので、「MercuryS SMTP Server」、「MercuryP POP3 Server」、「MercuryI IMAP4rev1 Server」の3つにチェックマークを入れ、「OK」 を選択する。なお、インストール時にOutbound Port 25 Blocking対策でMercuryCを選択していれば既にチェックが入っているはずであるが、インストール時にOutbound Port 25 Blocking対策が必要なのに指定しなかった、あるいは対策が必要になった場合は、MercuryCにチェックを入れ「OK」を押す。Outbound Port 25 Blocking対策が不要なら、MercuryEにチェックを入れ「OK」を押す。MercuryC/Eは他のSMTPサーバに配送するモジュールなのでいずれか一方を選択(背反なのでどちらか一方しか選択できない)する必要がある。



    [参考]
                                                                                        要否: ◎:必須 ○:選択 △:オプション
    No.

    プロトコル

    概  要

    要否

    1

    MercuryS メールを受信・配送するSMTPサーバ。ローカルユーザや他のSMTPサーバに配送するためSMTPクライアント(MercuryC/E)への配送を行う。

    2

    MercuryP クライアントからのPOP3でのメール読み出しに対応するPOP3サーバ。IMAP4をサポートするMercuryIとの共用も可。

    3

    MercuryE 送信先SMTPサーバへ直接メールを配送するSMTPクライアント。OP25Bが適用されている環境では利用不可できないので、その場合はMercuryCを利用すること。MercuryCとは背反であり、いずれかを指定する。

    4

    MercuryC MercuryCは、外部にメール配送する際に配送先SMTPサーバ(Smartホスト)を指定できるので、これを利用するとOP25Bが適用されている環境でメール配送ができるようになる。MercuryEとは背反であり、いずれかを指定する。

    5

    MercuryD Fetchmailと同等のPOP3クライアント。予め設定されたPOP3サーバにアクセスしてメールを読み出し、そのメールを指定されたローカルユーザに配送できる。プロバイダのアカウントメールをMercuryで一括して扱いたい場合などに利用する。

    6

    MercuryH MercuryHはPHプロトコルをサポートするディレクトリサービスモジュールで、サーバ上にアドレス帳を持ちクライアントで利用できるようになる。Pegasus MailやEudoraで利用できるようであるが、クライアントが限定されるため一般的ではない。

    7

    MercuryF MercuryHと同様な使い方ができる?簡単なFingerサーバ。詳細不明。

    8

    MercuryW POP3のユーザパスワードをユーザ(クライント)から変更を可能にするモジュール。Pegasus Mail v3.01以降かEudoraを利用することで変更可能となるが、クライアントが限定されるため一般的ではない。

    9

    MercuryX ダイヤルアップ環境などでMercuryMailを使用する場合の起動・停止を制御するスケジューラ。常時接続環境では不要。

    10

    MercuryI クライアントからのIMAP4でのメール読み出しに対応するIMAP4サーバ。POP3をサポートするMercuryPとの共用も可。

    11

    MercuryB メーリングリストを管理するためのHTTPサーバ。メーリングリストを使用しない場合は不要。

  2. この設定はサービスを再起動しないと反映されないので、設定が完了したら再起動する。

■コアモジュールの設定

次に、このサーバのコアモジュールの設定を行います。とは言っても、インストール時の基本的な項目の設定で設定してあれば、ここは確認のみです。

  1. メイン画面から、「設定」->「コアモジュール」を選択すると、下記のコアモジュール設置の画面が表示されるので、「一般」タブの「このシステムのインターネット名」にインターネットからアクセスできるこのサーバのサーバ名を入力する。インストール時の基本的な項目の設定で設定してあれば、確認のみである。



  2. 続いて、ローカルドメインの設定を行う。こちらも、インストール時の基本的な項目の設定で設定してあれば確認のみである。下記のように、2行、ホスト名だけのエントリとFQDNのエントリがあれば問題ない。誤っている場合は、変更する。



  3. 他にも多くの項目があるが、基本的な動作にはこれだけでよく、他はデフォルトのままで問題ないので「OK」を押して画面を閉じる。

■SMTPサーバの設定

次に、SMTPサーバの設定を行いますが、ローカル内やローカルから外部にメールを送信するだけなら、デフォルト設定のままで可能です。ここでは、外部からも使用できるように、SMTP AUTH とすることにします。併せて、Otbound Port 25 Blocking対策を行います。

  1. まずは、事前準備としてSMTP AUTH 用パスワードファイルを作成する。MercuryS SMTPサーバの管理ツールでは予めファイルがないとパスワードを作成できないので、任意の場所に空のパスワードファイルを作成しておく。

  2. 外部からこのSMTPサーバを利用する場合、クライアント側のプロバイダがOutbound Port 25 Blockingを導入すると25番ポートでこのSMTPサーバには接続できなくなる。その対策としては、理想的にはSMTP over SSL(SMTPS)を利用できればいいのだが、MercuryはSTARTSSLしかサポートしていない。変わりに、サブミッションポート(代替ポート)を使用することができるので、SSL化はできないがこの設定を行えば外部からも利用可能となる。サブミッションポートの設定は、メイン画面から、「設定」->「MercuryS SMTPサーバ」を選択し、「一般」タブの代替ポートに「587」を設定すればよい。ルータ等でこのポートを開けるのを忘れないこと。



  3. 続いてメイン画面から、「設定」->「MercuryS SMTPサーバ」を選択すると、MercuryS SMTPサーバの管理画面が表示されるので、「接続制御」タブを選択する。



    ここで、リレー制御の設定で、デフォルトで「非ローカルメールのSMTPリレーは不許可」がチェックされているが、更に、「認証されたSMTP接続はメールを中継」にチェックを入れる。
    続けて、「AUTHパスワードファイル」欄に先ほど作成しておいた空のパスワードファイルのパスを直接入力する。(「編集」ボタンを押しても設定はできないので注意が必要)

  4. 次に実際のパスワードを設定する。ここで、パスワードの扱いについて2つの選択肢があるので、自分の環境を考えて選択する。
    Mercury MailではSMTP AUTHとして、CRAM-MD5と LOGIN認証の2つに対応している。CRAM-MD5は暗号化されているのでセキュリティ的にも強いが、LOGIN認証ではplane テキストでパスワードが流れるためセキュリティ的には非常にプアなものとなってしまう。ここだけ見ると、CRAM-MD5の方がよいが、非常に多く利用されているOutLook ExpressではLOGIN認証しか対応できないという問題がある。従って、OEなんか使わないで、MD5をサポートしているクライアントしか相手にしないというなら、MD5でパスワード設定すればよいし、OEが使えないのは困るというのであればLOGIN認証でPlaineテキストで管理すればよい。但し、LOGIN認証は危険なので、外部から使用する場合は後述するSSL化は行った方が良い。
    MD5も完全ではないのとOEは無視できないので、おやじの場合は、Planeテキスト+SSLとした。

  5. MD5によるSMTP AUTH 用パスワードファイルを作成するには、MD5でパスワードを作成する手段が必要である。チョット調べた限りではMercury Mailには対応ツールはないようなので、ここでは、Apacheのhtpasswdコマンドを使って作成したパスワードを転記することで対応した。
    Tipsにある方法で作成したパスワードファイルに、「ユーザ名:パスワード」という形でMD5のパスワードが作成されるので、これを管理ツールで転記すればよい。

  6. 2項の「AUTHパスワードファイル」欄脇にある「編集」ボタンを押すと、登録したパスワードファイルが開くので、1行ごとにユーザ名とパスワードを空白を挟んで記述していく。MD5の場合は、下記でhogehogeの代わりに4項で作成したパスワードをコピペすればよい。全て記述したら、「保存」を押して親画面(2項)で「OK」を押して閉じれば設定は完了である。



  7. ここで、とりあえずSMTPが動作しているか確認してみよう。コマンドプロンプトを開き、telnetでローカルホスト、ポート25番に接続して、「EHLO localhot」と入力した時に、「250-AUTH=LOGIN」や「250-AUTH CRAM-MD5 LOGIN」と表示されるか確認する。

    c:\>telnet localhost 25
    220 example.zive.net ESMTP server ready.
    EHLO localhost 
    ←(1)
    250-example.zive.net Hello localhost; ESMTPs are:
    250-TIME
    250-SIZE 0
    250-AUTH=LOGIN                
    ←(2)
    250-AUTH CRAM-MD5 LOGIN 
    ←(2)
    250 HELP
    QUIT
    221 Closing connection. Good bye.

    ホストとの接続が切断されました。

     (1) 「EHLO localhost」と入力する。
     (2) 「250-AUTH・・・・」を確認する。

  8. 続いて、外部から使用する場合はLOGIN認証用のセキュリティ強化のためSSL対応を行う。因みに、Mercuryがサポートしているのはstartsslのみなので、クライアントでNorton Antivirusを使用している場合はエラーになるので、こちらで対策を行う。
    なお、startsslでは使用できるクライアントを選ぶので、StunnelでSMTPS(465)対応すればOEを含めたほとんどのクライントでも問題なく使用できるので、こちらを薦めます。
    事前準備としてSMTP AUTH 用パスワードファイルと同様に、MercuryS SMTPサーバの管理ツールでは予めファイルがないと扱えないので、任意の場所に空の証明書ファイルを作成しておく。おやじは、C:\MERCURY\SSL\mail.pemを作成した。その後、メイン画面から、「設定」->「MercuryS SMTPサーバ」を選択すると、MercuryS SMTPサーバの管理画面が表示されるので、「SSL」タブを選択する。



  9. 証明書管理ユーティリティの「作成」ボタンを押すと、以下のような画面が表示される。「このファイルを証明書として格納」欄に証明書までのパスを指定し(名前は任意。おやじは、C:\MERCURY\SSL\mail.pemとした。)、サーバ名にインターネット上のサーバ名(コアモジュールで指定したものと同じ。)を入力して、「作成」ボタンを押す。



    うまく作成されると下記の画面が表示されるので、「OK」を押して閉じる。



  10. 上記画面が閉じると、7項の画面に戻るが、サーバ証明書欄に今作成した証明書のパスが入っているはずである。ここで、一応、「プロパティ」ボタンで証明書の内容を確認しておこう。確認が済んだら、「SSL/TLSサポート」にチェックを入れ、「OK」を押せばSMTPのSSL化は完了である。



  11. ここで、とりあえずSSL対応ができているか手動で動作確認してみよう。6項と同様にコマンドプロンプトを開き、telnetでローカルホスト、ポート25番に接続して、「EHLO localhot」と入力した時に、新に「250-STARTTLS」が表示に追加されていることを確認する。

    c:\>telnet localhost 25
    220 mail.aconus.com ESMTP server ready.
    EHLO localhost 
    ←(1)
    250-mail.aconus.com Hello localhost; ESMTPs are:
    250-TIME
    250-SIZE 0
    250-AUTH=LOGIN
    250-AUTH CRAM-MD5 LOGIN
    250-STARTTLS               ←(2)
    250 HELP
    QUIT
    221 Closing connection. Good bye.

    ホストとの接続が切断されました。

     (1) 「EHLO localhost」と入力する。
     (2) 「250-STARTTLS」を確認する。

  12. 続けて、必要ならOutbound Port 25 Blocking対策を行う。メイン画面から、「設定」->「MercuryC SMTPリレークライアント」を選択すると、管理画面が表示されるので、以下で設定・内容を確認する。特に記述してないところは自分の環境に合わせて設定する。

    1. Smartホスト名
      メールをリレーするプロバイダのSMTPサーバを指定。インストール時に設定したなら、その内容が入っているはず。

    2. TCP/IPポート
      プロバイダから指定されている上記サーバのSMTP用のポート(Port 25)を指定。サブミッションポートを使用するなら 587を指定。

    3. ユーザ名/パスワード
      プロバイダのSMTPサーバでSMTP認証が必要な場合に設定。

    4. POP3接続による認証
      プロバイダのSMTPサーバがPOP befor SMTPの場合、ここにチェックをいれPOP3ホストとポートを設定する。

    5. TCP/IPタイムアウト、ポーリング間隔
      TCP/IPタイムアウトはプロバイダのSMTPとの接続監視時間であり、ポーリング間隔は、Mercuryが送信するメールがキューにないか監視する時間なので、TCP/IPタイム≦ポーリング間隔とすること。基本的には、プロバイダのサーバの応答時間や自分の負荷等を考えるデフォルトの30秒のままが良い。



以上で、SMTPの設定は完了である。POP3/IMAP4については、デフォルトのままで取り敢えずは使用できるので、クライアントを使用して送受信してみましょう。

■受信系サーバについて

上記で、メールサーバとしての基本的な動作は可能となります。SMTPに関しては、AUTH + SSL(またはMD5)で動作させれば、外部に公開してもまず問題はないと思います。しかし、受信系のPOP3やIMAP4はデフォルトのままではパスワード等がplain テキストで流れるのでセキュリティ上甘いと言わざるを得ません。
 

■POP3サーバの設定

POP3サーバのセキュリティ対策としては、2つの方法があります。ひとつは、APOPを使用する方法で、もうひとつは、SSL対応することです。
まず、APOPですが、これに関しては、ユーザ登録時にAPOPパスワードを設定していれば、クライアント側でAPOPに設定していればそれだけで動作します。但し、Outlook ExpressのWindows版はAPOP未対応ですので(プロパティのサーバタブに「セキュリティで保護されたパスワード認証でログオンする」というのがあるが、これはAPOPのことではない。)、このままでは使用できません。対策としては、APOP用のプロキシーソフト(例えば、PlugAPOPのようなもの)を使用することで対応できると思ったのですが、なぜかうまくいきません。Becky!のAPOPではうまくいくので、Mercury Mailの問題でもないようにみえますが・・?。
一方、SSLに関してもMercury MailがサポートしているのがSTARTTLSであるため、Outlook ExpressのSSLは使用できません。これに関しては、STARTTLS対応のクライアント(Pegasus Mail)を使用するか、StunnelでPOP3S(995)対応すればOEを含めたほとんどのクライントでも問題なく使用できます。
 
SSL対応は、SMTPサーバの場合とまったく同じです。SMTPサーバの設定の6項を参考にして、こちらで作成した証明書を「サーバ証明書」欄で指定し、サポートにチェックを入れるだけです。

■IMAP4サーバの設定

POP3サーバのセキュリティ対策としては、SSL対応以外にとれません。更にこちらもPOP3と同様にMercury MailがサポートしているのがSTARTTLSであるため、Outlook ExpressのSSLは使用できません。これに関しては、STARTTLS対応のクライアント(Pegasus Mail)を使用するか、StunnelでIMAPS(993)対応すればOEを含めたほとんどのクライントでも問題なく使用できます。。
SSL対応は、SMTPサーバの場合とまったく同じです。SMTPサーバの設定の6項を参考にして、こちらで作成した証明書を「サーバ証明書」欄で指定し、サポートにチェックを入れるだけです。

基本的な設定が完了し動作確認ができたら、こちらでアドインの設定を行ってください。基本動作がチャントできていないとアドインの設定に進んでも意味がありませんので、十分に動作確認してください。

アドインの設定へ

■SquirrelMailの設定

Mercury MailはWindows環境でSquirrelMailと連携できる、数少ないIMAP4サーバです。SquirrelMailは、PHPベースですのでセキュリティ面からもSSLとあわせてApacheの対応は行ってください。SquirrelMailの基本的な設定は、Linuxと変わりありませんので、Windows固有の話だけここでは記述します。基本的な設定についいては、こちらを参考にしてください。違いといってもほとんどないに等しいものです。

  1. インストールは、Windows用の適当な解凍ツール(tar.gzが扱えるもの。Lhaplusなどはdllも不要で非常に多くの形式に対応しているのでおやじは愛用しています)で、Apacheのドキュメントディレクトリ配下に解凍する。

  2. Windowsにはパーミッション等の概念はないので、dataディレクトリのパーミッションおよびオーナの変更は不要だが、アクセス制限は行うこと。

  3. 設定ツールは、Windowsではシェルは動かないので直接perlスクリプトを起動する。具体的には、インストールしたconfigディレクトリ配下にある「conf.pl」を起動すればよいので、例えば、「c:\>perl c:\apache2\htdocs\webmail\config\conf.pl」として起動すればよい。
    設定で、Linuxと異なるのはIMAPサーバの種別で、ここは「other」と設定すること。
    最近のバージョンでは「Mercury」があるので、それを選択すればよい。


Top Pageへ