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

最終更新日: 2014.02.19

<<トップページ <<新着情報 <<サイト内検索 <<CentOSで自宅サーバー構築 <<Scientific Linuxで自宅サーバー構築

■概要

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

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


■サーバー証明書作成

[root@fedora ~]# cd /etc/pki/tls/certs/ ← ディレクトリ移動(FC4〜F15の場合)

[root@fedora ~]# cd /usr/share/ssl/certs/ ← ディレクトリ移動(FC1〜FC3の場合)

[root@fedora 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 ; \18:44 2006/10/31
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) [XX]:JP ← 国名応答
State or Province Name (full name) []:Tokyo ← 都道府県名応答
Locality Name (eg, city) [Default City]:Shinjuku ← 市区町村名応答
Organization Name (eg, company) [Default Company Ltd]:fedorasrv.com ← サイト名応答(なんでもいい)
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:mail.fedorasrv.com ← メールサーバー名応答※
Email Address []:postmaster@fedorasrv.com ← 管理者メールアドレス応答

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

■Postfix設定

[root@fedora ~]# vi /etc/postfix/main.cf ← postfix設定ファイル(main)編集
以下を最終行に追加(F9〜F15の場合)
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache

以下を最終行に追加(FC4〜F8の場合)
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache

以下を最終行に追加(FC1〜FC3の場合)
smtpd_use_tls = yes
smtpd_tls_cert_file = /usr/share/ssl/certs/mail.pem
smtpd_tls_key_file = /usr/share/ssl/certs/mail.pem
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache

[root@fedora ~]# vi /etc/postfix/master.cf ← postfix設定ファイル(master)編集
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
#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 ← 行頭の#を削除(FC1,FC2,FC3の場合)
↓
tlsmgr    fifo  -       -       n       300     1       tlsmgr

■Postfix再起動

(1)Postfix再起動
[root@fedora ~]# /etc/rc.d/init.d/postfix restart ← Postfix再起動
Restarting postfix (via systemctl):                        [  OK  ]

(2)ポート465番のOPEN
ルーター側の設定でポート465番をOPENする。
※ルーターの設定は各ルーターのマニュアルまたはメーカー別ルーターポート開放手順を参照

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

※ポート25番は閉じないこと!(送信元SMTPサーバーと送信先SMTPサーバー間でのメール転送にはポート25番を使用するため、ポート25番を閉じるとメールの送信ができなくなってしまう)

■Dovecot設定

【F14〜F15の場合】
[root@fedora ~]# vi /etc/dovecot/conf.d/10-ssl.conf 
# SSL/TLS support: yes, no, required. 
#ssl = yes
ssl = yes ← 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 = </etc/pki/tls/certs/mail.pem ← サーバー証明書を指定
ssl_key = </etc/pki/tls/certs/mail.pem ← サーバー証明書を指定

【FC1〜F13の場合】
[root@fedora ~]# vi /etc/dovecot.conf ← dovecot設定ファイル編集
# SSL/TLS support: yes, no, required. 
#ssl = yes
ssl = yes ← TLS通信の有効化(F11,F12,F13の場合)

# Disable SSL/TLS support.
#ssl_disable = no
ssl_disable = no ← TLS通信の有効化(FC1,FC2,FC3FC4,FC5,FC6,F7,F8,F9,F10の場合)

# 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
ssl_cert_file = /etc/pki/tls/certs/mail.pem ← サーバー証明書を指定(FC4,FC5,FC6,F7,F8,F9,F10,F11,F12,F13の場合)
ssl_key_file = /etc/pki/tls/certs/mail.pem ← サーバー証明書を指定(FC4,FC5,FC6,F7,F8,F9,F10,F11,F12,F13の場合)
ssl_cert_file = /usr/share/ssl/certs/mail.pem ← サーバー証明書を指定(FC1,FC2,FC3の場合)
ssl_key_file = /usr/share/ssl/certs/mail.pem ← サーバー証明書を指定(FC1,FC2,FC3の場合)

■Dovecot再起動

(1)Dovecot再起動
[root@fedora ~]# /etc/rc.d/init.d/dovecot restart ← dovecot再起動
Restarting dovecot (via systemctl):                        [  OK  ]

(2)ポート995番(POPの場合)または993番(IMAPの場合)のOPEN
ルーター側の設定でポート995番(POPの場合)または993番(IMAPの場合)をOPENする。
※ルーターの設定は各ルーターのマニュアルまたはメーカー別ルーターポート開放手順を参照

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

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

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

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



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

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

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

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




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

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

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




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

[root@fedora ~]# cd /usr/share/ssl/certs/ ← ディレクトリ移動(FC1〜FC3の場合)

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

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



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



「次へ」



「次へ」



「完了」



「はい」



「OK」

■メールサーバー確認

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

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


■関連コンテンツ




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

プライバシーポリシー