CentOS 4.4 の Postfix 2.2.10 に SMTP over SSL/TLS を設定

CentOS 4.4 で メール・サーバーを構築する第五章。前回の記事でPostfixのSMTP認証を設定したが、(誰かが使うかもしれない)Outlook Express は暗号化されたパスワードでのSMTP認証が行えないため、Outlook Express からインターネット経由でSMTP認証をするとパスワードが漏れてしまう可能性ある。そのため、SMTP over SSL/TLS にしてMUAとMTA間を暗号化しよう。なお、この暗号化はあくまでMUAとMTA間のみであり、MTAとMTA、MTAから受信者のMUA間では暗号化されないので、そういう用途ではS/MIMEなどを検討し、「SMTP認証用パスワードを暗号化する」くらいに考えておいたほうがいい。

暗号化された通信を開始する方法は二通りあり、通常のEHLOコマンド後にSTARTTLSコマンドを実行して暗号化する方法とTCP/465に接続すると同時に暗号化する方法がある。STARTTLSを使用すると何らかの理由で SMTP over SSL/TLS が提供されていなくてもMUAは設定変更なしに送信できるようにもできるが、Norton AntiVirusavast! Free Antivirus などが、送信メールが暗号化されるとウイルス・スキャンできないために TCP/25 宛ての SMTP over SSL/TLS コマンドを問答無用でエラーにするという乱暴な対応をしているため、これらが監視していないTCP/465を使用せざる得ない環境もあるので、今回は両方提供することにする。

Postfix 2.2 は SMTP over SSL/TLS に対応しているので、証明書を用意するだけでよい。証明書はhttpsで使っているものでもサーバー名が等しければ問題ないが、ボクの環境ではhttpsサーバーはrewse.jp、smtpサーバーはmail.rewse.jpのCNAMEで運用されいてるため別の証明書が必要になる。とは言え、証明書作成のためのMakefileは流用できるので、それをベースに証明書を作成していこう。

そのままmakeを実行してしまうとhttpsサーバー用の証明書を上書きしてしまうので、多少Makefileを書き換える必要がある。また、ついでなので証明書の有効期限を365日から3650日にしてしまおう。

準備ができたらまずはサーバー用秘密鍵を作ろう。

続いてサーバー用証明書を作る。本来であれば適切な証明機関に署名してもらわないといけないのだが、今回は個人サーバーなので自己署名で済ませる。なお、証明書に記述する内容の Common Name は、必ずMUAに送信用サーバーとして設定することになるサーバー名を指定しなければならない。

自己署名しただけのサーバー用証明書では Apple Mail や Outlook Express が送信のたびに警告ダイアログを出すので、このサーバー用証明書を後ほどクライアント・マシンに登録できるようにDERファイルを作成する。

/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にすることで記述が残るので、デバッグ用にここでは有効にしている。

[text title=”/etc/postfix/main.cf”]smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/postfix/ssl/mail.rewse.jp.crt
smtpd_tls_key_file = /etc/postfix/ssl/mail.rewse.jp.key
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
smtpd_tls_received_header = yes
tls_random_source = dev:/dev/urandom[/text]

MUAから実行する前に、設定ファイルの再読み込み後にTelnetでPostfixに接続し、動作確認してみよう。TCP/25で接続した場合は、EHLOコマンドを送信するとSTARTTLSコマンドが使えることが応答される。

ここでEHLOコマンドが 502 Error: command not implemented になるような明らかにおかしい動作をする場合はアンチウイルス・ソフトが妨害している可能性があるので、TCP/465のリスニングを開始し、MUAにTCP/465を設定しよう。

[text title=”/etc/postfix/master.cf”]……
smtps inet n – n – – smtpd
……[/text]

サーバー側の設定が完了したら、クライアントに自己署名したサーバー証明書を登録しよう。Macの場合は、適当な方法でmail.rewse.jp.derをMacにコピーし、そのファイルをダブルクリックするとキーチェーンが起動するので、キーチェーンで「X509Anchors」を選択し「OK」をクリックする。Windowsの場合は、適当な方法でmail.rewse.jp.derをPCにコピーし、そのファイルをダブルクリックしたあとに「証明書のインストール…」ボタンをクリックすると「証明書インポート ウィザード」ダイアログが表示されるので、「証明書をすべて次のストアに配置する」で「信頼されたルート証明機関」を選択し「次へ」をクリックする。なお、Mozilla ThunderbirdBecky! Internet Mail などの一部のメーラーは、これらの手順を行わなくてもサーバー証明書の警告ダイアログを出さない方法がある。

<

p>以上でPostfixの SMTP over SSL/TLS の設定は完了である。

2 thoughts on “CentOS 4.4 の Postfix 2.2.10 に SMTP over SSL/TLS を設定”

  1. Pingback: 複眼中心

コメントを残す