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

外部からメールの通信を暗号化するためにSSLを利用します。

「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 <= 証明書作成

権限の変更

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

FreeBSD# chmod 400 server.*
「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/server.pem
smtpd_tls_key_file = /etc/ssl/server.key
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番を利用しますので、ルータで開けます。

「Dovecot」の設定

当サイトの「Dovecot」の設定では、SSLを無効にしましたので、有効にする必要があります。

FreeBSD# vi /usr/local/etc/dovecot.conf <= 設定ファイルの編集
protocols = imap pop3
↓
protocols = imaps pop3s <= SSL認証のみ許可する

ssl_disable = yes
↓
ssl_disable = no <= 変更

#ssl_cert_file = /etc/ssl/certs/dovecot.pem
#ssl_key_file = /etc/ssl/private/dovecot.pem
↓
ssl_cert_file = /etc/ssl/server.pem
ssl_key_file = /etc/ssl/server.key

「Dovecot」を再起動し、設定を反映させます。

FreeBSD# /usr/local/etc/rc.d/dovecot restart

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

▲ページのトップへ