効果的なspamフィルタの設定方法
ツッコミやTrackBackを狙ったspamが増えています。日記を書いている自分では気づいていないかも知れませんが、フィード(RSS)経由で日記を読んでいると、かなりの数のツッコミspamを読まされることになって、読者が迷惑していることが少なくありません。
tDiary 2.2からは標準でspamフィルタが付属していますが、適切な設定をしないとspamを撃退することができません。読者のためにも、きちんとspamフィルタを設定しましょう。
この記事では、最低限の設定で効果的にspamを撃退できるフィルタの設定方法をお教えします。
メール欄をトラップにする「hide-mail-fieldプラグイン」
のっけから標準のspamフィルタでない機能ですが、最近のspamには非常に効果がある方法です。この手法では、「人間には見えないがspamボット1には見える」というトラップ(罠)用のフィールドを用意して、そこにおびき出します。うまいトラップを用意できれば、かなりの割合のspamを撃退できます。
tDiaryのツッコミフォームには、名前、E-mail、本文のフィールドがありますが、このうちE-mail欄は必須ではありません。E-mail欄を人間には見えないようにすることで、「E-mailを入力してあるツッコミはspam」という判断をします。
設定は以下の手順で行います:
- 設定ページの「プラグイン選択」(基本カテゴリ)から「hide-mail-field.rb」を選択して有効にします。
- これだけではspamフィルタは有効になりません。続いて「spamフィルタ」(セキュリティカテゴリ)を開きます。
- 「ツッコミのメールアドレスが以下のパターンに当てはまる場合はspamとみなす。正規表現が使えます」の内容に「@」を入力してOKします。
これで、E-mail欄に「@」(メールアドレスに必ず含まれる文字)が入っているツッコミはすべてspamと見なせます。人間がツッコミフォームを見ると、E-mail欄が消えていることがわかります。
また、万が一E-mail欄が消えないブラウザを使っている人のために、ツッコミ欄の注意書きを書き換えておきましょう。設定ページに「メール欄隠し」(セキュリティカテゴリ)が増えているので、そこに「spam対策でE-mail欄は隠してあります。もしE-mail欄が見えていても、何も入力しないで下さい。」のような注意書きを加えておきましょう2。
ツッコミに含まれるURLの数を制限する
ほとんどのツッコミspamは、自サイトへ誘導したり、メールで問合せをしてもらうことが目的です。後者については最初の「E-mail欄トラップ」で捕まえられますが、本文にURLを書き込んでいくタイプについては、別の手法が必要です。
標準のspamフィルタには「ツッコミ中のURLの数」を制限する設定があるので、これを制限しましょう。ここに2〜5程度の数値を設定しておくことで、複数のURLを本文に入れていくspamをはじくことができます。この数値は、あなたの日記の読者の傾向から、正当なツッコミなら何個以下だろう、という経験則で導き出します。
また、HTMLの断片を書き込んでいくspamも多いです。このため、「href=」のようなリンクを生成するHTMLに必ず含まれるような文字列をキーにしてspam判定をするのも得策です。「ツッコミ本文が以下のパターンに当てはまる場合はspamとみなす。」の設定に「href=」を入力しておくと効果的です。
リンクのないTrackBackをはじく
TrackBack機能を有効にしている人も多いでしょう。TrackBackは自動的に相互リンクを生成することに使われるのが一般的ですが、TrackBack spamでは、TrackBackを受け付ける側へのリンクを張らず、一方的に逆リンクを生成しようとするものがほとんどです。
そこで、TrackBackを受信したら、送付元の内容を調べて、自分のサイトへのリンクがなければspamとみなすフィルタが装備されています。以下のように設定します:
- 設定ページから「spamフィルタ」(セキュリティカテゴリ)を選択します。
- 「内容によるフィルタ」の一番最後に「TrackBack送信元の」……という項目があります。ここを「中に自サイトへのリンクがあれば受信する」にしてOKします。
これで設定は完了です。TrackBack spamのほとんどはこれで撃退できるでしょう。
最後の砦「Akismet」などの学習型フィルタ
上記3つの設定で、ほぼspamを撃退できます3。この上でさらにフィルタをかけるのであれば、学習型のフィルタを併用するとよいでしょう。
Akismet spamフィルタ
Akismetというオンラインspamフィルタサービスを利用するプラグインです。プラグイン選択にて有効にすると、設定可能になります。詳しくはヘルプを参照してください。
Bayesフィルタ
Akismetのようなオンラインサービスではなく、自分で学習させるタイプのフィルタもあります。ベイジアンというアルゴリズムを使ったBayesフィルタが、contribパッケージに含まれています。詳しくは作者のサイトを参考にしてください。