コメントスパム送信者にコメントをさせないようにするプラグイン

Blogが一般化するにつれて、コメントでスパムを送信する輩も増えました。
最近では、「Blogを自動巡回しつつ、コメントスパムをまきちらすプログラム」もあるようです。
当Blogも、一日に300件近いコメントスパムが送信されたことがありました。

そこで、「コメントスパム送信者にコメントをさせないようにする」というプラグインを作ってみました。

1.動作について

Movable Type 3.2ではスパム対策機能が強化されていて、スパム対策プラグインをインストールして適切に設定することで、スパムを受信しても「迷惑」の扱いにすることができます。
上にあげた「300件ものコメントスパム」も、拙作の「日本語でないスパムをフィルタするプラグイン」によってすべて迷惑扱いになり、表に公開されることはありませんでした。

ただ、コメントを受信してからスパムかどうかを判断するので、状況によっては迷惑扱いのコメントがかなり増えます。
これは精神衛生上あまり好ましくないです。
また、コメントスパマーがBlogに接続してコメントしてくるので、それによってサーバーに無駄な負荷をかけられることにもなります。

そこで、このプラグインでは、「コメントスパマーにBlogを見せない」という手法を取ります。
IPアドレスでアクセス制限をかけて、そのIPアドレスからBlogにアクセスしても、エラーを返してBlogを見せないようにします。
これによって、コメントスパムが投稿されること自体を防ぎ、コメントスパムを減らすことができます。
また、スパムが投稿されてサーバーに負荷がかかることを防ぐこともできます。

ただし、MT3.2以降専用のプラグインになっています。
また、アクセス制限の処理はPHPで行いますので、BlogをPHP化していることが必要になります。

2.インストール

まず、以下のリンクをクリックして、プラグインのファイルをダウンロードしてください。

KnockoutSpammer_100.zip

プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。

また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。

Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。

ファイルを解凍すると、「KnockoutSpammer」というフォルダができます。そのフォルダを、Movable Typeの「plugins」ディレクトリに丸ごとアップロードします(「plugins」ディレクトリの中に、「KnockoutSpammer」ディレクトリができるようにします)。
そして、「KnockoutSpammer」ディレクトリの中の「mt-knockout-spammer.cgi」のパーミッションを変え、実行可能に設定します(通常は「705」や「755」)。

なお、ファイルの文字コードはutf-8にしてあります。
Movable Typeの文字コードをutf-8以外にしている方は、その文字コードに変えてアップロードしてください。

3.テンプレートの設定

インデックステンプレートを1つ新規作成し、以下のように設定します。

・テンプレート名 → KnockoutSpammer
・出力ファイル名 → knockoutspammer.php
・「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」のチェックはオフにする
・テンプレートの内容は以下の通り

<$MTKnockoutSpammer$>

また、コメントスパマーに見せたくないページのテンプレート(エントリーアーカイブテンプレートなど)の先頭に、以下の1行を追加します。

<?php include('<$MTBlogSitePath$>knockoutspammer.php'); ?>

そして、ここまでで設定したテンプレートを再構築します。

4.禁止IPアドレスの登録(手動)

Movable Typeには「禁止IPアドレス」を設定する機能がありますが、これを使ってアクセスを禁止したいIPアドレスを登録します。
登録は、手動で行う方法と、プラグインで一括して行う方法があります。

手動で行う場合、Movable Typeの設定ファイル(mt-config.cgi)に、以下の行を追加します。

ShowIPInformation 1

すると、Blogの設定のページに「禁止IPアドレス」のタブが追加されます。
ページの右上の方にある「アドレスを新規登録」のリンクをクリックすると、禁止IPアドレスを登録することができます。

↓手動で禁止IPアドレスを登録する
禁止IPアドレスの登録

5.禁止IPアドレスの登録(一括)

コメントスパムの送信元IPアドレスを、一括して禁止IPアドレスに登録することもできます。

Blogの設定のページを開き、「プラグイン」のタブをクリックすると、プラグイン一覧に「Knockout Spammer」が出ます。
その部分の「設定を表示」のリンクをクリックすると、「迷惑コメントの送信元IPアドレスを禁止IPアドレスのリストに追加する」のリンクが表示されます。
これをクリックすると、「迷惑コメント」になっているコメント(通常はコメントスパム)の送信元のIPアドレスを、一括して禁止IPアドレスのリストに登録します。

↓「迷惑コメントの送信元IPアドレスを禁止IPアドレスのリストに追加する」のリンクをクリックする
「迷惑コメントの送信元IPアドレスを禁止IPアドレスのリストに追加する」のリンクをクリックする

また、「迷惑トラックバックの送信元IPアドレスを禁止IPアドレスのリストに追加する」をクリックすると、迷惑トラックバックの送信元のIPアドレスを一括登録することもできます。

6.KnockoutSpammerテンプレートの再構築

上記の4または5の手順で禁止IPアドレスを追加したら、そのたびに3.の手順で作ったKnockoutSpammerテンプレートを再構築します。

7.コメント関係のテンプレートをPHP化している場合

以前に「コメント/検索関連テンプレートのPHP化」というカスタマイズを紹介しました。
このカスタマイズを行うと、コメント元のIPアドレスが、自分のサーバーのIPアドレスになってしまいます。

そこで、上記のカスタマイズを行っている方は、以下の作業も行ってください。

・mt-phpincgi.phpの差し替え
以下のページに接続し、表示されたソースをコピーして「mt-phpincgi.php」のファイル名で保存して、既存の「mt-phpincgi.php」と差し替えてください。

mt-phpincgi.phpのソース

・SetIPプラグインの登録
以下のページに接続し、表示されたソースをコピーして「SetIP.pl」のファイル名で保存して、Movable Typeの「plugins」ディレクトリにアップロードしてください。

SetIP.plのソース