spamassassinでスパムサイト判定

最近アフィリエイトやスパムに関して白熱した議論が戦わされてますが、
スパムサイトの判定にもspamassassin使えるんじゃないかなーとかふと思いついたので書いてみました。

<?php
$url = 'http://www.example.com';
$content = file_get_contents($url);

$spamassassin = '/usr/local/bin/spamassassin';
# テキトーにメールヘッダ作る(これで良いかはちょっと自信なし)
$dummy_mail = 'Received: from www.example.com (localhost [127.0.0.1])
        by www.example.com (8.13.6/8.13.6) with ESMTP id l4934JHDw33
        (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO)
        for <mail@example.com>; Sun, 30 Dec 2007 12:00:05 +0900 (JST)
        (envelope-from mail@example.com)
Date: Sun, 30 Dec 2007 12:00:03 +0900 (JST)
From: mail@example.com
To: mail@example.com
Subject: no title

' . $content;

$dummy_mail = escapeshellarg($dummy_mail);
$command = "echo $dummy_mail | $spamassassin";

ob_start();
passthru($command);
$ret = ob_get_clean();

$reg = '/X-Spam-Level:(.+?)X-Spam-Status:(.+?), score=(.+?)required=(.+?)tests/s';

if (!preg_match($reg, $ret, $matches)) {
    die('invalid header');
}

echo "
<html>
  <body>
    <h2>${url}の判定結果</h2>
    <table>
      <tr><td>Spam-Level</td><td>:</td><td>$matches[1]</td></tr>
      <tr><td>Spam-Status</td><td>:</td><td>$matches[2]</td></tr>
      <tr><td>score</td><td>:</td><td>$matches[3]</td></tr>
      <tr><td>required</td><td>:</td><td>$matches[4]</td></tr>
    </table>
  </body>
</html>";

試しにYourAVHostでやってみたら結果は以下のとおりになりました。(※別にYourAVHostがスパムだというわけじゃないです。エロだし広告もあるしでサンプルとして適当かなと思ったからです。ましてや動画探しの途中だったからという理由でもありません。決して。)

http://pulpsite.net/youravhost/の判定結果
Spam-Level	:	****
Spam-Status	:	No
score		:	4.6
required	:	13.0

男のロマン得ろが凝縮されたYourAVHostはスパムとは判定されませんでした。
ただ、今日はじめてspamassasin触ったので、もっと学習させて設定とかきちんとすれば結果は変わってくるのかもしれません。


ちなみにさくらのレンサバに置いて実行してみまたんですが重すぎて使い物にならずでした。。。
携帯用のフィルタリングツールでも作れたらなあと思ったんですが、なかなか難しそうです。