ここのトラックバック用CGIスクリプトとコメント用CGIスクリプトはスパム避けのためにリネームしてある.
トラックバックの方は,さらに数値文字参照に変換してあるので,そこそこいけるかなと思っていましたが,コメント用CGIスクリプトの方は,formタグにactionで指定してあるので,ロボット等で探せばすぐにばれるなと思っていたところ,案の定,2週間程度でまたスパムが来るようになりました.
formの方のnameを変えようかとも思ったのですが,それをすると,Movable Typeの方のスクリプトを何カ所も書き換えないとならない上に,アップデートが面倒になる.
それで,諦めていたのですが,「Open MagicVox.net」の「JavaScriptを使ってスパムによるCGIの過負荷を防ぐ」を見て,ああ,そういう手もあるかと早速採用.
私は,name="comments_form"を全く関係のなさそうな名前にしてMovable Typeのコメントフォームであることを分からなくするという方法を考えていたのですが,上記ページの方法は,HTMLのformタグ上ではaction=""にして,CGIファイルを指定せず,その後ろでJavaScriptを使って
<script>
document.comments_form.action = ["<$MTCGIPath$>", "<$MTCommentScript$>"].join("");
</script>
などとしてCGIファイルを示す方法である.
再度コメントファイルをリネームして,記事のページのテンプレートを手直しして再構築.しばらく様子を見てみたい.
ちなみに,トラックバックURIの数値文字参照に変換はけっこう利いているらしく,いまだスパムは来ていない.コメントよりもトラックバックのスパムの方が多いのだから,なかなかよい対策だったのだと思う.
ついでに,「SpamSubmission」というプラグインを入れました.これは,Movable Typeにデフォルトで入っているSpamLookupで検出したURIと,自分で迷惑コメント/トラックバックにしたURIを,Bulkfeedsに報告するものです.(上述のページ,リンクと普通の文字の区別が全然無かったので(下線もなければ,色の違いもない),しばらくどこからダウンロードするのか分からなかった)
Bulkfeedsで収集しているデータをSpanLookupで利用するには,SpamLookup - Lookupsの設定で,「ドメインのチェック」の方の「ブラックリスト」に「rbl.bulkfeeds.jp」を追加します.
それともういっちょ.「AutoIPBan」というプラグインを導入.これを入れると,迷惑トラックバック/コメントの送信元IPをIPBanListに追加するのが楽になります.また,テンプレートからIPBanListが利用できるようになるので,.htaccessをMovable Typeで構築することで,拒否するIPを列記することができるようになります.ただ,上述のサイトのサンプルでは,私の環境では改行が入らなかったので,
<MTIPBanList>
deny from <$MTIPBanListIP$>
</MTIPBanList>
のように,空行を1行入れました.