# Geeklog Spam-Xプラグイン

(Hendrickson Software Componentsによる同名のEメールスパムフィルタをお探しでここに来られた方は、ここをクリックしてください。)

## 概要

Geeklog Spam-Xプラグインは、Geeklogシステムに対するコメントスパム対策として開発されました。コメントスパムをよく知らない方はコメントスパムマニフェストをご覧ください。

Geeklogでのスパム対策はもっぱらTom Willetが開発したSpam-Xプラグインに頼っています。このプラグインはモジュール構造を採用しており、スパム送信者の最新の手法に対応する必要が生じた場合は、新しいモジュールで機能を拡張できるようになっています。

## スパム検索の対象となるもの

GeeklogとSpam-Xプラグインは次のものを対象とします。

- 投稿される記事
- コメント
- トラックバックとピングバック
- 投稿されるイベント
- 投稿されるリンク
- 「友だちに記事をメールする」機能で添えられる文章
- ユーザプロフィールのページからメールフォーム経由で送信されるEメール
- ユーザのプロフィール

## モジュールの種類

Spam-Xプラグインは、コメントスパム送信者の変化に対して容易に対応できるよう、拡張性を重視して開発されました。検出(Examine)、アクション(Action)、管理(Admin)モジュールの3種類があります。新規モジュールは1個のファイルに収められているので、該当ディレクトリに追加しさえすれば、プラグインの機能を追加できます。

## 検出モジュール

Geeklogには次の検出モジュールが同梱されています。

- スパムリンク検証(SLV: Spam Link Verification)
- パーソナルブラックリスト(Personal Blacklist)
- IPフィルタ(IP Filter)
- URLのIPフィルタ(IP of URL Filter)
- HTTPヘッダフィルタ(HTTP Header Filter)

### スパムリンク検証(SLV: Spam Link Verification)

SLVは集約されたサーバを拠点としたサービスで、Webサイトに投稿されたものを検証し、特定のリンクが異常なほど多く見られる場合にそれを検出します。言い換えれば、スパム送信者が多くのサイトに同一URLを含むスパムを送信し始め、これらのサイトすべてがSLVに報告した場合、SLVシステムはこの傾向をスパムと認識し、該当URLを含む投稿をスパムと判定します。

さらに言い換えると、SLVは、スパム送信者がサイトにスパムを送信し始めたときに、自動的に更新されるブラックリストであると言えます。SLVを使用するサイトが増えれば増えるほど（正確さと反応速度という点では）、ますますその質が高まります。

SLVはRuss Jonesがwww.linksleeve.orgで運営している無料のサービスです。

プライバシーポリシーの表示
SLVを使用しているということは、自分のサイトから第三者のサイトに情報を送信していることになるということを強調しておいた方がよいでしょう。法体系によっては、ユーザにこの事実を告知する必要があるかもしれません。ご自分の地域のプライバシーに関する法律を確認してください。

運用している状況によっては（たとえば、企業のイントラネットなど）、情報を外部のサイトに送信することが望ましくない場合もあるでしょう。その場合は、 `SLV.Examine.class.php`, `SLVbase.class.php`, `SLVreport.Action.class.php`, `SLVwhitelist.Admin.class.php` の4つのファイルをSpam-Xのディレクトリ(`/path/to/geeklog/plugins/spamx`)から削除すれば、SLVを無効にできます。単にSpam-Xプラグインを無効にする（または、アンインストールする）だけでもよいです。

SLV検証モジュールとアクションモジュールは、投稿されたデータからすべてのURLを抽出し、SLVへ送信するだけです(つまり、投稿されたデータのURL以外の部分は送信されません。)。また、自分のGeeklogサイトのURLを含むリンクはすべて除外します。投稿されたデータに外部リンクが含まれていない場合、これらのモジュールはSLVと通信を行いません。

### パーソナルブラックリスト(Personal Blacklist)

パーソナルブラックリストモジュールを使用すると、スパム投稿によく見られるキーワードとURLをブラックリストに追加できます。スパムが投稿されている場合、そのURLをパーソナルブラックリストに追加すれば、送信者が再びスパムを投稿しても締め出すことができます。

上記を行うことにより、既に受信したスパムを削除しやすくなります。データベースから多数のスパム投稿を削除するのに、一括コメント削除と一括トラックバック削除を使用できるようになるからです。

パーソナルブラックリストには、Geeklogのバッドワードリスト(censor list)を読み込み、バッドワードを含むコメントをすべて禁止する機能があります。このようなリストは子ども向けのサイトには有用でしょう。ふさわしくない言葉を含むコメントは投稿できなくなるからです。

### IPフィルタ(IP Filter)

1つないし少数のIPアドレスから送信されるスパムに出くわすこともあります。IPフィルタモジュールに追加することで、これらのIPアドレスから送信されるスパムを自動的にブロックできます。

IPアドレスを1つずつだけでなく、CIDR表記や開始アドレス-終了アドレス という形式で、IPアドレスの範囲を指定することもできます。

IPアドレスが実際にはあまりよい判断基準にはならないということに注意してください。インターネットサービスプロバイダやホスティングサービスの中にはスパムの温床として知られているものもありますが、それらのIPアドレスをブロックしてもあまり役には立たないでしょう。スパム送信者はインターネットへ接続し直すときに新しいIPアドレスを取得するのに対し、ブロックされたIPアドレスは他の罪もないユーザが使用することがよくあるからです。

### URLのIPフィルタ(IP of URL Filter)

このモジュールが役に立つのは少数の特別な場合だけです。ここでは、スパム送信元のドメインを収容しているWebサーバのIPアドレスを入力します。スパム送信者の中には多数のサイトを少数のWebサーバ上で運営しているものがいます。このような場合は、多数のドメイン名ではなくWebサーバのIPアドレスをブラックリストに追加すればよいでしょう。Spam-Xプラグインは、投稿されたデータ中のすべてのURLをチェックし、該当するIPアドレスがないかチェックします。

### HTTPヘッダフィルタ(HTTP Header Filter)

このモジュールを使用すると、ある種のHTTPヘッダを検出することができます。サイトへ送信されるすべてのHTTPリクエストには、訪問者が使用しているWebブラウザや使用言語などの情報を識別するヘッダが付随しています。

HTTPヘッダフィルタモジュールを使用すると、ある種のHTTPリクエストをブロックすることができます。たとえば、スパム送信者の中には、スパムを送信するのにPerlスクリプトを使用しているものがいます。Perlスクリプトが送信するユーザエージェント(ブラウザ識別情報)は "libwww-perl/5.805" (バージョン番号はこれとは違う場合もある)のようなものが多いです。したがって、このユーザエージェントが送信するスパムをブロックするには、次のように入力します。

Header: | `User-Agent`
Content: | `^libwww-perl`

これで "libwww-perl" で始まるユーザエージェントからのスパム投稿はすべてブロックされます。

## アクションモジュール

いったん検出モジュールがスパム投稿を検出すると、アクションモジュールがスパムをどう処理するかを判断します。たいていの場合、スパムを削除するだけでよいですが、これを行うのが削除アクション(Delete Action) モジュールです。

その名前が示すとおり、管理者メールアクション(Mail Admin Action) モジュールはスパムを検出したときに、サイト管理者にメールで通知します。多数の通知メールが送られる可能性があるため、デフォルトでは無効になっています。

アクションモジュールは使用する前に個別に有効にする必要があります(一方、検出モジュールはSpam-Xのディレクトリに放り込むだけで有効になります。)。このため、すべてのアクションモジュールは独自の番号を持っています。有効にしたいすべてのモジュールの番号を足し合わせた数値を、「管理者用メニュー - コンフィギュレーション - Geeklog - ユーザと投稿」の「Spam-X」に入力します。

### 例

削除アクションモジュールの数字は 128、管理者メールアクションモジュールは 8 です。両方のモジュールを有効にするには、128 + 8 = 136 を入力します。

SLV検出モジュールは、他の検出モジュールが捕捉したスパム投稿を確実にSLVに通知しますSLVアクション(SLV Action) モジュールによって補完されています。このモジュールは削除アクションモジュールと連動しているので、削除アクションモジュールを有効にすると、SLVアクションモジュールも有効になります。

## 管理モジュール

パーソナルブラックリスト、IPフィルタ、URLのIPフィルタ、HTTPヘッダフィルタモジュール用の管理モジュールは新しい項目を追加するためのフォームを提供します。既存の項目を削除するには、単にその項目をクリックするだけです。

SLVホワイトリスト管理モジュールを使えば、SLVに通報したくないURLを追加できます。サイトに投稿されるデータにたまたまある特定のURLが頻繁に含まれているが、SLVにスパムと判定されてほしくないときに役に立ちます。
自分のサイトのURL(つまり、「管理者用メニュー - コンフィギュレーション - Geeklog - サイト」の「サイトURL」)は自動的にホワイトリストに登録されるので、このモジュールで新たに登録する必要はありません。

ログ閲覧モジュールを使用すれば、Spam-Xログファイルの閲覧・クリアができます。ログファイルには、スパム送信元のIPアドレスやユーザID（登録ユーザがスパムを投稿した場合）、検出モジュール名などの追加情報が含まれています。

多数のスパムが投稿されても検出されなかった場合は、一括コメント削除モジュールと一括トラックバック削除モジュールがスパムの削除に役立つでしょう。これらのモジュールを使用する前に、スパムに含まれるURLやキーワードをパーソナルブラックリストに忘れずに追加してください。

## MTブラックリスト(MT-Blacklist)に関する注意

MTブラックリストは、スパム送信に利用されたURLのブラックリストで、Movable Type用にJay Allenによって開発・維持されていました。そのため、MT-Blacklistという名前がついています。

ブラックリストの維持を行うのは大変手間のかかることであり、スパム送信者を絶えず把握しておかなければなりません。そのため、Jay Allenは現在ではスパムを検出するより優れた方法があると想定して、最終的にMTブラックリストの更新をやめてしまいました。

Geeklog 1.4.1以降、GeeklogではもはやMTブラックリストを使用していません。1.4.1にアップグレードするときに、データベースからMTブラックリストのデータは削除され、MTブラックリスト用の検出・アクションモジュールはもはや同梱されていません。

## トラックバックスパム

トラックバックもまた、Geeklogに受け入れられる前にSpam-Xプラグインで検査されます。トラックバックの場合、追加できるチェックがあります。トラックバックを送信してきたサイトが自分のサイトへのバックリンクを含んでいるかどうかをチェックするよう、設定できます。その上、トラックバックURLに含まれるサイトのIPアドレスがトラックバック送信元のIPアドレスと一致するかをチェックすることもできます。これらの検査に合格しないトラックバックはふつう、スパムです。詳細は、設定用のドキュメントを参照してください。

## コンフィギュレーション

Spam-Xプラグインの設定は、「管理者用メニュー - コンフィギュレーション - Spam-X」から行えます。

### Spam-Xの設定

項目(変数) | デフォルト | 説明
--- | --- | ---
ログを有効にする(logging) | `はい(true)` | はい(true)にすると、スパムと認識された投稿がログファイル(`spamx.log`)に記録されます。
タイムアウト(timeout) | 5（秒） | SLVなどの外部サービスと通信する際のタイムアウトとなる秒数を指定します。
メールで通知する(notification_email) | `「管理者用メニュー - コンフィギュレーション - Geeklog - サイト」の「サイトのメールアドレス」の設定値` | 管理者メールアクションモジュールが有効になっている場合、スパム通知の送信先Eメールアドレスを指定します。
Spam-Xの動作(action) | 128 | 「管理者用メニュー - コンフィギュレーション - Geeklog - ユーザと投稿」の「Spam-X」が設定されていない場合に備えるための設定です。言い換えれば、「管理者用メニュー - コンフィギュレーション - Geeklog - ユーザと投稿」の「Spam-X」の設定の方が優先します。

## 詳細情報

Spam-Xプラグインの詳細情報とサポート掲示板は、Spam-XプラグインのホームページとGeeklog Wikiにあります。