このステップでは先のステップで構築したAPOP受信、AUTH SMTP MD5 SMTP認証メールサーバーに対し、SSLによる暗号化認証を実装します、これにより、Outlook / Netscape 等、幅広いメーラーにおいて暗号化認証が行えるようになります。
現在、APOP、MD5 AUTH SMTP 認証は脆弱性が存在するため、POP Over SSL、SMTP Over SSL のみに限定すべきです。
SendmailのSTARTTLSを有効にすることで、SSL SMTPサーバーとして機能するようになります。これにより、HTTPS同様、経路をSSL暗号化により保護する事が出来ます。Netscapeや Outlookは、平文認証しか行えませんが、SSL通信をサポートします。
暗号化されたセッションを確立し通信を行うため、平文認証であっても経路そのものが暗号化されているので盗聴の心配がありません。ちょうどApacheのBasic認証をHTTPSで行うようなもの、と言えば分り易いでしょうか。
ここではFedoraCore2に含まれるパッケージを利用しています。SendmailはSTARTTLSで実行できるようにコンパイルされているので 問題ありません。サーバーのSSL化には、Sendmailに限らず、証明書が必要となります。まずはサーバー証明書から作成します。今回は、クライアン ト認証は導入せず経路のみの暗号化を実現しますので簡単な自己証明書で結構です。こちらを参考に作成します。
FedoraCore2では、デフォルトではコメントが外れており、STARTTLSは動作出来る状態になっていましたが、必要なサーバー証明書がないので起動時にエラーが出ていました。
STARTTLSを有効にするには、以下を設定します。
define(`confCACERT',`CERT_DIR/cert.pem')
define(`confSERVER_CERT',`CERT_DIR/cert.pem')
define(`confSERVER_KEY',`CERT_DIR/privkey.pem')
赤で示した箇所が暗号化に必要な書類です。 confCACERT は、CA証明書でクライアント認証に必要ですが、クライアント認証は今回行わないので SERVER_CERTサーバー証明書を指定します。
修正が済んだら、sendmail.cf を生成し変更を有効にします。
sendmailを再起動して変更を反映させて下さい。 STEP2で sasldblistusers2 コマンドで作成したSMTPアカウント、パスワードでで接続できれば成功です。
Outlook でSSL SMTP認証で接続する場合は、以下の様に設定します。
[ 問題点 ]
Netscape Outlookの利用を認める以上、LOGIN PLAIN を許可しなくてはならず、SMTP認証に暗号化を使用するか、使用しないかはユーザー次第ということになります。
対策としては、STARTTLS用のSMTPポートを別に開き、PLAIN LOGIN を含むsendmail.cfと含まないcfを使い分けて起動さることで対処できると思います。
以上でMUAをなるべく選ばないで暗号化によるSMTP認証が可能になりました。 次はPOP3受信サーバーをSSLに対応させます。