AkismetはWordPressで標準でインストールされるスパム対策のプラグインです。DrupalでもAkismetサービスを使えるようにするためのモジュールがありますのでこれを導入します。
Akismetモジュールのインストール
まず、Akismetモジュールをダウンロードしていつものようにインストールします。Akismetモジュール
http://drupal.org/project/akismet
ただし上記サイトのAkismetモジュールは現在はアクティブに管理保守されていないのと、上記サイトで入手できる最新のDrupal 6.x用開発バージョンは5.x用からの移植が完了していないこともあって正しく動作しません。サイトにはこれらの問題を個々に修正するパッチもいくつかでていますがこれをすべて導入してもまだうまく動作しない部分があります。
Akismetモジュールをベースに拡張をおこなったAntiSpamモジュールを公開することにしました。詳しくは次のページを参照してください。
AntiSpamモジュール (@ Drupal.org)
http://drupal.org/project/antispam
AntiSpamモジュールの日本語解説ページ
http://www.pixture.com/drupal/ja/node/73
Akismet用のAPIキーの入手
AkismetのAPIキーはWordpress.comに登録することで無料で入手することができます。Wordpress.comに登録すると、Wordpress.comに自分のブログページとメールアドレスを入手することもできますがこれは使っても使わなくてもOKです。登録完了後にWordpress.comから送られてくるメールにAkismetのAPIキーが記載されていますのでこれを使います。
WordPress.comの登録ページ
http://wordpress.com/signup/
商用利用や自サイトからの収入が$500以上ある場合には商用キーを入手する必要があります。これはAkismetのサイトからおこなえます。
Akismet commercial use API key
http://akismet.com/commercial/
Akismetの設定
APIキーを入手したらまず、サイトの環境設定>Akismetページに行き、ここで入手したAPIキーを入力します。
このページでは他にもいろいろと設定が可能ですがデフォルトの設定で利用開始してあとで変更すれば良いでしょう。ただし、一般ユーザや匿名ユーザが投稿記事(ノード)を作成できるようなサイトの場合には、Node Optionsのセクションで、どのタイプのノードについてAkismetによるチェックをおこなうかも指定してください。ビジターの投稿がコメントのみに限られている場合には特にここは変更しなくても大丈夫です。
Akismetをテストする
サイトからログアウトして、匿名ユーザとして何か記事にコメントを送信してみます。この際にわざとスパムな内容の記事を作成して送ってみるとよいでしょう。Akismetがスパムと判断するとデフォルトでは約1分間ウェイトがかかります。つまり1分間はずっと投稿中ということになります。これはスパムボット(スパム自動送信プログラム)がたてつづけに無数のスパムを連続投稿するのを防ぐためです。また、Akismetでスパムと判断されたコメントや投稿は公開されずに承認待ちのキューに入れられます。Akismetではこのキューに入れられてから一定日数が経過した投稿を自動的に削除することもできます。
このウェイトの設定やキューからの自動消去の設定などはすべてAkismetの管理ページでおこないます。
Akismetのメッセージキューを見る
Akismetのメッセージキューは管理ページ>コメントの管理>Akismet moderation queueページで見ることができます。ここでは、スパムと判断されたコメントやノードのリストや統計を見たり、一括で削除したり、誤判断を訂正したりといった各種操作を実行することができます。
またリストのタイトル部にマウスをもっていくとそのメッセージの本文のはじめの部分がツールチップに表示されますので、本当にAkismetの判別が正しいかどうかを判断することが簡単にできるようになっています。
コメントを判別しやすいよう色分けする
Akismetでスパムと判別されたコメントを判別しやすくするためにサイトのテーマファイルをちょっといじる方法を紹介します。完成するとこんな感じになります。
Akismetを有効にすると各コメントの下のリンク部にSubmit spam、Submit hamというリンクが追加されます。スパムと判断されたコメントの下にはSubmit ham、ハム(スパムでないもの)と判断されたコメントの下にはSubmit spamというリンクがつき、Akismetによる誤判断をこのリンクをクリックすることで簡単に訂正することができるようになっています。今回紹介する色分けを使うことでこの作業がさらに直感的にできるようになるのでおすすめです。
この例ではスパムと判別されたコメントを暗い色にして白い×マークをつけています。これを手順を追って説明します。
-
まず使っているテーマファイルのディレクトリにいき、comment.tpl.phpをエディタで開きます。デフォルトではこんな感じになっていると思います。
この先頭部分で各コメント全体のdiv要素をしている部分をこんな感じで修正します。- <?php
- // $Id: comment.tpl.php,v 1.10 2008/01/04 19:24:24 goba Exp $
- ?>
- <div class="clear-block">
- <?php if ($submitted): ?>
- <?php endif; ?>
akismet_content_is_spam()はAkismetモジュールの公開する関数で、ここにコンテンツタイプとコンテンツのIDを渡すとそれがスパムと判断されているかどうかTrue/Falseを返してくれます。- <?php
- // $Id: comment.tpl.php,v 1.10 2008/01/04 19:24:24 goba Exp $
- ?>
- if(akismet_content_is_spam('comment', $commend->cid))
- }
- ?>">
- <div class="clear-block">
- <?php if ($submitted): ?>
- <?php endif; ?>
これにより、Akismetにスパムと判断されたコメントのDIV要素にcomment-spamというクラスが追加されます。
- 使っているテーマのスタイルシートstyle.cssを編集して、comment-spamのクラスのDIV要素の背景色を指定したり後ろに張り込む画像を指定します。
以上で完成です。なお、スパムと判断されたコメントは非掲載になっていますので、この例のように色分けしたスパムコメントを見ることができるのはサイト管理者のみです。

