[ Caps W"a"nderland xrea.com Edition ]
[ Caps W"a"nderland @ So-net ]
[ Special Side of Caps W"a"nderland ]
| 参考サイト | 設定手順 | 複数のサーバへアクセス | 証明書の検証 | いくつかの証明書 |
2016年1月28日(木)
stunnel 経由でメールを送受信する場合,avast! アンチウイルス(フリー版)のSSLスキャンを有効にしていると送受信を拒否されることがあります。 stunnel によるメール送受信を avast! のSSLスキャン機能を使って行うための設定手順を [ Mail ] avast! アンチウイルス 11 (2016) + stunnel にまとめました。
2015年12月20日(日)
この日現在リリースされている stunnel に付属する service.conf には, stunnel を Gmail や Google Apps 独自ドメインで利用するための設定例が,コメントアウトの形で記載されています。 その設定方法を用いれば verify = 2(証明書の検証あり)での送受信が可能なので,service.conf を見てメールソフトの設定をすれば大丈夫です。
なお, 手元で試した限りでは Gmail の設定でサーバー名等を変えるだけで,マイクロソフトの Outlook.com や Live.jp, MVNO サービスで有名な mineo でも verify = 2 での運用が可能でしたので,追記しておきます。 なお,connect = サーバー名:ポート名 の「ポート名」は私が適当につけたものなので,各自の環境で振り直してください。
[imap-outlook] client = yes accept = 127.0.0.1:8993 connect = imap-mail.outlook.com:993 verify = 2 CAfile = ca-certs.pem checkHost = imap-mail.outlook.com OCSPaia = yes [smtp-outlook] client = yes accept = 127.0.0.1:8025 connect = smtp-mail.outlook.com:25 CAfile = ca-certs.pem checkHost = smtp-mail.outlook.com OCSPaia = yes protocol = smtp verify = 2
[pop3s-live] client = yes accept = 127.0.0.1:4995 connect = pop3.live.jp:995 verify = 2 CAfile = ca-certs.pem checkHost = pop3.live.jp OCSPaia = yes [smtps-live] client = yes accept = 127.0.0.1:4465 connect = smtp.live.com:465 CAfile = ca-certs.pem checkHost = smtp.live.com OCSPaia = yes protocol = smtp
[pop3s-mineo] client = yes accept = 127.0.0.1:6995 connect = pops.mineo.jp:995 checkHost = pops.mineo.jp CAfile = ca-certs.pem OCSPaia = yes verify = 2
Zenno.com のサーバーは,verify = 2 には対応していませんが,非公式(自己責任)で TLS に対応しているとされており, POP3 については次の設定で受信できました。
[pop3s-zenno] client = yes accept = 127.0.0.1:1110 connect = pop.707.to:995 checkHost = pop.707.to verify = 0
<2015年12月20日の追記・ここまで>
内容が古くなっており,2013年3月現在,この設定だけでは動きません。 2013年月時点では,証明書の検証 について,わたしの手元では次の方法で成功しています。 stunnel.conf の他の部分についても書き換えている箇所がありますが,本質的な部分ではないので省略しています。
手元の stunnel.conf の Gmail の POP3 設定に関する部分は次の通りになっています。
[pop3-gmail] client = yes accept = localhost:110 connect = pop.gmail.com:995 CAfile = peer-pop3-gmail.pem verify = 3
こまごまとしたことは Slashdor Japan の日記 に書いていることがありますので,そちらもご覧下さい。
Gmail を POP3/IMAP4 over SSL で使いたいけれど,自分の MUA(メールソフト)が未対応だという場合,Stunnel(Universal SSL Wrapper)を使えば問題は解決します.ここでは「証明書の検証」も行い,偽装サイトに誘導されないよう設定する方法も紹介します(証明書の検証は,肝心の部分なのに,説明していないページが多すぎる.
ぷららなど,他の SMTP/POP3/IMAP4 over SSL を利用するメールサーバにも応用可能ですので頑張って設定ファイルを書いてみましょう.
ここでは,管理ツールは [ プログラム ] に表示させ,クラシック [ スタート ] メニューを使う.

; Use it for client mode client = yes
; Service-level configuration [pop3s] accept = 110 connect = pop.gmail.com:995 [imaps] accept = 143 connect = imap.gmail.com:993 [ssmtp] accept = 25 connect = smtp.gmail.com:465
; Service-level configuration [pop3s] accept = 127.0.0.1:110 connect = pop.gmail.com:995 [imaps] accept = 127.0.0.1:143 connect = imap.gmail.com:993 [ssmtp] accept = 127.0.0.1:25 connect = smtp.gmail.com:465
; Service-level configuration [pop3s so-net] accept = 127.0.0.1:8110 connect = pop.so-net.ne.jp:995 [ssmtp so-net] accept = 127.0.0.1:587 connect = mail.so-net.ne.jp:587 protocol = smtp
Gmail 以外にも POP3 over SSL を利用する場合,はアクセスするサーバに対する設定をつくればよい. たとえば次のようにする(上は Gmail 用,下が新たに追加する POP3 サーバ用).
[pop3s] accept = 110 connect = pop.gmail.com:995 [pop3s] accept = 2110 connect = pop.example.co.jp:995
つまり [pop3s] を複数設定し ポート番号を異なる ものに設定すればよいことになる. SMTP については,Gmail で「アカウントの設定」を行えば,Gmail 用の smtps を常に利用できるので複数の設定をすることにあまり意味はない(と思う).
おおまかな手順を書くと,次の通り. 途中で openssl.exe が必要になるので,OpenSSL や MinGW で必要な物を用意しておく. わたしは(偶然にも)OpenVPN を使っているため,そのなかに入っている openssl.exe を使ってしまった. 本当は,自分自身の手で OpenSSL のソースを MinGW でコンパイルすべき(かつてはそうしていた).
自分がアクセスする POP サーバの証明書の検証に必要な「ルート証明書」を探す. Gmail の場合は,pop.gmail.com にアクセスするので,次のようなコマンドで,必要なルート証明書を調べる. コマンドプロンプトを起動して,次のコマンドを入力する. openssl.exe は,パスが通っていなければ,フルパス(C:\Program Files\ほげほげ...)で指定する必要がある.
openssl.exe s_client -connect pop.gmail.com:995 -showcerts
ずらずらと文字が出力されます.その途中に「Server certificate」という部分があるので, そこに書かれている内容を確認する.上記を実行した場合,かつては
Server certificate subject=/C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com issuer=/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
というのが出てくるので 「Equifax Secure Certificate Authority」という名前のルート証明書を探して, エクスポートすればよかった.
しかし,2010年9月1日現在は以下の結果になる.このような証明書は Windows「信頼されたルート証明機関」−「証明書」の中に存在しない.
Server certificate subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.gmail.com issuer=/C=US/O=Google Inc/CN=Google Internet Authority
しかし,もう少し上を見ると,次のような記述がある.
1 s:/C=US/O=Google Inc/CN=Google Internet Authority i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
Gmail 用サーバで,証明書の設定が変?なのかもしれない. というわけで,かつてと同じ issuer である Equifax Secure Certificate Authority という名前のルート証明書を探してエクスポートすればよいとわかる.
また,送信サーバ(smtp.gmail.com)を利用する場合は,次のコマンドを実行して必要なルート証明書を確認すればよいのだが, 2010年9月1日現在,こちらも pop.gmail.com 同様うまく行かないようだ. ただし,必要なルート証明書は pop.gmail.com と同一になったみたい...
openssl.exe s_client -connect smtp.gmail.com:465 -showcerts
エクスポートすべき証明書がわかったので,次はその証明書をエクスポートする. ここでは pop.gmail.com で話を進める.
Windows XP Home Edition やその後継,Windows 2000 以降の Professional 及び サーバ製品群, どのバージョンでもできる方法である(Home Edition 系統以外であれば「証明書」のスナップインでも同じことができる).





move c:\mail.cer c:\ca.pem
; Authentication stuff verify = 2
; It's often easier to use CAfile CAfile = ca.pem
; Some debugging stuff useful for troubleshooting debug = 7 output = stunnel.log
以上.