qmailではtcpserverをSSLに対応することで、暗号化通信が行えるようになる
(1)qmail停止
qmail実行中だとtcpserverをSSL対応できないので、qmailを停止する
[root@ns6 ~]# /etc/rc.d/init.d/qmail stop ← qmail停止
Shu
qmailではtcpserverをSSLに対応することで、暗号化通信が行えるようになる
(1)qmail停止
qmail実行中だとtcpserverをSSL対応できないので、qmailを停止する
tting down qmail
|
|
[root@ns6 ~]# yum -y install openssl-devel ← tcpserverのSSL対応に必要なパッケージをインストール
[root@ns6 ~]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz ← tcpserverダウンロード
※最新版のURLはダウンロードページで確認
[root@ns6 ~]# wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz ← tcpserverSSL対応パッチダウンロード
※最新版のURLはダウンロードページで確認
[root@ns6 ~]# tar zxvf ucspi-tcp-0.88.tar.gz ← tcpserver展開
[root@ns6 ~]# gunzip ucspi-tcp-ssl-20050405.patch.gz ← tcpserverSSL対応パッチ展開
[root@ns6 ~]# mv ucspi-tcp-ssl-20050405.patch ucspi-tcp-0.88
← tcpserverSSL対応パッチをtcpserver展開先ディレクトリへ移動
[root@ns6 ~]# cd ucspi-tcp-0.88 ← tcpserver展開先ディレクトリへ移動
[root@ns6 ucspi-tcp-0.88]# patch < ucspi-tcp-ssl-20050405.patch ← tcpserverSSL対応パッチ施行
patching file FILES
patching file Makefile
patching file TARGETS
patching file addcr.1
patching file argv0.1
patching file date@.1
patching file delcr.1
patching file error.h
patching file finger@.1
patching file fixcrio.1
patching file hier.c
patching file http@.1
patching file mconnect.1
patching file recordio.1
patching file tcp-environ.5
patching file tcpcat.1
patching file tcpclient.1
patching file tcprules.1
patching file tcprules.c
patching file tcprulescheck.1
patching file tcprulescheck.c
patching file tcpserver.1
patching file tcpserver.c
patching file who@.1
[root@ns6 ucspi-tcp-0.88]# make ← tcpserverコンパイル
[root@ns6 ucspi-tcp-0.88]# /bin/cp -r tcpserver /usr/local/bin ← SSL対応tcpserverを現在のtcpserverへ上書き
[root@ns6 ucspi-tcp-0.88]# make cert ← サーバー証明書作成
openssl req -new -x509 -nodes \
-out cert.pem -days 366 \
-keyout cert.pem
Generating a 1024 bit RSA private key
......++++++
....................++++++
writing new private key to 'cert.pem'
-----
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]:ns6srv.com ← サーバー名応答(なんでもいい)
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:mail.ns6srv.com ← メールサーバー名応答※
Email Address []:postmaster@ns6srv.com ← メールサーバー管理者アドレス応答
[root@ns6 ucspi-tcp-0.88]# cp cert.pem /var/qmail ← 作成したサーバー証明書をqmailインストールディレクトリへコピー
[root@ns6 ucspi-tcp-0.88]# chmod 600 /var/qmail/cert.pem ← サーバー証明書をroot以外参照できないようにする
[root@ns6 ucspi-tcp-0.88]# cd ← tcpserver展開先ディレクトリを抜ける
[root@ns6 ~]# rm -rf ucspi-tcp-0.88 ← tcpserver展開先ディレクトリ削除
[root@ns6 ~]# rm -f ucspi-tcp-0.88.tar.gz ← ダウンロードしたtcpserver削除
|
|
※応答するメールサーバー名はメールクライアントで設定するメールサーバー名と同じものを指定すること |
[root@ns6 ~]# vi /etc/rc.d/init.d/qmail ← qmail起動スクリプト修正
start() {
# Start daemons.
if [ -z $(/sbin/pidof qmail-send) ] ; then
echo -n "Starting qmail"
# qmail
csh -cf '/var/qmail/rc &' 2>&1 > /dev/null
# SMTP
tcpserver -qv -l0 -HR -u `id -u qmaild` -g `id -g qmaild` \
-x /etc/tcp.smtp.cdb 0 smtp \
fixcrio qmail-smtpd `hostname` /bin/checkpassword /bin/true 2>&1|\
splogger smtp &
----追加(ここから)----
# SMTPS
tcpserver -qvs -l0 -HR -u `id -u qmaild` -g `id -g qmaild` \
-n /var/qmail/cert.pem -x /etc/tcp.smtp.cdb 0 smtps \
fixcrio qmail-smtpd `hostname` /bin/checkpassword /bin/true 2>&1|\
splogger smtps &
----追加(ここまで)----
# POP3
tcpserver -qvRH -u `id -u qmaild` -g `id -g qmaild` \
0 pop3 qmail-popup `hostname` /bin/checkpassword \
qmail-pop3d Maildir 2>&1 | splogger pop3 &
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/qmail
return $RETVAL
else
echo "qmail is already started"
fi
}
|
|
[root@ns6 ~]# /etc/rc.d/init.d/qmail start ← qmail起動
Starting qmail
|
|
(5)ポート開放
ルーター側の設定でポート465番をOPENする。
※ルーターの設定は各ルーターのマニュアルまたはメーカー別ルーターポート開放手順を参照ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:mail.ns6srv.com)、「port番号」に465と入力して「ポートチェック」ボタン押下し、「ホスト=mail.ns6srv.com ポート=465 にアクセスできました。」と表示されることを確認。※ポート25番は閉じないこと!(送信元SMTPサーバーと送信先SMTPサーバー間でのメール転送にはポート25番を使用するため、ポート25番を閉じるとメールの送信ができなくなってしまう) |
■qmail-pop3dのSSL対応(受信メールサーバーをPOPにする場合)
[root@ns6 ~]# vi /etc/rc.d/init.d/qmail ← qmail起動スクリプト修正
start() {
# Start daemons.
if [ -z $(/sbin/pidof qmail-send) ] ; then
echo -n "Starting qmail"
# qmail
csh -cf '/var/qmail/rc &' 2>&1 > /dev/null
# SMTP
tcpserver -qv -l0 -HR -u `id -u qmaild` -g `id -g qmaild` \
-x /etc/tcp.smtp.cdb 0 smtp \
fixcrio qmail-smtpd `hostname` /bin/checkpassword /bin/true 2>&1|\
splogger smtp &
# SMTPS
tcpserver -qvs -l0 -HR -u `id -u qmaild` -g `id -g qmaild` \
-n /var/qmail/cert.pem -x /etc/tcp.smtp.cdb 0 smtps \
fixcrio qmail-smtpd `hostname` /bin/checkpassword /bin/true 2>&1|\
splogger smtps &
# POP3
tcpserver -qvRH -u `id -u qmaild` -g `id -g qmaild` \
0 pop3 qmail-popup `hostname` /bin/checkpassword \
qmail-pop3d Maildir 2>&1 | splogger pop3 &
----追加(ここから)----
# POP3S
tcpserver -qvsRH -u `id -u qmaild` -g `id -g qmaild` \
-n /var/qmail/cert.pem \
0 pop3s qmail-popup `hostname` /bin/checkpassword \
qmail-pop3d Maildir 2>&1 | splogger pop3s &
----追加(ここまで)----
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/qmail
return $RETVAL
else
echo "qmail is already started"
fi
}
[root@ns6 ~]# /etc/rc.d/init.d/qmail restart ← qmail再起動
Shutting down qmail
Starting qmail
|
|
(2)ポート開放
ルーター側の設定でポート995番をOPENする。
※ルーターの設定は各ルーターのマニュアルまたはメーカー別ルーターポート開放手順を参照ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:mail.ns6srv.com)、「port番号」に995と入力して「ポートチェック」ボタン押下し、「ホスト=mail.ns6srv.com ポート=995 にアクセスできました。」と表示されることを確認。 |
■Dovecot設定(受信メールサーバーをIMAPにする場合)
[root@ns6 ~]# 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
ssl_cert_file = /var/qmail/cert.pem ← サーバー証明書を指定
ssl_key_file = /var/qmail/cert.pem ← サーバー証明書を指定
|
|
■Dovecot再起動
[root@ns6 ~]# /etc/rc.d/init.d/dovecot restart ← dovecot再起動
Dovecot Imap を停止中: [ OK ]
Dovecot Imap を起動中: [ OK ]
|
|
(2)ポート993番のOPEN
ルーター側の設定でポート993番をOPENする。
※ルーターの設定は各ルーターのマニュアルまたはメーカー別ルーターポート開放手順を参照ポートチェック【外部からポート開放確認】で「host名」にサーバー名(例:mail.ns6srv.com)、「port番号」に993と入力して「ポートチェック」ボタン押下し、「ホスト=mail.ns6srv.com ポート=993 にアクセスできました。」と表示されることを確認。 |
■メールクライアント設定(受信メールサーバーをPOPにする場合)
Outlook Expressを起動し、メニューの「ツール」⇒「アカウント」⇒「メール」タブ⇒「プロパティ」ボタンとしてメール設定を行う

「このサーバーはセキュリティで保護された接続(SSL)が必要」を送信メール側、受信メール側ともにチェック
「サーバーのポート番号」、「送信メール」に「465」と入力
「サーバーのポート番号」、「受信メール」に「995」と入力して(自動で変更される)「OK」 |
■メールクライアント設定(受信メールサーバーをIMAPにする場合)
Outlook Expressを起動し、メニューの「ツール」⇒「アカウント」⇒「メール」タブ⇒「プロパティ」ボタンとしてメール設定を行う

「このサーバーはセキュリティで保護された接続(SSL)が必要」を送信メール側、受信メール側ともにチェック
「サーバーのポート番号」、「送信メール」に「465」と入力
「サーバーのポート番号」、「受信メール」に「993」と入力して(自動で変更される)「OK」 |
■サーバー証明書のインポート
ここままでメールサーバー間通信内容の暗号化は行えるが、メールクライアントからメールサーバーへアクセスするたびに以下のような警告ウィンドウが表示されて煩わしいので、サーバー証明書をクライアントへインポートすることにより、警告ウィンドウが表示されないようにする。

(1)インポート用サーバー証明書作成
クライアントへのインポート用サーバー証明書を作成する |
[root@ns6 ~]# cd /var/qmail ← サーバー証明書保存ディレクトリへ移動
[root@ns6 qmail]# openssl x509 -in cert.pem -outform DER -out mail.der ← インポート用サーバー証明書作成
|
|
※mail.derというファイル名でインポート用サーバー証明書が作成されるので、クライアント側へコピーする(コピーする手段は利用者が限られた仲間内の場合はフロッピー、メール等でもいいが、利用者が不特定多数の場合はWeb上で公開すればよい⇒当サイトのサーバー証明書 |
(2)クライアントへサーバー証明書をインポート
サーバー側からコピーしてきたインポート用サーバー証明書(mail.der)をダブルクリックする 「証明書のインストール」 「次へ」 「次へ」
「完了」

「はい」

「OK」 |
■メールサーバー確認
・内部で同一ユーザ同士でメールの送受信
・内部で他ユーザ間でメールの送受信
・内部で外部(プロバイダのメールアドレス等)との送受信
・内部で携帯との送受信※
・外部(会社等)で同一ユーザ同士でメールの送受信
・外部(会社等)で他ユーザ間でメールの送受信
・外部(会社等)で外部(プロバイダのメールアドレス等)との送受信
・外部(会社等)で携帯との送受信※※携帯はドメイン指定受信等でメールサーバーからのメールが拒否されないようにしておくこと |