Oracle Linux 6.2 の Postfix 2.6.6 に SMTP over SSL/TLS を設定

Oracle Linux 6.2 にメール・サーバーを構築する第3章。前回の記事で Postfix 2.6.6 にSMTP認証を設定したが、このままだとパスワードが平文のままインターネットを流れてしまうので、SMTP over SSL/TLS でMUAMTA間を暗号化しよう。なお、この暗号化はあくまでMUAとMTA間のみであり、MTAとMTA、MTAから受信者のMUA間では暗号化されないので、そういう用途ではS/MIMEなどを検討し、「SMTP認証用パスワードを暗号化する」くらいに考えておいたほうがよい。この記事では Oracle Linux 6.2 で設定する方法を記載するが、Red Hat Enterprise Linux (RHEL) / CentOS / Scientific Linux でも同様だろう。

暗号化された通信を開始する方法は2通りあり、通常のEHLOコマンド後にSTARTTLSコマンドを実行して暗号化する方法と、TCP/465に接続すると同時に暗号化する方法があるが、今回は両方提供することにする。

Postfix 2.6.6 は SMTP over SSL/TLS に対応しているので、SSL証明書を用意するだけだ。ボクはRapidSSL発行のSSL証明書を持っているのでそれを使う。RapidSSLの証明書ならNamecheap.comで年間$10程度なので、この際に信頼できるSSL証明書を買ってしまうのもありだと思うけど、とりあえず以下では信頼できない自己証明書で対応する方法も載せておく。この機会にRapidSSLの証明書を取得するならば、複眼中心: RapidSSL証明書購入からApache / Postfix / Dovecotでの設定まで が参考になるだろう。

まずは秘密鍵を作成する。後ほど出てくるMakefileでlocalhost.keyを自動作成してしまうと、この鍵を使うたびに(Postfixを起動するたびに)パスワードが要求されてしまうので、事前に手動で作成している。

続いてSSL証明書を作る。そのまま作ると証明書の有効期限は365日なので、3650日に変更しておいた。Common Name はMUAに送信用サーバーとして設定することになるサーバー名を指定しなければならない点だけは注意しよう。

/etc/postfix/main.cf に以下のように追記することで、先ほど作成した秘密鍵と証明書を使って SMTP over SSL/TLS できるようになる。smtpd_tls_auth_only = yes にすると、SMTP over SSL/TLS を使用しているときに限ってSMTP認証を使用可能にする。smtpd_tls_session_cache_databaseを設定しておくと、ネゴシエーション情報をディスクにキャッシュできる。SMTP over SSL/TLS を使用したかどうかはReceived:ヘッダーからはデフォルトでは判断できないが、smtpd_tls_received_header = yes にすることで記述が残るでの、デバッグ用にここでは有効にしている。

TCP/465でも接続できるように /etc/postfix/master.cf を変更する。

設定ファイルを再読み込みし、TelnetからSMTPコマンドを直接実行して動作確認してみよう。

ここまででサーバー側の設定は終了だが、自己署名したSSL証明書を使う場合はクライアントにそれを登録しておかないと、送信のたびに警告が出てしまう。まずは登録用のDERファイルを作成しよう。

Macの場合、適当な方法でlocalhost.derをMacにコピーし、そのファイルをダブル・クリックするとキーチェーンが起動するので、キーチェーンで「X509Anchors」を選択し「OK」をクリックする。Windowsの場合は、適当な方法でlocalhost.derをPCにコピーし、そのファイルをダブルクリックしたあとに「証明書のインストール…」ボタンをクリックすると「証明書のインポート ウィザード」ダイアログが表示されるので、「証明書をすべて次のストアに配置する」で「信頼されたルート証明機関」を選択し「次へ」をクリックする。

コメントを残す