1. smtps, imaps用の試験メールサービスを利用する
2. 試験サービスなので第三者にはサーバへ接続させない
3. 2.の目的を達するためにクライアント認証を利用する
クライアント認証を利用する場合、
クライアント側が証明書と秘密鍵を持つ。
通常のクライアント・サーバモデルの逆である。
(簡易図)
smtp.example.com 465/tcp
imap.example.com 993/tcp
-------- --------
| client |----------------->| server |
-------- --------
ssl/tls Client
Authentication
|------------------|
stunnel または
stone を利用する
ssl/tlsをしゃべるクライアント用モジュールは多数あるが、
クライアント認証に利用できるものは少ない。
そのため、stunnelまたはstoneを利用して
本モデルのssl/tls経路を作り通信を通す。
その手順を残しておく(証明書作成の手順はここでは紹介しない)。
設定ファイル内のclient.keyとclient.crtは準備していることを前提とする。
◆ stunnelを利用する場合
● 設定
$ vi stunnel.conf
client = yes
cert = /etc/pki/CA/client.crt
key = /etc/pki/CA/private/client.key
debug = 7
output = /var/log/stunnel/access.log
pid = /var/run/stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
;foreground = yes
[smtps]
accept = 10587
connect = smtp.example.com:465
[imaps]
accept = 10143
connect = imap.example.com:993
● 起動
ローカルに設定するポートが既に使われていないことは事前に確認しておくこと。
$ stunnel stunnel.cfg
● 実行例
ツールの実装は省略する。
一点。ssl/tls処理はstunnelが対応するため、
非ssl/tls用のクライアントで実行すればよい。
$ ./smtp_auth.rb localhost 10587
$ ./imap.rb localhost 10143
◆ stoneを利用する場合
● 設定
$ vi stone.cfg
-L /var/log/stone/error.log
-a /var/log/stone/access.log
-dd
-n
-q key=/etc/pki/CA/private/client.key
-q cert=/etc/pki/CA/client.crt
smtp.example.com:465/ssl localhost:10587
--
imap.example.com:993/ssl localhost:10143
● 起動
$ stone -C stone.cfg
● 実行例
stunnelの場合と同じである。