![]() |
Stunnel で SMTP/POP3/IMAP4 over SSL |
![]() |
| 参考サイト | 設定手順 | 複数のサーバへアクセス | 証明書の検証 |
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
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」という名前のルート証明書を探して, エクスポートすればよいことになります.
また,送信サーバ(smtp.gmail.com)を利用する場合は,次のコマンドを実行して必要なルート証明書を確認します.
openssl.exe s_client -connect smtp.gmail.com:465 -showcerts
エクスポートすべき証明書がわかったので,次はその証明書をエクスポートします. ここでは pop.gmail.com で話を進めます.
Windows XP Home Edition やその後継,Windows 2000 以降の Professional 及び サーバ製品群, どのバージョンでもできる方法です(Home Edition 系統以外であれば「証明書」のスナップインでも同じことができます).





エクスポートが完了したら,stunnel で読み込める形に変換する. 変換は次のコマンドで行う.ここでは,エクスポートしたファイルの名前が「cacerts.p7b」とした.
openssl pkcs7 -inform der -in cacerts.p7b -print_certs > cacerts.pem
このコマンドにより「cacerts.pem」というファイルができる.これが stunnel で読み込み可能なルート証明書である. 複数のルート証明書を必要とする場合は,異なるファイル名でエクスポートしておき, 次のように cacerts.pem に追記(>>)していけばよい.
(1枚目の証明書 )openssl pkcs7 -inform der -in cacerts_1.p7b -print_certs > cacerts.pem (2枚目の証明書以降)openssl pkcs7 -inform der -in cacerts_2.p7b -print_certs >> cacerts.pem
; Authentication stuff verify = 2
; It's often easier to use CAfile CAfile = cacerts.pem