Serene Bachでコメントスパムを弾く

削除するのも面倒になったのでコメントスパム対策を行いました。
使用したのはコンピュータ関連の備忘録さんのIPスパムフィルター
1段階目で送信元のIPを調べ国外のものを弾き(国外でも許可アドレスを設定可能)、2段階目で通信経路を調べて国内サーバを利用したスパムを排除。
SBで利用する場合、この段階の前にメールアドレスやキーワードの登録でIPチェックをするかしないかの振り分けが可能です。

Index | クリックで該当箇所の解説へジャンプします

手順1:ダウンロード
こちらの記事の最後の方にダウンロード用のリンクがありますので、落として解凍します。


手順2:パスワードの設定
ipcheckフォルダ内のsettei.cgiをテキストエディタで開き、15行目でパスワードを設定します。
※SereneBachでUTF-8版を使っている場合
文字化けする場合があるので、19行目で$moji = 'UTF-8';と文字コードを指定し、settei.cgi自体もUTF-8で保存しなおします。


手順3:アップロード
IP_Base.pm:libフォルダ内にアップ。パーミッションは755。
ipcheckフォルダ:sb.cgiと同じ場所にアップ。パーミッションは755。
ipcheckフォルダ内のファイルのパーミッションも変更します。
list.cgiとsettei.cgiは755、その他のcgiは666に設定します。
ファイル設置例はこんな感じ。
太文字がアップロードするファイルで、()の数字がパーミッションです。
sb/
├sb.cgi
ipcheck/ (755)
│ ├settei.cgi (755)
│ ├list.cgi (755)
│ └その他のcgiファイル (666)
├lib/
│ ├resource/
│ ├sb/
│ │└Receipt.pm(手順4で書き換え)
│ ├XML/
│ ├IP_Base.pm (755)
│ ├mimeutil.pl
│ └sb.pm

手順4:lib/sb/Receipt.pmを書き換える
libフォルダの内のsbフォルダに入っているReceipt.pmをテキストエディタで開き46行目の後ろに、use IP_Base;と追記します。
Receipt.pmのバックアップを忘れずに!
use sb::App ();
@ISA = qw( sb::App );
use IP_Base;

手順5:コメント・トラックバックスパムを弾く設定
ここでは直接スパムを弾く設定のみを紹介しています。 承認待ちにして保存する方法については本家エントリ後半の「■ コメントスパム対策」と「■ トラックバックスパム対策」の各設定をご参考下さい。
コンピュータ関連の備忘録 | IPスパムフィルターをSerene Bachで使う方法!


◆EUC-JP版でコメントスパムを直接拒否する場合
書き換える場所はReceipt.pmの207行目付近。
▼書き換え前のデフォルトの状態


▼コメントスパムを直接拒否するように設定したもの

◆UTF-8版でコメントスパムを直接拒否する場合
書き換える場所はReceipt.pmの207行目付近。
▼書き換え前のデフォルトの状態


▼コメントスパムを直接拒否するように設定し、さらにUTF-8版用に書き換えたもの

設定が終われば終了です。SBの再構築は不要です。
必ず自分でコメントのテスト投稿をすることを忘れずに!


■Tips1:海外の友人や訪問者がいる場合
海外在住の友人がいたり、国外の方とのコミュニケーションが想定される場合、メールアドレス欄を利用した振り分けが可能です。
◆メールアドレス登録型
あらかじめ友人のメールアドレスが分かっている場合は、settei.cgiにアクセスしてコメントをメアドで許可の設定から、メールアドレスを追加しておきます。
こうすると、コメントを投稿時にメルアドで判別して、登録されていればIPチェックを行わずに受付けてくれますので、日本語入力が出来ない友人でも大丈夫です。
◆キーワード登録型
settei.cgiでコメントをメアドで許可の設定から、メールアドレスの代わりに任意のキーワードを登録しておきます。
そしてコメントフォームで「海外在住の方はメルアド欄に●●と記入して下さい」と案内文を追加しておきましょう。
メルアド欄に登録してあるキーワードを記入してもらうことで、IPチェックを行わずコメントを受付けるようになります。
訪問者が日本語が打てると限らない場合は、半角英数のキーワードでも。


■Tips2:弾いた時のメッセージを変更する
コメントスパム認定した弾いた時に表示されるメッセージを変更したい場合。本当にスパムだけなら不要ですが、うっかり友人知人が弾かれかねない時に、メルアドやキーワードを入力してもらうようお願いするメッセージを出すことができます。
lib/sb/language/ja.pmの280行目を変更。

$self->string('error_no_comment' =>'コメント内容がありません');

例えばキーワード設定をしている場合はこんな風に。
$self->string('error_no_comment' =>'スパムチェック中のため、メルアド欄に●●と記入して投稿して下さい');

■Tips3:テストする時の注意
IPチェックの他に、コメントに「連続したひらがな」を含むかどうかで確認していますので、テストをする時に「テスト」などのカタカナや漢字のみの投稿は弾かれる場合があります。
「テスト」や「テストだ」はアウト、「テストです」はセーフ。
テスト投稿は日本語の一般的な文章で試してみて下さいね。


■参考リンクまとめ
配布元
 コンピュータ関連の備忘録
ダウンロード
 コンピュータ関連の備忘録 | IPスパムフィルター
SereneBachでの設置解説
 コンピュータ関連の備忘録 | IPスパムフィルターをSerene Bachで使う方法!
サポートフォーラム
 IPスパムフィルターサポート掲示板

Related Archive