9.クライアント〜メールサーバ間通信暗号化

 Outlook ExpressやThunderbirdなどのメーラーを利用してメールの送受信を行う場合、メーラー(クライアント)とメールサーバ間の通信は生データ(クリアテキスト)で行われている。よって、このままではユーザ名やパスワードが盗聴される恐れがある。
 ここではSSLを利用してSMTPサーバ(Postfix)及びPOP/IMAPサーバ(Dovecot)とメーラー間の通信を暗号化する方法を紹介する。

9-1 サーバー証明書・秘密鍵の作成

 まずはSSL通信用のサーバー証明書及び秘密鍵を作成する。この操作はrootユーザで行う。

  1. サーバー用秘密鍵の作成

    # openssl genrsa -des3 1024 > /etc/postfix/server.key
    Generating RSA private key, 1024 bit long modulus
    .++++++
    ................................................++++++
    e is 65537 (0x10001)
    Enter pass phrase: 任意のパスワードを入力
    Verifying - Enter pass phrase: もう一度任意のパスワードを入力

  2. 秘密鍵からパスフレーズを削除

    # openssl rsa -in /etc/postfix/server.key -out /etc/postfix/server.key
    Enter pass phrase for /etc/postfix/server.key: 先ほどのパスワードを入力
    writing RSA key

  3. サーバー用公開鍵の作成

    # openssl req -new -key /etc/postfix/server.key -out /etc/postfix/server.csr
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [GB]:JP
    State or Province Name (full name) [Berkshire]:Aichi
    Locality Name (eg, city) [Newbury]:Nagoya
    Organization Name (eg, company) [My Company Ltd]:Ando Komuten
    Organizational Unit Name (eg, section) []:Customer Center
    Common Name (eg, your name or your server's hostname) []:smtp.andokomuten.jp
    Email Address []:postmaster@andokomuten.jp

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []: ←何も入力しないでEnter
    An optional company name []: ←何も入力しないでEnter

  4. サーバー証明書作成

    # openssl x509 -in /etc/postfix/server.csr -out /etc/postfix/server.pem -req -signkey /etc/postfix/server.key -days 365
    Signature ok
    subject=/C=JP/ST=Aichi/L=Nagoya/O=Ando Komuten/OU=Customer Center/CN=smtp.andokomuten.jp/emailAddress=postmaster@andokomuten.jp
    Getting Private key

  5. Outlook / Outlook Express インポート用サーバー証明書作成

    # openssl x509 -in /etc/postfix/server.pem -outform DER -out mailserver.der

    作成したファイル「mailserver.der」をフロッピーなどで保存しておく。
  6. パーミッションの変更

    # chmod 400 /etc/postfix/server.*

※smtpサーバ、popサーバ共に同じ証明書を利用する。smtpサーバとpopサーバをホスト名で区別する場合、それぞれのホスト用の証明書を作る必要がある。

9-2 Postfix設定変更

 Postfixの設定ファイルを変更し、メーラー〜SMTPサーバー間通信を暗号化する。

  1. /etc/postfix/main.cfを編集:以下の文を最終行に追加する。

    smtpd_tls_cert_file = /etc/postfix/server.pem
    smtpd_tls_key_file = /etc/postfix/server.key
    smtpd_use_tls = yes
    smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache

  2. /etc/postfix/master.cfを編集:以下の2行に付いている#を削除する。

    smtps  inet n    -    n    -    -    smtpd
     -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

  3. Postfixの再起動

    # /etc/rc.d/init.d/postfix restart

9-3 Dovecot設定変更

 Dovecotの設定ファイルを変更し、メーラー〜POP/IMAPサーバー間通信を暗号化する。サーバー証明書や秘密鍵は8-1で作成したものを流用する。

  1. /etc/dovecot.confを編集:以下の該当部分を修正する。

    protocols = pop3 pop3s ←pop3を残しておくと、SSL無しでも認証できる
    ssl_disable = no ←行頭の#を削除
    ssl_cert_file = /etc/postfix/server.pem
    ssl_key_file = /etc/postfix/server.key

  2. Dovecotの再起動

    # /etc/rc.d/init.d/dovecot restart

9-4 ファイアウォールの設定変更

 POP/IMAP/SMTPの暗号化通信が行えるよう、ファイア・ウォールの設定を変更する。

  1. /etc/sysconfig/iptables をviで開き、以下の行を追加する。

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT ←SMTP
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT ←IMAP
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT ←POP

  2. 変更を有効にする。

    # /etc/rc.d/init.d/iptables restart

9-5 動作確認:Outlook Express

 クライアント側からOutlook Expressを使って暗号化通信をテストする。Outlook Expressを開いてアカウントのプロパティページを表示し、「詳細設定」タブ内を次のように変更する。

  • 「このサーバーはセキュリティで保護された接続(SSL)が必要」を、送信メール(SMTP)、受信メール(POPまたはIMAP)ともにチェックをつける。
  • 送信メール(SMTP)のポート番号を465に変更(デフォルトは25)。
  • 受信メール(POPまたはIMAP)のポート番号を995(IMAPなら993)に変更(自動で変更される)。

 設定変更後、メールの送受信が行えるかどうか確認する。サーバー証明書が自家製(?)なので、次のような警告ウィンドウが表示される。

 この警告ウィンドウは、Outlook Expressを開くたびに出てきてしまう。出ないようにするには、8-1の5.でフロッピーに保存した、クライアント用のサーバー証明書(mailserver.der)をインストールすればよい。
 クライアント用サーバー証明書をインストールするには、mailserver.derをダブルクリックすればよい。次の画面が表示されるので、そのままインストールすればよい。

 インストール後、再度Outlook Expressを開くと、警告ウィンドウが表示されないはずである。


[ Back ]