スパムメール対策(for Linux)
ここ数ヶ月、ますます多くなってきたスパムメール。普段は、そんなにスパムの量が多くなかったので procmail でフィルタをかけてスパムが届いた瞬間に条件式にあったメールをごみ箱送り(/dev/null)にしていたのだが、量が多くなるにつれてわざわざ.procmailrc を編集するのすら面倒になってきた。現状では、1日に5~6通のスパムメールが届き、さほど気になるレベルではないが、これが一ヶ月も続くとこまめに整理していかないとスパムメールと重要なメールが入り交ざり、画面が煩雑してくる。スパムを削除しようとして重要なメールを削除してしまわないとも限らない。そこで、スパムメールごときに手を煩わすのさえおこがましくなってきたので、対策を講じてみることにした。
使用するソフトウェアは、多くの企業も利用しており、近年、認知度も高まってきた SpamAssassin というソフトウェアだ。どのような役割を果たすのかといえば、受信したメールに対してフィルターをかけ、スパムメールであるか、通常メールであるかを判定してくれる。この判定の確立は95%~99%の確立で正常に判定することができる。ごく稀に誤判定があるようだが、それにはそれなりの理由があったりして、設定の誤りがない限りは誤判定をすることはないと考えてもよさそうだ。さらに、SpamAssassin とprocmail を連携させることで、スパムと判定されたメールだけを「spam」ディレクトリへ格納(振り分け)することもできる。こうすればspam ディレクトリに自動振り分けされたメールを一斉消去するだけで済み、スパムメールを逐一整理する煩わしさからは解放される。
SpamAssassin がもっとすごいのは予習・復習機能があるということだ。予めスパムメールのパターンを学習させることでスパム判定の精度を高められる。既に持っているスパムメールをフィルターにかけ、「これはスパムだよ」と学習させる。仮に誤判定してしまったメールがあったとしても、「これはスパムじゃないよ」と再学習させることもできる。勿論、こんなことを手動でやっていたのでは本末転倒なので、「Spamディレクトリに格納されているメールは全てSpam である」というシェルスクリプトを作成し、それをcron に登録して1日に1回実行させる。そして、通常のディレクトリにあるメールは「これは通常メールだよ」と教え込ませる。こうすることで誤判定をする確立はどんどん減り、スパムをスパムであると検出する確立は徐々に多くなる。
SpamAssassinはメールのヘッダーにX-Spam-Status やX-Spam-Level を付加するのでその判定結果を元にprocmailで振り分けてあげればよい。X-Spam-Level で振り分けても良いだろう。人によってスパムの概念は違う。見もしないメールマガジンをスパムと取る人も中にはいるだろう。そういうのも全てuser_prefs ファイルで個別に設定を行うことができるので非常に便利である。その他にも絶対にSpam 判定されたくない友達や自分の働いている会社のアドレスやドメインに対しては、whitelist_from のオプションも用意されており、ここにアドレスを列挙しておけばよい。逆に、スパムではないが受信したくないアドレスに対してはblacklist_from を設定しておけば自動的にspam ディレクトリに振り分けられる。
その他の利点として別ソフトウェアの紹介になるが、SpamAssassin と連動して機能するRazor2 という共用データベースシステムを利用するとさらに強力なスパムチェックが可能となる。Razor2は、TCPの2703番を使って外部にある共有スパムデータベースに接続しに行き、スパムであるか否の判定を行い、その結果を返してくれる。ローカルにあるベイジアンフィルタと外部にあるスパムDBとで、二重のチェックが可能となるので是非とも推奨したい。但し、外部に接続しに行く分、2~3秒程度のもたつきがあることは否めないだろう。
以上、長々と説明してきたが実績のあるソフトウェアなので信頼性は高い。これからはSpamメールにうっとうしさを感じることもなくなるのでとても気分がいい。アドレスを知られないようにしていてもいつかは知られてしまうのがスパムメールというもの。特にドメインを取得してからというものスパムメールは急増した。こういったソフトウェアを使うことも考えなければいけない最近のインターネットにはいささか疑問を感じる。スパムメールは今後増えることはあっても、減ることは決してないだろう。そういう意味ではこういったアンチスパムソフトウェアに頼るのもひとつの手段かもしれない。まだ2~3日の運用しかしていないが、かなりの手応えを感じるので是非お勧めしたい。