| Becky! v2 で SSL POP3 (MS-Windows) |
はじめに
Stone と Stunnel
設定内容
ウイルス・フィルタを使わない場合
ウイルス・フィルタを併用する場合
複数 POP3 サーバの併用
常用するには?
問題?
セキュリティ・ボックスとの関係
SSL(Secure Socket Layer) 対応の POP3 サーバを利用できる場合に、SSL に対応していない Becky! v2 で、その恩恵を受ける方法をまとめてみた。
使用 OS は Windows 2000 Professional である。
POP サーバからメールを受信する場合、認証方式に APOP を利用する事で、POP アカウントのパスワードを平文のまま流してしまう事を避ける事ができる。POP3
サーバが APOP に対応しているなら、是非利用したいところ。メーラ側も、APOP に対応しているものは多い。
一方、POP3 サーバが SSL に対応していると、POP サーバへのログイン時だけでなく、メールの受信中の通信全体を暗号化でき、より好ましい(かどうかはわからない。最後を参照の事)。しかし、これに対応しているメーラは少ないようである(OutlookExpress
5 が対応しているらしい)。
幸い、SSL 未対応のメーラで、SSL 対応 POP サーバを利用する方法があった。
さらに、今や必須と言えるウイルス・フィルタ(ウイルスバスターの POP3フィルタなど)を共存させる事もできた。
メーラが SSL に対応していないので、SSL 通信を代行してくれるソフト(以下ポート・リピータと呼ぶ)を使う必要がある。
この目的のソフトとして、Stone と Stunnel を見つける事ができた。
Simple Repeater `stone'
http://www.gcd.org/sengoku/stone/Welcome.ja.htmlStunnel -- Universal SSL Wrapper
http://www.stunnel.org/
Stone は、APOP 認証の代行機能も持っており、APOP 未対応メーラで APOP を利用する場合にも使える。
また、単純な用途で便利に使える Stone の GUI、wstone もある。
wstone は設定が簡単で良いが、ウイルス・フィルタを共存させる用途には向かないので、ここではコマンドライン版の Stone
と Stunnel を使う。
実際に使ったバイナリは、以下のとおり。
stone version 2.1d for Win32 OpenSSL 版パッケージ
http://www.gcd.org/sengoku/stone/stone21s.lzh
stunnel Version 3.22
http://www.stunnel.org/download/stunnel/win32/stunnel-3.22.exe (stunnel の実行ファイルそのもの)
いずれも、動作には libeay32.dll、libssl32.dll が必要となる。これらは wstone の配布ファイルに含まれている。
まず Windows の「コマンドプロンプト」窓で動かしてみる。
まずは、ウイルス・フィルタを使わない単純な場合。
以下、SSL のポート番号を 995 としている。サーバによって異なるかも知れない。
メーラ、ポート・リピータ、POP3 サーバの接続関係はこんな感じ。
| メーラ | → localhost:110 |
Stone |
→ <POP3 サーバ>:995 | POP3 サーバ |
Stone の実行例 C:\BIN>stone <メールサーバ名>:995/ssl 110
Jul 02 11:23:10 start (2.1d) [548]
Jul 02 11:23:10 stone 404: <応答したサーバのアドレス>:995/ssl <- pop3
ウイルス・フィルタが動いていると、失敗するかも知れない。ウイルスバスター 2002 をインストールした環境では、POP3
フィルタが POP3 のポート 110 を占有しているために、以下のように失敗する。
(とりあえず試すには、タスクマネージャで Pop3trap.exe というプロセスを終了させればよい。ウイルス・メールに無防備になるので、そこのところはご注意。)
Stone の失敗例 C:\BIN>stone <メールサーバ名>:995/ssl 110
Jul 02 11:40:05 start (2.1d) [1576]
Jul 02 11:40:05 stone 404: Can't bind err=10048.
Stunnel の実行例 C:\BIN>stunnel-3.22 -c -d pop3 -r <メールサーバ名>:995
2002.07.01 17:06:50 LOG5[1684:1656]: Using '<メールサーバ名>.995' as tcpwrapper s
ervice name
2002.07.01 17:06:51 LOG5[1684:1656]: stunnel 3.22 on x86-pc-mingw32-gnu WIN32 wi
th OpenSSL 0.9.6a 5 Apr 2001
2002.07.01 17:06:51 LOG5[1684:1656]: FD_SETSIZE=4096, file ulimit=-1 (unlimited)
-> 2000 clients allowed
POP3 サーバ名を localhost とする事で、ポート・リピータに接続させる。
POP3サーバー localhost ユーザーID <ログインID> 認証方式 標準
通信路の暗号化と、ウイルス・メールのフィルタリングのいずれか一方を取れというのは、今となっては酷である。両立する方法を考える。
メーラ、ウイルス・フィルタ、ポート・リピータ、POP3 サーバの接続関係はこんな感じ。
localhost(127.0.0.1) から、ウイルス・フィルタを介して別の適当なローカル・アドレス(127.0.0.2)に転送している。
| メーラ | → localhost:110 | ウイルス・フィルタ | → 127.0.0.2:110 |
Stone |
→ <POP3 サーバ>:995 | POP3 サーバ |
ポート・リピータ側では、内側のアドレスを変更するだけである。
ちょっとエラーが出ているが、これで機能している。
Stone の実行例 C:\BIN>stone <メールサーバ名>:995/ssl 127.0.0.2:110
Jul 02 12:16:08 start (2.1d) [876]
Jul 02 12:16:13 Unknown address err=11004: 127.0.0.2
Jul 02 12:16:13 stone 400: <応答したサーバのアドレス>:995/ssl <- 127.0.0.2:pop3
Stunnel の実行例 C:\BIN>stunnel-3.22 -c -d 127.0.0.2:pop3 -r <メールサーバ名>:995
2002.07.02 12:25:25 LOG5[1616:1620]: Using '<メールサーバ名>' as tcpwrapper s
ervice name
2002.07.02 12:25:27 LOG5[1616:1620]: stunnel 3.22 on x86-pc-mingw32-gnu WIN32 wi
th OpenSSL 0.9.6a 5 Apr 2001
2002.07.02 12:25:27 LOG5[1616:1620]: FD_SETSIZE=4096, file ulimit=-1 (unlimited)
-> 2000 clients allowed
ウイルスバスターや Norton AntiVirus の POP3 フィルタを使う場合、メーラの設定では、POP3 サーバ名に localhost や Pop3.norton.antivirus といった名前を指定させ、POP3 アカウントのログイン ID として、<ログインID>/<POP3 サーバ名> のように、ログイン ID の後ろにスラッシュで区切って POP3 サーバ名を指定させるようになっている。
1. 「ウイルス・フィルタ → SSL非対応 POP3 サーバ」の場合 POP3サーバー localhost ユーザーID <ログインID>/<POP3 サーバ名> 認証方式 標準
この仕組みを使って、メーラにポート・リピータを POP3 サーバだと思わせれば良い。
2. 「ウイルス・フィルタ → ポート・リピータ」の場合 POP3サーバー localhost ユーザーID <ログインID>/127.0.0.2 認証方式 標準
なお、ウイルスバスターの場合、「メール検索」機能を有効にすると、Becky! v2 のプロファイルが記録されているファイルを探して、勝手に上記
1. のような設定に書き換えてしまう。
プロファイル毎に細かい設定を行う場合は、次のようにして、この勝手な操作を抑える必要がある。
レジストリ・キー HKEY_LOCAL_MACHINE\Software\TrendMicro\PC-cillin に、新たなキー Pop3Util を作成する。
この中に DWORD 値 Mailer を作成し、0 を記入する。
ウイルスバスターの POP3 フィルタは、APOP に対応していないが、Becky! の APOP 設定の有無に構わず設定変更してしまうので、この設定は APOP を使うプロファイルを併用する場合にも有用である。
SSL 対応サーバと、非対応サーバを併用する場合、以下のような関係なので、ポート・リピータの設定はそのままで、サーバごとの設定(Becky! v2 ではプロファイルと呼んでいる)を、それぞれ上記のように設定すればよい。
|
Stone の APOP 認証代行機能を使えば、SSL 対応では無いが、APOP 対応である POP3 サーバも併用する事ができる。
複数の設定が可能な Stone を使えば、SSL 代行、APOP 代行の、両方の働きをさせる事ができる。
|
しかしこれでは、メール受信をするときは、予め「コマンドプロンプト」窓で、ポート・リピータを動かし続けていなければならず、あまり便利では無い。
ここでは、Windows NT/2000/XP で可能な方法として、ポート・リピータ Stone、Stunnel をサービスとして動かす事を考える。
実は Stone には、Windows NT 系用サービス版が公表されている。
残念ながら、このバイナリは SSL 機能が使えるようにはビルドされていないようである。ソース付きなので、SSL 機能が有効となるようにビルドする事は可能と思われるが、ここでは省略する。
Stunnel の FAQ ページに、いくつかの方法が説明されている。
Running stunnel as a service under windows
http://www.stunnel.org/faq/run.html#ToC6
このうち、srvany.exe を使う方法、FireDaemon を使う方法を試してみた。
これは、任意のアプリケーションをサービスとして動かしてくれるもので、Windows NT Resource Kit に含まれている。なので、フリーという訳ではない。
使い方は、付属の srvany.doc に書かれているが、具体的には次のようになる。
1. srvany.exe を instsrv.exe を使って、任意の識別名でサービス登録する。ここでは識別名を MyService としている。
instsrv.exe も、Windows NT Resource Kit に含まれている。
C:\BIN>instsrv MyService srvany.exe
The service was successfuly added!
Make sure that you go into the Control Panel and use
the Services applet to change the Account Name and
Password that this newly installed service will use
for its Security Context..
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\ に Parameters\ キーを作成。以下の文字列値を追加。
値名
値
説明
Application C:\BIN\stone.exe サービス化したいアプリケーション。 AppParameters <メールサーバ名>:995/ssl 127.0.0.2:110 アプリケーションに与えるパラメータ。 AppDirectory C:\BIN アプリケーションの作業フォルダ。
3. 「コントロール・パネル - 管理ツール - サービス」で、上記で追加した MyService が見えるはず。これを「開始」する。以後、起動の度に起動したければ、「スタートアップの種類」を「自動」に変更する。
サービス登録を解除したい場合は、「管理ツール - サービス」で、MyService を停止した後、instsrv MyService remove と実行する。
これも、srvany.exe とほぼ同じ事ができる。
FireDaemon for WinNT-2K-XP
http://www.firedaemon.com/
試したバイナリはこれ。
v0.09c + UI v1.0R3
http://www.firedaemon.com/downloads/fd009c-fdui10R3.exe
セットアップすると、スタート・メニューに FireDaemon フォルダが追加される。ここをたどって、FireDaemonUI を起動できる。
起動した Add FireDaemon Cervice ダイアログに、サービス名、サービス化したいアプリケーション、アプリケーションに与えるパラメータ、アプリケーションの作業フォルダなど、必要な情報を書き込んだ後、[OK]
ボタンを押すだけである。
「コントロール・パネル - 管理ツール - サービス」で見ると、登録されたサービスが FireDaemon Service: <サービス名> のように表示される。
サービス登録を解除する方法は、srvany.exe の場合よりも不便だった。
まず、「管理ツール - サービス」でサービスを停止した後、コマンドプロンプトで、"%MXBIN%\FireDaemon" -u
<サービス名> を実行する。
しかし、これはサービスに無効のマークを付けるだけで、すぐに次のサービス登録はできない。Windows を再起動すると削除された。
以上のどの組み合わせも、機能している事を確認しているが、多少気になる現象が数回見られた。
SSL 対応 POP3 サーバとの接続の際、何かの理由で認証に時間がかかった時に、Stone が次のメッセージを出して(コマンドライン実行の場合)終了してしまった事があった。
Jul 02 09:48:58 select error err=10038
C:\BIN>
Stone をサービス化して運用中に、Stone がアプリケーション・エラーを起した事があった。発生状況は、上記と似ていたような気がする。
→その後同様のエラーがかなりの頻度で発生したため、Stunnel を常用するようになった。
Stunnel では、今のところこのような問題を体験していない。
ところで、トレンドマイクロ社の GateLock というセキュリティ・ボックスがある。ファイアウォール機能とウイルス・フィルタ機能を持つもので、メールに関しては、POP3
通信を監視して、ウイルスを含むメールを自動削除し、削除した事をメールで通知してくれる。
ここで実現した POP3 通信の暗号化は、この種のウイルス・フィルタ機器の働きを無効にしてしまうので注意する必要がある。
通信を暗号化する立場から言うと、このようなセキュリティ・ボックスの振る舞いは、盗み見であり、改ざんと言える。POP3
通信を暗号化する事で、ウイルス・メールも改ざんされる事無く、正しく届けられるのである。
これはすなわち、ウイルスの侵入を阻む立場から見ると、せっかくのセキュリティ・ボックスを、ウイルスが素通りした事に他ならない。
何を守りたいのか、熟慮する必要があろう。(こんなオチになるとは ^^;)
| Copyright (C) Masahiro Kitajima(KATONBO) | |
|
|