TLS(SSL)によるSMTPの暗号化

最終更新日:2013年8月25日

はじめに、

多くのメールサーバではメールクライアントとの間を、パスワードを含めてクリアテキストでの通信を行っています。 このような通信は、サーバとクライアント間にパケットキャプチャツールなどを設置されると、簡単にその内容を第三者にさ盗聴される危険があります。 見かけることが多くなった、フリー(外部)のWiFi環境やホテルなどのネットワーク環境は、同じネットワークを第三者も使っており、このような環境から社内のメールサーバにアクセスする場合には、通信そのものをVPNなどで暗号化するか、メールサーバなどのそれぞれのサービスごとに暗号化をせずに行うことは非常に危険です。
この資料では、メールサーバサービスとしてのPostfixのTLS(SSL)化を行うことで、SMTPプロトコルを使ったメールの通信時にサーバ・クライアント間の通信を暗号化する方法について構築手順について説明していきます。 なお、本資料では外部からのメールの利用環境を整えることを前提に、TLSの実現とともにSMTP認証をSASLにて行うようにしています。本資料ではその認証用DBとしてSASL独自のものではなく、通常のLinux(Unix)認証: PAM を使った方法を説明します。
TLSを使った暗号化の為には、暗号化を実施したいサーバに暗号化の為のプライベートキーとサーバ証明書が必要になります。 Postfixをインストールすると、取り敢えずデフォルトで証明書(ssl-cert-snakeoil.pem)とプライベートキー(ssl-cert-snakeoil.key)が用意されているのですが、"snake oil (効果があると云ってるが怪しげなもの)"の名が示す通り、あくまで評価的なものなので、できるだけ専用の証明書を用意した方が良いでしょう。 証明書を用意する手順は以下の流れとなります。
上記の手順を実施して CAの認証を受けたサーバ証明書が入手できたなら、その証明書を使ってPostfixが暗号化通信できるような設定を行うことになります。

1.サーバ証明書の入手(サーバ毎の作業)

1-1.サーバの秘密鍵(プライベートキー)と署名要求書CSRの作成

こちらに従い、postfix用の秘密鍵と署名要求書を作成してください。 なお以下の作業のために、秘密鍵とCSRは次のような名前で作成するものとします。
設定内容 設定値 備考
 サーバの秘密鍵(プライベートキー)のファイル名  mail-server.key  目的が判る名前を付けると良い(ex. www-server.key)
 パスワードを解除した秘密鍵ファイル名  nopass_mail-server.key  
 プライベートキーの鍵の長さ  2048  通常は2048以上。長くするほどCPUへの負荷が高くなります。
 サーバ証明書の有効期限  365(1年)  認証局(CA)が認めている期間を指定します。
 署名要求書(CSR)のファイル名  csr_mail-server.pem  
サーバ証明書を入手するにあたり、そのサーバが既にDNSに登録されていることを確認してください。 DNSの登録名はクライアントからのアクセスに使う名前(ex. "ms.example.jp", "mail.example.jp")となっていることを確認してください。 もし、SMTPサーバとPOP/IMAPサーバで別々の名前とすると、証明書は2つ以上必要となる事に注意してください。  
これで、サーバ証明書のための署名要求書(CSR)が "csr_server.pem" という名前で作成されます。 作成された "csr_server.pem" を認証局(CA)に送ってサーバ証明書を作成してもらいます。

1-2.署名要求書CSRのCAへの送付

上記手順で作成されたCSRファイルを、認証局(CA)に送ってサーバ証明書を入手します。 このとき、証明機関(CA)としてベリサインやセコムなどの公式の証明機関を使うのが基本ですが、社内用だけで利用する場合などに、これら有償の証明書を入手するよりも社内で独自に構築した証明機関を構築して利用することも可能です。
自前のCAの構築方法ならびに署名要求書(CSR)への署名方法に関してはこちら(自己CA)をご覧下さい。 CAによって署名されたサーバ証明書は次のような名前で返却されたこととします。
設定内容 設定値 備考
 CAから返却されたサーバ証明書ファイル  mail-server.pem  

2.Postfix をTLSでの暗号化ができるように設定

Debianの場合
CentOSの場合

3.メールクライアントでのTLSの設定

メールクライアントでは次の設定でTLSを設定します。

3-1. Windows Live Mail の場合

左のペインからTLSとしたいメールサーバを右クリックして、[プロパティ]を選択します。
プロパティ画面の[詳細設定]タブを選択し、SMTPのところの"このサーバーはセキュリティで保護された接続(SSL)が必要(Q)"を有効にします。このとき、SMTPのポート番号は25番のままで構いません。

3-2. Thunderbird の場合

メニューから[ツール]-[アカウント設定] を選びます。
左側のサーバ指定画面で [送信(SMTP)サーバ] を選択し表示されるSMTPサーバ一覧から、TLSとしたいサーバを選び [編集] をクリックします。
セキュリティと認証を次のように設定します。このとき、SMTPのポート番号は25番のままで構いません。

Home

Mailwebmaster@robata.org

Copyright© 1998-2013 ROBATA.ORG