SSLによるメールサーバの通信の暗号化(「Postfix」+「Courier-IMAP」)

外部からメールの通信を暗号化するためにSSLを利用します。
なお、「Courier-IMAP」では証明書と秘密鍵を別々に指定できませんので、2つを結合します。

「OpenSSL」のインストール
FreeBSD# cd /usr/ports/security/openssl/ <= 作業ディレクトリへ移動
FreeBSD# make install clean <= 「OpenSSL」のインストール
鍵・証明書の作成

秘密鍵・公開鍵・証明書の作成では、
/etc/ssl
で作業を行うこととします。

サーバ用秘密鍵の作成

FreeBSD# openssl genrsa -des3 -out server.key 1024 <= 秘密鍵作成
Enter pass phrase for server.key: <= パスフレーズ
Verifying - Enter pass phrase for server.key: <= パスフレーズ(確認)

パスフレーズを削除します。

FreeBSD# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: <= 秘密鍵作成時のパスフレーズ入力

サーバ用公開鍵の作成

FreeBSD# openssl req -new -key server.key -out server.csr -days 365 <= 公開鍵作成
Country Name (2 letter code) [AU]: JP <= 国名
State or Province Name (full name) [Some-State]: Chiba <= 都道府県名
Locality Name (eg, city) []: Matsudo <= 市町村名
Organization Name (eg, company) [Internet Widgits Pty Ltd]: crimson-snow <= サイト名
Organizational Unit Name (eg, section) []: <= 空ENTER
Common Name (eg, YOUR name) []: crimson-snow.net <= ホスト名
Email Address []: kaz@crimson-snow.net <= 管理者用メールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <= 空ENTER
An optional company name []: <= 空ENTER

サーバ用証明書の作成

FreeBSD# openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365 <= 証明書作成

証明書と秘密鍵の結合

FreeBSD# cat server.pem server.key > crimson-snow.net.pem

権限の変更

サーバ用の秘密鍵・公開鍵・証明書をrootのみ参照できるようにします。

FreeBSD# chmod 400 server.* crimson-snow.net.pem
「Postfix」の設定

まず、「Postfix」の設定ファイルを編集します。
なお、FreeBSD6.0-RELEASEでは「Postfix」の2.2系が標準の為、普通にインストールすると
smtpd_tls_session_cache_database = sdbm:/usr/local/etc/postfix/smtpd_scache
とログに吐かれ、起動出来ません。
その場合、データベースをsdbm形式ではなくbtreeに変更します。

FreeBSD# vi /usr/local/etc/postfix/main.cf <= 設定ファイルの編集
最終行に以下を追加
smtpd_tls_cert_file = /etc/ssl/crimson-snow.net.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_use_tls = yes
smtpd_tls_session_cache_database = sdbm:/usr/local/etc/postfix/smtpd_scache
「Postfix」の2.2系で、sdbm形式をサポートしていない場合、
上記の記述を以下のように変更する
smtpd_tls_session_cache_database = btree:/usr/local/etc/postfix/smtpd_scache

次にmasterの設定ファイルを編集します。

FreeBSD# vi /usr/local/etc/postfix/master.cf <= 設定ファイルの編集
#smtps    inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
↓
smtps    inet  n       -       n       -       -       smtpd <= コメント解除
  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes <= コメント解除

#tlsmgr    fifo  -       -       n       300     1       tlsmgr
↓
tlsmgr    fifo  -       -       n       300     1       tlsmgr <= コメント解除(FreeBSD5.3-RELEASE)

tlsmgr    unix  -       -       n       1000?   1       tlsmgr <= FreeBSD6.0-RELEASEの場合はそのまま

「Postfix」の設定をリロードします。

FreeBSD# /usr/local/sbin/postfix reload

SMTPでSSLを利用する際、ポートの465番を利用しますので、ルータで開けます。

「Courier-IMAP」の設定

POP3用とIMAP用のファイルを設定します。

POP3の設定

FreeBSD# vi /usr/local/etc/courier-imap/pop3d-ssl <= 設定ファイルの編集
POP3DSSLSTART=NO
↓
POP3DSSLSTART=YES <= 変更

TLS_CERTFILE=/usr/local/share/courier-imap/pop3d.pem
↓
TLS_CERTFILE=/etc/ssl/crimson-snow.net.pem <= 変更(結合した証明書・秘密鍵の場所を指定)

IMAPの設定

FreeBSD# vi /usr/local/etc/courier-imap/imapd-ssl <= 設定ファイルの編集
IMAPDSSLSTART=NO
↓
IMAPDSSLSTART=YES <= 変更

TLS_CERTFILE=/usr/local/share/courier-imap/imapd.pem
↓
TLS_CERTFILE=/etc/ssl/crimson-snow.net.pem <= 変更(結合した証明書・秘密鍵の場所を指定)
「Courier-IMAP」の起動

「Courier-IMAP」をSSL対応で起動します。

FreeBSD# /usr/local/etc/rc.d/courier-imap-imapd-ssl.sh start
FreeBSD# /usr/local/etc/rc.d/courier-imap-pop3d-ssl.sh start

ポート番号は
POPの場合、995番
IMAPの場合、993番
を利用しますので、ルータで開けます。

「Courier-IMAP」の自動起動

FreeBSD起動時に「Courier-IMAP」がSSL対応で自動的に起動するようにします。

FreeBSD# vi /etc/rc.conf <= 設定ファイルの編集
#courier_imap_pop3d_enable="YES" <= SSLのみ許可する場合、無効にする
courier_imap_pop3d_ssl_enable="YES" <= 追加
#courier_imap_imapd_enable="YES" <= SSLのみ許可する場合、無効にする
courier_imap_imapd_ssl_enable="YES" <= 追加
▲ページのトップへ