Movable Type の対スパムプラグインである SpamLookup の能力には特に不満はないのだが、 最近の異常なスパム増加によってコメント番号がやたら増加してしまうことと、 SpamSubmission を導入したためにスパム URI 報告によって管理ログが埋め尽くされてしまうということが非常に気になるため、 スパムをそもそも Movable Type で処理せずに Apache で直接弾いてしまおうと考えたわけだが。 現状ではコメントスパムは DNSBL で niku.2ch.net と all.rbl.jp を使うことでほとんどブロックできていて、 残りはリンク数制限とキーワード制限を設けることで99%のスパムをブロックできている。 DNSBL として他にホスト制限に bsb.spamlookup.net と URI 制限に rbl.bulkfeeds.jp を利用しているがそれほどスコアは高くない。 残り1%はランダム文字列 + 1 URI での投稿のため対策としては見つけ次第削除しかないが数が少ないので問題はない。
そもそも Apache でコメントスパムの前処理を行うとなると使える情報は限られてくるわけで、 当然キーワード制限や URI 制限などの方法は使えなくなる。 そういうわけで現実的な方法としてApache で DNSBL を何とか使えるようにして制限をかけるという方法をとることにしてた。
いろいろ調べてみたところ Apache に DNSBL 機能を追加するモジュールはすでに2つ存在していた。
前者の mod_access_rbl は標準モジュールである mod_access にパッチを当てて Allow、Deny ディレクティブを DNSBL に対応させるというやり方をとっている。 この方法は Apache の設定ファイルが一番綺麗になるやり方なのだが いかんせんもとのパッチが 1.3 時代のものなうえに 2.0 用のパッチは C言語書けない人が書いたとかでどうにも信用ならない。 そもそも標準モジュールを取り替えるわけだからバージョンアップ時にひと悶着ありそうで怖いからパス。
後者は単独のモジュールで作りこまれて入るようだが make が通らない。 終了。
以上によって導き出された結論がモジュール自作なわけだが。
mod_setenvif.c をベースにして DNSBL リクエストの結果を環境変数に設定するように改造した。 環境変数を使うことでこのモジュール自体にはアクセス拒否の機能はなくなったが、 そうすることでむしろ拒否の方法が拡がった。 単純に deny するほかには mod_rewrite でリダイレクトしたりとか 410 Gone を返したりだとか。
とりあえずこいつのおかげでブログの管理画面からうざいコメントスパムが減ったのはうれしい。 最近では毎日100件以上だったのコメントが20件まで減った。 ブログに現れない分 httpd-error.log に吸収されているのだが目に付きづらくなっただけマシだな。 SpamSubmission がよく500エラーを出してログをより食いつぶしていたことも考えると かなりの改善にはなったはずだ。
はじめまして
「コメントスパム RBL」で Google検索してここに来ました。
弊社でもコメントスパムRBLサービスを提供していますので、お使いいただければ幸いです。
http://wiki.takanashi-it-factory.com/index.php?%A5%B9%A5%D1%A5%E0%C2%E4%A4%E1%A4%B7