ご注意(2005/9/10)
この記事は 2000年から公開している Sendmail 8.9 & メーリングリストサーバーFML & InFlex で構築したSendmail によるメールサーバーについて解説した内容となっています。
これからLinuxサーバーを行う場合は、やや古い内容となっていますが解決の糸口になることも多々あるため残しています。
Sendmail 8.12 から大幅に仕様が変更されたため、2004年中旬からFedoraCore 2/3/4 CentOS4 に置換えて新規に再編して公開しているページがあります。これからLinuxサーバー構築される場合は、そちらを参考にして下さい。
参照 => メールサーバー構築(APOP POP3) FC /CentOS
参照 => SMTP認証を暗号化する FC /CentOS
参照 => STARTTLSによるSSL-SMTPサーバー構築 FC /CentOS
参照 => GUI(ブラウザ)で管理するFMLサーバー FC /CentOS
SendmailをSSLプロトコルに対応させるためにはSTARTTLSを実装したSendmailが必要になります。ここではTurboLinuxの RPMパッケージを利用しています。3.12.8.srcをコンパイルしてインストールしました。
既にSTARTTLSが有効になっています。 Sendmailはセキュリティホールの宝庫なので、本来ならソースからインストールする方が望ましいのですが、ソースからインストールする場合は、 SMTP AUTH , STARTTLSに対応させるためのコンパイルオプションが必要です。パスの違いは適宜読み変える必要があります。
SSLによる暗号化認証で、外部のユーザーにSMTPの利用を許可します。この方式を利用できるMUAはOutlook,NetscapeなどSSLをサポートしたMUAに限られます。
OpenSSLの所でもふれましたが、SSLによる暗号路の確保には二通りのやり方があります。一つはCA管理による証明書、一つは自己証明書を使う方法です。
いずれの方法でもSSL暗号化プロトコルを実現できますが、後者は、クライアント認証が可能で後者は出来ません。
クライアント認証とはサーバーがクライア ント(ユーザ)に証明書の提示を求め、提示された証明書により本人であるか、あるいは自CAが発行した証明書であるかを判断し、認証を許可する仕組みで す。これらが行えるかどうかはサーバープログラムがクライアント認証に対する機能をサポートしている必要があります。
どちらも経路が暗号化されることには変わりなく、OutlookやNetscapeなど平文認証しか行えないMTAの利用を認めるのが目的なので、目的は達成されます。
SMTPに関しては自己証明書で暗号路を確保する方が手軽で一般的な方法だと思います。本稿では最初に手軽な自己証明型の方法で説明します。後にクライアント認証について説明します。
STARTTLSに対応したSendmailでSTARTTLSを有効にするには sendmail.cf の修正が必要になります。セキュアメールサーバーの章でもm4プリプロセッサによるsendmail.cf 生成方法を説明しています。TuroboLinuxのパスは以下になります。
/usr/lib/sendmail-cf
sendmail.cfは前回のバージョンのものも使えますが、8.12で大きな仕様変更があり、一部内容も変わっているので、新たにインストールされたsendmail.mcを利用するようにして下さい。Sendmail8.12の章で説明しています。
./cf/sendmail.mc 以下の箇所がSTARTTLSに関する項目です。1~4の行頭のコメントdnlを外せば有効になります。ここで指定する証明書は追って説明します。
dnl
dnl STARTTLS (TLS(SSL)) Support
dnl
dnl please make keys named certs.pem and privkey.pem in /etc/mail/certs.
dnl
dnl define(`confCACERT_PATH', `/etc/mail/certs/') ----1
dnl define(`confCACERT', `confCACERT_PATH/cert.pem') ----2
dnl define(`confSERVER_CERT', `confCACERT_PATH/cert.pem') ----3
dnl define(`confSERVER_KEY', `confCACERT_PATH/privkey.pem') ----4
ここで指定されている証明書をOpenSSLを使用し、作成することでSSLプロトコルを利用したメール配送が可能となります。次はこの証明書を作成します。
SMTPのSSL化にはいくつかの目的があると思います。例えば、SSLに暗号化されたメールを配送して安全性を高めたい、あるいは、SMTP AUTHと併用し、外部から安全にSMTPを利用したいなどです。またはそれら全てを含むかもしれません。
これらはCA局を立ち上げなくても実現できます。クライアント認証を行わないのであればSSL暗号路の実現(1)へ、クライアント認証を行う場合はSSL暗号路の実現(2)~以降で解説しています。