Internet Watch logo
記事検索
バックナンバー
【 2008/10/08 】
第30回:パスワードのセキュリティ
[11:18]
【 2008/09/24 】
第29回:USBメモリのセキュリティ
[12:31]
【 2008/09/17 】
第28回:メール編(17)迷惑メールをめぐる法改正
[12:51]
【 2008/09/03 】
第27回:メール編(16)迷惑メールを無視する(下)
[15:11]
【 2008/08/27 】
第26回:メール編(15)迷惑メールを無視する(上)
[11:37]
【 2008/07/30 】
第25回:メール編(14)迷惑メールを回避する
[11:51]
【 2008/07/23 】
第24回:メール編(13)迷惑メールに潜む罠(下)
[11:25]
【 2008/07/16 】
第23回:メール編(12)迷惑メールに潜む罠(中)
[11:18]
【 2008/07/09 】
第22回:メール編(11)迷惑メールに潜む罠(上)
[11:18]
【 2008/07/02 】
第21回:メール編(10)迷惑メールが来るキッカケ(下)
[11:23]
【 2008/06/25 】
第20回:メール編(9)迷惑メールが来るキッカケ(上)
[16:01]
【 2008/06/18 】
第19回:メール編(8)「迷惑メール」が氾濫する理由
[11:15]

第27回:メール編(16)迷惑メールを無視する(下)


ベイジアンフィルタの「POPFile」を使う

 前回は、迷惑メールのフィルタリング、つまり見分ける方法として、「メールソフトが行う」「メールサーバーからメールソフトまでの中間で行う」「メールサーバーで行う」という3種類があることを紹介した。今回は、そのうちの「メールサーバーからメールソフトまでの中間で行う」フィルタリングの具体例として、筆者が普段使用している「POPFile」を解説する。

 POPFileは、ローカルPCにインストールすることで、Outlook Expressなどのメールソフトがメールを受信する際のプロキシとして動作するソフトだ。POPFileを経由したメールは、ベイジアンフィルタによって分類され、迷惑メールと判定されたことなどを示す情報が件名やヘッダに付与される。これをもとにメールソフト側でフォルダを振り分けるようルールを設定することで、迷惑メールを受信ボックスに届かないようにできるわけだ。

 メールソフトに搭載されている迷惑メールフィルタや、ISPのメールサーバー側で用意している迷惑メールフィルタに比べると、利用するには若干手間がかかる。しかしPOPFileでは、複数の「バケツ」(POPFileの用語で、メールの振り分け用フォルダのようなもの)を複数設定することで、迷惑メールだけでなく、用途によってさまざまなカテゴリにメールを分類できるのが特徴だ。

 また、的確に迷惑メールを振り分けるにはある程度の「学習」が必要となるが、1週間も使ってみれば、かなり高い精度でユーザーに応じた分類をしてくれるようになるだろう。


インストールは基本的に標準のままでOK

POPFileの公式ページ。有志により日本語化されているので、戸惑うことはないだろう
 POPFileの最新版は「v1.0.1」となっており、公式ページから無料でダウンロードできる。

 インストールは、基本的に標準のままでよいだろう。ただし、GmailなどからSSLを使ってメールを取得する転送方式を使用している場合は、SSLのインストールにチェックを入れる必要がある。SSLを含め、いくつかの非標準インストールオプションは、インストールパッケージには含まれておらず、インストール時に別途ダウンロードするようになっている。

 インストールが完了すると、セットアップウィザードが起動する。これも基本的には初期設定のままでよい。セットアップウィザードは、いくつかのメールソフトに関してはPOPFileを使うように自動設定してくれるが(それ以外のメールソフトについては手動で設定する必要があるが、その方法は後ほど説明する)。

 セットアップが完了すると、システムトレイにタコのアイコンが表示される。これをダブルクリックすると、「POPFile コントロールセンター」というWebページに移動し、ここからPOPFileの詳細設定を行うことができる。


インストール時の言語設定画面で「Nihongo」と表示される以外は、すべて日本語化されていて使いやすい SSLのモジュールをインストールオプションに入れているため、途中でダウンロードを自動的に行っている

「バケツ」の設定

 「POPFile コントロールセンター」では、「バケツ」タブをクリックして、バケツの設定をしておく。

 初期設定では、「personal」「work」「other」「spam」という4つのバケツが用意されているが、筆者は普段、「other」の代わりに、メールマガジンなどを受信するための「ml」を作成している。

 ちなみに筆者は、それぞれのバケツに次のようなメールを分類する方針を決めている。「personal」には個人の私信、クレジットカード、銀行、ISPからのお知らせ、「work」には仕事関連のメール、「ml」にはメールマガジン全般、「spam」には迷惑メールを振り分けるようにしている。

 なお、初期設定では、すべてメールの件名冒頭に「[work]」などのバケツ名が付け加えられるようになっている。しかし、初期学習中はミスが多く、必要なメールにもかかわらず、件名の冒頭に「[spam]」という文字列が表示されることもあるので、チェックを外しておくとよいだろう。

 その他の設定は特に変更する必要はないが、今回画面サイズの関係でユーザーインターフェイスのスキンを小サイズに変更している。これは「設定」タブの「ユーザーインターフェイス」の項目にあるスキンのプルダウンメニューから変更できる。


管理画面のバケツタブでバケツの作成・削除・改名ができるほか、バケツごとの設定変更が可能だ 初期学習中は件名の変更を行っても分類ミスが多いため、件名の変更は行わない方がよいだろう。初期学習が終了した際に改めて設定しなおすとよい

メールソフト側の設定

 次に、メールソフトがPOPfile経由でメールを受信するための設定を行う(セットアップウィザードで設定してあれば不要)。設定方法としては、メールソフトの設定で、POPサーバー名を「127.0.0.1」に変更する。

 さらに、アカウント名の前には、変更前のPOPサーバー名とコロン(:)を入力する(「test」というアカウント名で「pop.example.com」というPOPサーバーを使用している場合、アカウント名は「pop.example.com:test」となる)。


メールソフト側の設定では、POPサーバー名とアカウント名を変更する POPファイルとアカウント名を変更した画面。メール受信時にPOPFile経由にするため、POPサーバー名を「127.0.0.1」にして、元のPOPサーバー名をアカウント名のところに入力し、本来のユーザー名との区切りに「:」を入れている

初期学習にはガマンが必要

 メールソフト側の設定が終了すると、POPFile経由でメールを受信するようになる。その後は、「POPFile コントロールセンター」の「履歴」タブを開いて、メールを正しく分類するための学習作業を行う。

 「POPFile コントロールセンター」には、メールの受信日時、差出人、あて先、件名とともに、POPfileが判断した「分類」の履歴が表示されている。履歴で表示する内容や1ページの最大件数は、設定タブで変更可能だ。

 冒頭でも触れたように、POPFileはインストール直後では、迷惑メールを振り分けるための「学習データ」が全く存在しない。そのため、少なくとも3日、できれば1週間ほどは、メールを読み込んだ後に「POPFile コントロールセンター」を起動して、どのように分類されたかを目視でチェックし、間違いを指摘する「初期学習」を行う必要がある。

 初めてPOPfileを使った場合には、すべてのメールは、分類不能を意味する「unclassfied」という分類が行われている。POPFileの学習は、この「Unclassfied」になったメールと、誤って別のバケツに分類されたメールを再分類することだ。初期学習時はデータが少ないために分類ミスが多いが、初めの数日はガマンして評価してほしい。


初期学習のコツはバケツの評価基準にブレを作らないこと

件名や差出人から明らかに判断ができる場合、「履歴」タブのメール一覧画面にあるプルダウンメニューからバケツ名を選び、「再分類」ボタンを押すと一括して学習できる
 学習方法としては、2種類ある。

 まず、メールの送信者や件名を見ただけで明らかに誤分類と判別できる場合は、「履歴」タブのメール一覧画面から設定する。ここでは、各メールに対して再分類のためのプルダウンメニューが用意されており、ここからバケツ名を指定できる。バケツ名を指定し終わってから「再分類」ボタンを押せば、複数のメールを一括して学習させることができる。

 次に、件名や送信元からだけでは分類を判断できないメールについては、メールのヘッダ情報と全文を表示する「シングルメッセージビュー」を活用するとよい。「シングルメッセージビュー」は、メール一覧画面にあるメールの件名をクリックすることで表示できる。これによって判断できた場合は、再分類先をプルダウンメニューで指定できる。

 POPFileでは、メールに記載される単語の出現頻度をもとにして、メールを各バケツに振り分けている。このため、初期学習のコツとしては、ユーザー側で最初にバケツの評価基準を定めておき、状況によって評価を変えてしまうブレを作らないことが重要だ。評価にブレがある場合は、バケツごとにひも付けられる固有の語句が減ってしまい、分類の精度を下げることになるためである。


メール一覧画面で判断できない場合は、「シングルメッセージビュー」でメールの全文を表示させる。これで内容を詳細に確認して再分類先を選択できる 再学習を行うと受信時と判定が変わるケースが出る。この場合は「シングルメッセージビュー」に「現在のコーパスによる分類」という表記が追加される

初期学習後も誤分類を指摘することで精度が向上

2回目以降はフィルタリングを使ってバケツごとにチェックするのが効率的だ。まず分類不可能な「unclassfied」を真っ先に学習させる
 このように学習させてから再度メールを受信すると、分類の精度が上がっているはずだ。その後もしばらくは、分類不可能な「unclassfied」のメールを受信した場合は、その都度学習させるとともに、誤ったバケツに分類されたメールを見つけたら指摘する、という作業を繰り返すことになる。

 そこで便利なのが、特定のバケツに届いたメールを確認できる「フィルタリング」のプルダウンメニューだ。「履歴」タブの上部に「フィルタリング」という項目があるので、ここからプルダウンメニューで、確認したいバケツの名前を選べばよい。

 例えば、「unclassfied」を選択すると、メールの一覧から「unclassfied」のメールだけを抽出してくれるというわけだ。同じように、「spam」や「work」など各バケツの分類結果も表示して、誤分類がないかどうかを確認し、間違いがあればその都度指摘するようにしたい。

 初期学習では、一覧だけでもすべてのメールに目を通し、特に「spam」と誤分類されてしまっているメールは、確実に再学習させる必要がある。最低でも100通、できれば500通ほど初期学習を行えば、99%以上の確率で正しく判定できるようになるはずだ。また、正しく振り分けられたメールについても、あえて再分類することで、「personal」や「work」など「spam」以外に送られてきたメールアドレスを学習データに反映することができる。


初期学習中は誤分類が出やすいので、各バケツに分類されたメールも一覧に目を通すだけでよいので確認したい 100通程度の学習が終了したら、分類精度を確認して「リセット」ボタンを押してみよう。これによって、学習後の受信メールを対象とした分類精度が表示されるようになる。目安としては、99%の分類精度を目指したい。この画像の状態ならもう少し学習を続けた方が良いだろう

メールソフト側でフォルダに振り分け

メールの件名の冒頭にバケツ名を挿入する。筆者は、「unclassfied」と「spam」のみ変更している。Outlook Expressで使う場合には、件名を変更しないと自動分類が行えない

今後の学習と迷惑メールを受信トレイに入れないために「spam」と「未分類」のフォルダを作成した
 ここからは、Outlook Expressを例に挙げ、迷惑メールが受信フォルダに届かないようにするとともに、POPFileの学習を容易にする方法を解説したい。

 設定方法としてはまず、「POPFile コントロールパネル」の「バケツ」タブから、「spam」と「unclassfied」のバケツに対して「件名の変更」のチェックを入れ、右下の「変更の適用」ボタンを押す。これによりPOPfileは、「spam」と「unclassfied」に該当するメールの件名の冒頭に、それぞれ「[spam]」「[unclassfied]」という文字列を挿入するようになる。

 その後、Outlook Expressのローカルフォルダに「spam」と「未分類」というフォルダを新たに作成。件名に「[spam]」が付いているメールは「spam」フォルダに、「[unclassfied]」が付いているメールは「未分類」フォルダに移動するよう振り分けルールを設定する。

 これによって、(分類漏れがない限り)迷惑メールが受信トレイに届かなくなるとともに、「未分類」フォルダに新着メールがある場合は再学習の対象であることがわかりやすくなる。さらに、迷惑メールのフィルタリングだけでなく、「personal」や「work」などのバケツに振り分けられるメールについても同様に設定すれば、私信用のメールや仕事用のメールなどを分類できる。

 このようにメールソフトで振り分けを行う際には、定期的に「spam」フォルダを確認して、誤分類があれば再学習とメールの移動を行う必要がある(余力があればその他のバケツも確認するとよい)。初期状態ではPOPfileは2日分のメールを保持しているので再分類可能だ。

 なお、Outlook Expressは対応していないが、ヘッダ文字列でメールを振り分けられるメールソフトでは、「バケツ」タブから「X-Text-Classification ヘッダー」にチェックを入れることで、件名にバケツ名を挿入せずにメールを振り分けることも可能だ。

 「X-Text-Classification ヘッダー」は、POPFileが振り分けたバケツ名をメールのヘッダに追加する。例えば、「spam」のバケツに振り分けられたメールのヘッダは、「X-Text-Classification: spam」となる。

 かなり駆け足の説明になったが、ベイジアンフィルタを活用したPOPFileを使うことで、ほとんどの迷惑メールを受信フォルダから追い出すことができるだろう。


件名に「[spam]」の文字列がある場合は「spam」フォルダに移動するというメッセージルールを作成する。「unclassfied」についても同様にルール設定しておく これで受信時に迷惑メールは「spam」フォルダに入る。未分類メールを受信した場合は、すぐ「POPFile コントロールパネル」から再学習するようにしたい


2008/09/03 15:11
小林哲雄
中学合格で気を許して「マイコン」にのめりこんだのが人生の転機となり早ン十年のパソコン専業ライター。主にハードウェア全般が守備範囲だが、インターネットもWindows 3.1と黎明期から使っており、最近は「身近なセキュリティ」をテーマのひとつとしている。

- ページの先頭へ-

INTERNET Watch ホームページ
Copyright (c) 2008 Impress Watch Corporation, an Impress Group company. All rights reserved.