- Date:2008/11/03
- Category:雑記
- Tag:Movable Type,cron,さくらインターネット,トラックバックスパム
ついに本格的なトラックバックスパム対策に乗り出しました。こんな辺境のブログにもスパマーの手は伸びてくるわけですが、MTのスパム判定は優秀で、ほとんどのトラックバックスパムはジャンク判定されます。しかし履歴にはしっかり痕跡が残ってしまうわけで管理画面にログインして、スパムフォルダを開いて削除というのが日課になっています。そもそもスパマーにcgiを叩かれている時点で不快なわけですよ。
じゃあスパマーにcgiを叩かせないようにするにはどうすればよいか?今まで一番効果的だったのが、トラックバックcgiのリネームでした。
参考:トラックバックスパム対策で「mt-tb.cgi」をリネーム
しかし有効期間は約1週間ぐらいで、しばらくするとまたスパムが増えてきます。その度にcgiのリネーム、mt-config.cgiを書き換え、再構築してあげればよいわけですが、これを手動でやるのは面倒くさい。なのでこれらの作業をcronで自動実行しようというのが今回の試みです。
まずMTの自動再構築に必要なmt-rebuildプラグインを入手。(TypeKey認証が必要です) 解凍後mt-rebuild.plをMTのルートディレクトリに配置します。
次にmt-tb.cgiおよびmt-comment.cgiのリネーム、mt-config.cgiを新しいスクリプト名で編集した後に、mt-rebuildプラグインをキックするシェルを作成します。私が作成したコード例(rename.sh)を示します。
注意!mt-config.cgiを書き換えるシェルです。
#!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
### SETTING START ### cd /home/*****/www/ comment=ms-money_c_ trackback=ms-money_t_ ### SETTING END ###
#日付取得 ymd_old=`head -1 mt-rename.tmp` if [ $? -ne 0 ]; then exit 9 fi ymd_new=`date '+%Y%m%d'`
#旧ファイル名 comment_old=$comment$ymd_old.cgi trackback_old=$trackback$ymd_old.cgi
#新ファイル名 comment_new=$comment$ymd_new.cgi trackback_new=$trackback$ymd_new.cgi
#リネーム mv $comment_old $comment_new if [ $? -ne 0 ]; then exit 9 fi mv $trackback_old $trackback_new if [ $? -ne 0 ]; then exit 9 fi sed -i.bak "s/$comment_old/$comment_new/" mt-config.cgi sed -i.bak "s/$trackback_old/$trackback_new/" mt-config.cgi
#リビルド ./mt-rebuild.pl -all
#日付退避 echo $ymd_new > mt-rename.tmp
exit
処理の流れを説明します。まずmt-rename.tmpから前回実行時の日付を取得します。それから当日の日付を取得して、トラックバックとコメントのスクリプト名を以下の通り変更します。
ms-money_c_前回日付.cgi → ms-money_c_当日日付.cgi
ms-money_t_前回日付.cgi → ms-money_t_当日日付.cgi
ちなみにMTのデフォルトスクリプト名は、mt-tb.cgiとmt-comment.cgiです。私の場合デフォルトから変更しているので読み替えてください。次にmt-config.cgiの内容を新しいスクリプト名に書き換えます。その後リビルドプラグインでMTを再構築し、最後に当日日付をmt-rename.tmpに退避して終了です。
このスクリプトをMTルートディレクトリに配置します。さくらの場合、パーミッションを700にすることを忘れずに!後はこのシェルをcronに食べさせてあげればよいだけです。
さくらインターネットの管理画面を開いて、CRONの設定からCRONの設定画面を開きます。さくらの場合は5個までCRONを登録することができるようです。実行コマンド欄にシェルスクリプト名をパス付きで登録します。次に起動周期ですが、私の場合は毎朝4時起動にしました。あまりサーバに負荷をかけるような設定の場合、さくらから削除されることもあるようです。最後に送信ボタンを押下すれば登録完了です。
これで毎朝4時に、CGIリネーム&MT再構築処理が自動的に走るようになりました。後は経過を見守るだけですね。さあ、どうなる!?
関連するエントリ









