POPFileでMailを学習させてみる
Tigerの頃から迷惑メールフィルタにはPOPFileを使って来た。Mailのフィルタは思ったほど機能してくれなかったから。POPFileはいったん学習してしまうと、ほぼ100 %(現在99.26 %)の精度で分類してくれる。POPFileでX-Text-Classification ヘッダーをspamにして、Mailのフィルタを学習させてしばらく経つと、相性よくフィルタリングしてくれていた。
ところが、Leopardにしたとたん、Mailのフィルタがバカになって、POPFileのX-Text-Classification ヘッダーも無視して、迷惑メールフォルダに好き勝手にメッセージを放り込み始めた。最初は迷惑メールフォルダに入れられたことすら気付かなかったので、危うく削除されかかっていたメッセージもあった。それから少しの間は自分でシコシコMailに学習させていたけれど、なかなか思うように学んでくれない。
労力もバカバカしいので、Mailのフィルタには頼らないことにした。けれども、せっかくMailに備わっている迷惑メールフィルタから学習の権利を奪うのもかわいそうなので、POPFileの学習した成果を時間をかけて教えられないかと考えた。
まず、MailにはPOPFileのX-Text-Classification ヘッダーに忠実に従うように言いつける。この学習は天下り的だ。Mailの環境設定の「迷惑メール」タブで図のように設定する。
次に「詳細...」をクリックする。現れたパネルでさらに図のように設定する。ヘッダーの登録は以前にしてあったので、ここは見ないでスルー。「カラー設定」はおそらくWEBセーフのCC9966でいいと思う。
で、最後が肝心のAppleScript。迷惑メールにする「動作」が用意されていないので、AppleScriptからすることになる。/Library/Scripts/Mail Scripts/Rule Actions/にある「Sample Rule Action Script.scpt」というサンプルスクリプトとMailの用語説明を開いて、それらを参考にAppleScriptの文法を思い出しながらちゃかちゃか試してみる。最後に、サンプルスクリプトにあるルール用のハンドルを指定して、適当な場所に保存した。スクリプトはこんな感じ。
using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
tell application "Mail"
repeat with eachMessage in theMessages
set junk mail status of eachMessage to true
end repeat
end tell
end perform mail action with messages
end using terms from
保存したスクリプトのファイルをさっきのパネルで指定すれば、あとは迷惑メールが来てくれるのを待つだけだ。今のところは動作は順調。これでちゃんとMailが学習してくれれば言うことないけど、悪さをしないならそれだけでも十分。
| 固定リンク | 0
コメント