明かされるスパムメール判定率の実情スパム対策最前線(2/3 ページ)

» 2006年03月30日 11時00分 公開
[大澤文孝,ITmedia]

受信メールはProcmailを使って受け渡す

 図1や前述のように、SpamAssassinの仕組みは単純だ。標準入力を介して判定したいメールを入力させると、その判定結果が標準出力に帰ってくる。

 このため、どのようにSpamAssassinを起動させるかは特に規定されておらず、メールサーバ上の実装に委ねられる。ただしほとんどの場合、「Procmail」と呼ばれるメールを振り分けるためのツール(オープンソース)を併用することが多い(関連記事)

 一般的に多くのUNIXサーバ環境では、ユーザーのホームディレクトリ直下に「.forward」というファイルを配置すると、すべてのメールに対してファイル内に記述した指定方法を適用できる。この仕組みを利用すれば、特定のプログラムにメール内容を丸ごと引き継ぐことができるのだ。具体的には、.forwardファイルとして、次の内容のファイルを記述すると、Procmailへと渡される指定になる。

"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #ユーザー名"


 Procmailは、ユーザーのホームディレクトリにある.procmailrcファイル内容を参照して、振り分け処理を行う。.procmailrcファイルの内容で、SpamAssassinを起動させてスパムを振り分けるようにするのだ。すでに説明したように、SpamAssassinは、スパムを判定し、表1に示した3つのヘッダを書き込む。

 スパムと判定された場合には、

X-Spam-Status: Yes


とメールヘッダが付加されるため、スパムメールの仕分けができるという仕掛けだ。SpamAssassinはあくまでもスパム判定のみを行うツールである。そこで例えば、次のような.procmailrcファイルを配置する例を挙げてみよう。

:0fw

*!^X-Spam.*

|/usr/bin/spamassassin

:0:

* ^X-Spam-Status: Yes

spam/


 上記の指定は、次のような意味だ。

1. X-Spamのメールヘッダが含まれていない場合に限り、SpamAssassinを起動させる。「!^X-Spam.*」の最初と最後の文字列は正規表現の一種だ。正規表現自体の解説はここでは割合するが、簡単に言えば文字パターンを判別するための条件指定だと考えればよいだろう。

2. X-Spam-Statusのメールヘッダが「Yes」の場合には、ユーザーディレクトリ直下のspamディレクトリへメールを移動させる指定だ(この場合「spam」ディレクトリをあらかじめ用意しておく)。「^X-Spam-Status: Yes」という条件を指定することで、SpamAssassinの実行の結果、「X-Spam-StatusがYesであった」――すなわち、スパムと判定されたときには、spamフォルダへと移動するという処理をしている。

 この.procmailrcファイルは一例であり、特に「2.」の場合は、環境によってディレクトリ名を変更するなどの処理が必要だろう。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ