UNIX 系 OS にて稼働する迷惑メールフィルタ (spam フィルタ)*1。
メールのヘッダと本文をみて、spam か否かを判定する。ベイジアンフィルタ(学習機能)も付いている。
procmail や maildrop などと組み合わせて、届いたメールを spam とそれ以外のメールとに振り分ける。
SpamAssassin は、
の機能を含む、 perl のスクリプトよりなるフィルタソフトウェアである。
標準入力或はファイルからメールを読み込み、上記機能を用いてスコアリング(点数の付与)を行い、合計点数と閾値とを比較して、 spam か、 ham (SpamAssassin では、通常のメールのことをこう呼ぶ) かを判定する。
すなわち、メールの特徴を多角的な視点で捉え、「spam らしさ」を点数として累積加算して判定する。これが、 SpamAssassin の、他の単機能の spam フィルタとは大きく異なる特徴である。
更に、複数のルールを論理演算記号と共に列挙して、それら列挙されたルールが「真」となったときに点数を加算する「meta ルール」を作成することもできる。meta ルールは工夫次第で spam 判定をより厳格にすることができる。
判定結果は、 ham であればメールのヘッダに埋め込み、 spam であればメール全体を MIME カプセリング化して、スコアと判定結果を添付する*2。
SpamAssassin はあくまで標準入力を読み込み結果を標準出力に出力するフィルタでしかないので、メールの振り分けは procmail 等の MDA (Mail Delivery Agent) に委ねる必要がある。
procmail にもフィルタリングの機能はあるが、 procmail と比べると、極めて多機能で、文法が理解しやすく簡単であり、デバッグ出力も充実しているので、複雑なルールを書くことも容易に出来る。また、 procmail とは異なり、 MDA の機能を備えていないので、システム稼働中でもルールの作成及びデバッグが気軽にできる。
しかし、ベイジアンフィルタが日本語に対応していない*3ので、日本語 spam には今一つ弱い面がある。
なお、非公式ながらベイジアンフィルタを日本語対応化する等のパッチが有志によって開発されている。