# 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)
- Stop Forum Spam (SFS)
- Spam Number of Links (SNL)

### スパムリンク検証(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" で始まるユーザーエージェントからのスパム投稿はすべてブロックされます。

### Stop Forum Spam (SFS)

Stop Forum Spam is a centralized, server-based service that provides lists of ips, usernames and email addresses of know spammers of forums and blogs. With this module enabled, on new user registrations the ip of the user and email address will be checked against the SFS database. If found the Geeklog user account will not be created.

SFS is a free service and can be found at www.stopforumspam.com.

### Spam Number of Links (SNL)

With this module enabled you can limit the number of links that appear in a post and user profile. To enable the module and set the number of links you need to update the Spam-X configuration. If enabled you should allow at least 1 link to take into account when a user creates a profile since Homepage is a default user field.

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

いったん検出モジュールがスパム投稿を検出すると、アクションモジュールがスパムをどう処理するかを判断します。たいていの場合、スパムを削除するだけでよいですが、これを行うのが削除アクション(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」の設定の方が優先します。

### モジュール

項目(変数) | デフォルト | 説明
--- | --- | ---
Stop Forum Spamモジュールを有効(sfs_enabled) | `true` | Stop Forum Spam (SFS)モジュールを有効にするかどうか。有効ならユーザー新規登録時にEmailアドレスとユーザーIPをStopForumSpam.comを参照してSpam判定します。
Spam Number of Linksモジュールを有効(snl_enabled) | `true` | Spam Number of Links (SNL)モジュールを有効にするかどうか。If enabled it will only allow a specified number of links in a post or when a user creates or updates their profile.
リンク数(snl_num_links) | 5 | The maximum number of links allowed in a post or profile before it is considered spam.

## 詳細情報

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