ばなぁ

Stunnel で SMTP/POP3/IMAP4 over SSL

ばなぁ

| 参考サイト | 設定手順 | 複数のサーバへアクセス | 証明書の検証 |

Gmail を POP3/IMAP4 over SSL で使いたいけれど,自分の MUA(メールソフト)が未対応だという場合,Stunnel(Universal SSL Wrapper)を使えば問題は解決します.ここでは「証明書の検証」も行い,偽装サイトに誘導されないよう設定する方法も紹介します(証明書の検証は,肝心の部分なのに,説明していないページが多すぎる.

ぷららなど,他の SMTP/POP3/IMAP4 over SSL を利用するメールサーバにも応用可能ですので頑張って設定ファイルを書いてみましょう.

参考にしたサイト

設定手順

ここでは,管理ツールは [ プログラム ] に表示させ,クラシック [ スタート ] メニューを使います.

  1. Stunnel.org から Windows Binary をダウンロードしてインストールする.
  2. [ スタート ] − [ stunnel ] − [ Service install ] を実行する.
  3. [ スタート ] − [ 管理ツール ] − [ サービス ] で "stunnel" を探し, スタートアップの種類が [ 自動 ] になっていることを確認する.

    サービスの確認

  4. [ スタート ] − [ stunnel ] − [ Edit stunnel.conf ] を実行する.
  5. stunnel.conf に以下の変更を加える. pop3s の場合,localhost(127.0.0.1)の 110/tcp にアクセスがあったとき,pop.gmail.com の 995/tcp に渡すように設定しているだけ.imaps,ssmtp も同様.
  6. MUA 側の設定を次の内容にあうように変更する(設定例は,メールアドレスが hogehoge@gmail.com,パスワードが damedame の場合で表記).
  7. stunnel.conf を保存する.
  8. stunnel のサービスを起動する.
  9. 動作確認する(ログを見て,Wrapper 機能が有効になっているか確認できる).

複数のサーバへ POP3/IMAP4 over SSL でアクセスする

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 が必要になるので,OpenSSLMinGW で必要な物を用意しておきましょう. わたしは(偶然にも)OpenVPN を使っているため,そのなかに入っている openssl.exe を使ってしまいました.本当は,自分自身の手で OpenSSL のソースを MinGW でコンパイルすべきです(かつてはそうしておりました).

  1. 証明書を PKCS7 形式でエクスポートを行う.
  2. stunnel が読める形式に変換する.
  3. stunnel.conf の設定を書き換えて,証明書の検証を行うようにする.
  4. 動作確認する.

検証用の証明書の確認

自分がアクセスする 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 系統以外であれば「証明書」のスナップインでも同じことができます).

  1. コントロールパネルや,Internet Explorer のメニューから [ インターネットのプロパティ ] を開く.
  2. [ コンテンツ ] タブの中央にある「証明書」をクリックします.
    インターネットのプロパティ
  3. [ 証明書 ] ダイアログで [ 信頼されたルート証明機関 ] を選び「Equifax Secure Certificate Authority」を選択した状態にして [ エクスポート ] をクリックします.
    証明書

証明書の変換

エクスポートが完了したら,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

stunnel.conf の変更

  1. 作成した cacerts.pem を,C:\Program Files\stunnel にコピーする.
  2. stunnel.conf で,次の項目を設定する.
  3. stunnel を起動し,動作を確認する.

Banner
Valid HTML 4.01! Valid CSS!