メールサーバー間通信内容暗号化(OpenSSL+sendmail+Dovecot)

最終更新日: 2007.12.10

<<トップページ <<新着情報 <<質問掲示板 <<アンケート <<サイト内検索 <<ダウンロード <<管理人へメール <<Fedoraで自宅サーバー構築

■概要

メールの送受信を外部から行う場合、ユーザ名やパスワードが盗聴される恐れがあるため、メールサーバー間の通信内容を暗号化する。
なお、暗号化されるのはここで設定するメールサーバーとクライアント間のみであり、メールサーバーと送信先メールサーバー間は暗号化されないため、メール本文が宛先まで完全に暗号化されるわけではない。

メールサーバー構築済であること


■サーバー証明書作成

[root@centos ~]# cd /etc/pki/tls/certs/ ← ディレクトリ移動※CentOS5の場合

[root@centos ~]# cd /usr/share/ssl/certs ← ディレクトリ移動※CentOS4の場合

[root@centos certs]# make mail.pem ← サーバー証明書作成
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 ; \
cat $PEM1 >  mail.pem ; \
echo ""    >> mail.pem ; \
cat $PEM2 >> mail.pem ; \
rm -f $PEM1 $PEM2
Generating a 1024 bit RSA private key
.....++++++
....................++++++
writing new private key to '/tmp/openssl.C28807'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP ← 国名応答
State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県名応答
Locality Name (eg, city) [Newbury]:Shinjuku ← 市区町村名応答
Organization Name (eg, company) [My Company Ltd]:centossrv.com ← サイト名応答(なんでもいい)
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:mail.centossrv.com ← メールサーバー名応答※
Email Address []:postmaster@centossrv.com ← 管理者メールアドレス応答

[root@centos certs]# cd ← ホームディレクトリへ戻る
※Common Nameに応答するメールサーバー名は、メールソフトで設定するメールサーバー名を応答すること

■sendmail設定

[root@centos ~]# vi /etc/mail/sendmail.mc ← sendmail.mc編集
dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')
dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/mail.pem')
dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/mail.pem')
−−サーバー証明書の所在を指定(ここから)−−※CentOS5の場合
define(`confCACERT_PATH',`/etc/pki/tls/certs')
define(`confCACERT',`/etc/pki/tls/certs/mail.pem')
define(`confSERVER_CERT',`/etc/pki/tls/certs/mail.pem')
define(`confSERVER_KEY',`/etc/pki/tls/certs/mail.pem')
−−サーバー証明書の所在を指定(ここまで)−−※CentOS5の場合
−−サーバー証明書の所在を指定(ここから)−−※CentOS4の場合
define(`confCACERT_PATH',`/usr/share/ssl/certs')
define(`confCACERT',`/usr/share/ssl/certs/mail.pem')
define(`confSERVER_CERT',`/usr/share/ssl/certs/mail.pem')
define(`confSERVER_KEY',`/usr/share/ssl/certs/mail.pem')
−−サーバー証明書の所在を指定(ここまで)−−※CentOS4の場合

dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl ← 追加(SMTPS over TLSの有効化)

[root@centos ~]# m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ← sendmail.mcよりsendmail.cf作成

■sendmail再起動

(1)sendmail再起動
[root@centos ~]# /etc/rc.d/init.d/sendmail restart ← sendmail再起動
sendmail を停止中:                                         [  OK  ]
sm-client を停止中:                                        [  OK  ]
sendmail を起動中:                                         [  OK  ]
sm-client を起動中:                                        [  OK  ]

(2)ポート465番のOPEN
ルーター側の設定でポート465番をOPENする。

ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:mail.centossrv.com)、「port番号」に465と入力して「ポートチェック」ボタン押下し、「ホスト=mail.centossrv.com ポート=465 にアクセスできました。」と表示されることを確認。

■Dovecot設定

[root@centos ~]# vi /etc/dovecot.conf ← dovecot設定ファイル編集
# Disable SSL/TLS support.
#ssl_disable = no
ssl_disable = no ← 追加(TLS通信の有効化)

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
#ssl_cert_file = /usr/share/ssl/certs/dovecot.pem
#ssl_key_file = /usr/share/ssl/private/dovecot.pem
−−サーバー証明書の所在を指定(ここから)−−※CentOS5の場合
ssl_cert_file = /etc/pki/tls/certs/mail.pem
ssl_key_file = /etc/pki/tls/certs/mail.pem
−−サーバー証明書の所在を指定(ここまで)−−※CentOS5の場合
−−サーバー証明書の所在を指定(ここから)−−※CentOS4の場合
ssl_cert_file = /usr/share/ssl/certs/mail.pem
ssl_key_file = /usr/share/ssl/certs/mail.pem
−−サーバー証明書の所在を指定(ここまで)−−※CentOS4の場合

■Dovecot再起動

(1)Dovecot再起動
[root@centos ~]# /etc/rc.d/init.d/dovecot restart ← dovecot再起動
Dovecot Imap を停止中:                                     [  OK  ]
Dovecot Imap を起動中:                                     [  OK  ]

(2)ポート995番(POPの場合)または993番(IMAPの場合)のOPEN
ルーター側の設定でポート995番(POPの場合)または993番(IMAPの場合)をOPENする。

ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:mail.centossrv.com)、「port番号」に995(POPの場合)または993(IMAPの場合)と入力して「ポートチェック」ボタン押下し、「ホスト=mail.centossrv.com ポート=995(POPの場合)または993(IMAPの場合) にアクセスできました。」と表示されることを確認。

■メールソフト設定(受信メールサーバーをPOPにする場合)

自宅や会社等の複数拠点でメールを使用する場合で、メールボックスを同期しなくてもいい場合(例:会社で受信したメールは自宅で受信できなくてもいい場合)、受信メールサーバーにPOPを使用する。
ここでは、メールソフトとしてOutlook Expressを使用する。

Outlook Expressを起動し、メニューの「ツール」⇒「アカウント」⇒「メール」タブ⇒「プロパティ」ボタンとしてメール設定を行う



「このサーバーはセキュリティで保護された接続(SSL)が必要」を送信メール側、受信メール側ともにチェック
「送信メール(SMTP)」のポート番号を465に変更

■メールソフト設定(受信メールサーバーをIMAPにする場合)

自宅や会社等の複数拠点でメールを使用する場合で、メールボックスを同期したい場合(例:会社で受信したメールを自宅でも受信したい場合)、受信メールサーバーにIMAPを使用する。
ここでは、メールソフトとしてOutlook Expressを使用する。

Outlook Expressを起動し、メニューの「ツール」⇒「アカウント」⇒「メール」タブ⇒「プロパティ」ボタンとしてメール設定を行う




「このサーバーはセキュリティで保護された接続(SSL)が必要」を送信メール側、受信メール側ともにチェック
「送信メール(SMTP)」のポート番号を465に変更

■サーバー証明書のインポート

ここままでメールサーバー間通信内容の暗号化は行えるが、メールソフトからメールサーバーへアクセスするたびに以下のような警告ウィンドウが表示されて煩わしいので、サーバー証明書をクライアントへインポートすることにより、警告ウィンドウが表示されないようにする。




(1)インポート用サーバー証明書作成
クライアントへのインポート用サーバー証明書を作成する
[root@centos ~]# cd /etc/pki/tls/certs ← ディレクトリ移動※CentOS5の場合

[root@centos ~]# cd /usr/share/ssl/certs ← ディレクトリ移動※CentOS4の場合

[root@centos certs]# openssl x509 -in mail.pem -outform DER -out mail.der ← インポート用サーバー証明書作成
※/usr/share/ssl/certs/mail.derというファイル名でインポート用サーバー証明書が作成されるので、クライアント側へコピーする(コピーする手段は利用者が限られた仲間内の場合はフロッピー、メール等でもいいが、利用者が不特定多数の場合はWeb上で公開すればよい⇒当サイトのサーバー証明書

(2)クライアントへサーバー証明書をインポート
サーバー側からコピーしてきたインポート用サーバー証明書(server.der)をダブルクリックする



「証明書のインストール」



「次へ」



「次へ」



「完了」



「はい」



「OK」

■メールサーバー確認

・内部で同一ユーザ同士でメールの送受信
・内部で他ユーザ間でメールの送受信
・内部で外部(プロバイダのメールアドレス等)との送受信
・内部で携帯との送受信※
・外部(会社等)で同一ユーザ同士でメールの送受信
・外部(会社等)で他ユーザ間でメールの送受信
・外部(会社等)で外部(プロバイダのメールアドレス等)との送受信
・外部(会社等)で携帯との送受信※

※携帯はドメイン指定受信等でメールサーバーからのメールが拒否されないようにしておくこと



▲このページのトップへ戻る

LPIロゴ Copyright© 2005-2008 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします