MovableTypeのトラックバックスパム対策としてはUserAgentベースの方法が効果的だったので同じようにWordPressでもスパムフィルタをしてみることにします。また同じ時に検討してみたIPアドレスベースの拒否方法は共有サーバからのアクセスも拒否してしまうのが問題なので使うのがためらわれます。
WordPressにはAkismetという優秀なスパムフィルタが標準で実装されており、ほとんどのスパムを検出してくれますが、やはりSPAMなぞは届く前に拒否してしまいたいものです。また確かにAkismetは有効なのですが、正常なトラックバックやコメントもスパムと判定してしまうことがあるようですので、一括削除前に一度チェックした方が良さそうです。 そのためにも元から入ってくるスパムは少ない方がありがたい。
本家のプラグインディレクトリには多くのスパム対策プラグインが紹介されています。
しかし今のところWordPressのログを見る限りMovableTypeと同じようなスパムソフトがばら撒いているようなので、プラグインを入れなくてもスパマーのUserAgentを.htaccessで拒否すれば多くのスパムをカットできそうです。
このやり方の利点は、意外に効果が大きいこと、サーバへの負荷が少ないこと、ブログソフトまで届かないのですっきりというところです。 欠点はコメントスパムには余り効果がないこと。
WordPressのトップディレクトリにある.htaccess
SetEnvIf User-Agent "^.$" trackbackSpammer
SetEnvIf User-Agent "^libghttp/1.0" trackbackSpammer
SetEnvIf User-Agent "^TrackBack/1.02" trackbackSpammer
SetEnvIf User-Agent "^TrackBack/1.6" trackbackSpammer
SetEnvIf User-Agent "^NP_Trackback/2.0.3$" trackbackSpammer
SetEnvIf User-Agent "^User-Agent" trackbackSpammer
SetEnvIf User-Agent "^USERAGENT" trackbackSpammer
#SetEnvIf User-Agent "^Nutscrape/1.0" trackbackSpammer
SetEnvIf User-Agent "^MovableType/3.14" trackbackSpammer
SetEnvIf User-Agent "^Opera/" trackbackSpammer2
SetEnvIf User-Agent "^Mozilla/" trackbackSpammer2
<Limit POST>
Order Allow,Deny
allow from all
deny from env=trackbackSpammer
</Limit>
# BEGIN WordPress
...
#2007/6/20 tb_sendとNutscrape追加。ただしNutscrapeはsquidらしいので微妙。
#2007/8/4 NP_Trackbackの文字列を限定的に修正
#2007/11/7 MovableType/3.14を騙るものも追加
拒否するUserAgentはMovableTypeの時と同じですが、POSTを全部引っ掛けているのでMozillaとOperaなどのブラウザ騙り系を拒否すると、まともなコメントも引っかかってしまってまずいので、拒否しないようにしておきます。 また怪しいUAからのPOSTを全面禁止することになりますが、まあ良いかなあ、という感じです。
WordPressはシステム側では.htaccessの'# BEGIN WordPress'~'# END WordPress'の間だけを更新する仕様で、それ以外の部分は手修正しても問題がなく調整が楽です。
当面UserAgentのフィルタとAkismetでほとんどのものが拒否できそうです。IPアドレスベースの拒否は前述の理由でしばらくは行わないことにします。
まだ運用を始めたばかりの別ブログに適用したので、これからここをつついてみる予定。
#はてなのブックマークにコメントを頂いているのですが(こういうコメントのやり方もあるんですね...)
一日100-200程度の少ないアクセスのブログで試している途中経過を報告します。
2007/6/20
.htaccess設置3日目。私のところに来るスパムのはほとんどはTrackback/1.6で、Akismetまで届くスパムがなくなってしまいました。マイナーなブログなせいもあるのでしょうけど。。。
特別なプラグインを入れなくてもそれなりに効果はあるといってよいようです。