WordPress トラックバックスパムの対策 (“モデレートしてください”メールの対策)

投稿者 : OSCA

関東地方の美しい夜景を観にいこう。 夜景サイト「夜景散歩」で夜景スポットを検索

概要

 WordPress 製のブログやホームページを運営していると「モデレートしてください」というタイトルのメールが届く場合があります。 具体的には、次のような本文のメールです。

投稿 "○○○○○○○○" への新しいトラックバックが承認待ちです。
http://www.mywebsite.com/myentry/

ウェブサイト: http://www.spammer.net (IP: 203.160.xx.xx, 203.160.xx.xx)
URL: http://www.spammer.net
トラックバック抜粋:
<strong>http://www.spammer.net</strong>

This is spam message. Something...

承認する: http://www.mywebsite.com/wp-admin/comment.php?action=approve&c=0000#wpbody-content
ゴミ箱に移動する: http://www.mywebsite.com/wp-admin/comment.php?action=trash&c=0000#wpbody-content
スパムとしてマークする: http://www.mywebsite.com/wp-admin/comment.php?action=spam&c=0000#wpbody-content
現在203件のコメントが承認待ちです。コメントモデレーション画面を開いてください:
http://www.mywebsite.com/wp-admin/edit-comments.php?comment_status=moderated#wpbody-content

 本文の出だしに書かれているとおり、これは外部のサイトからあなたのホームページ宛にトラックバックが送信されたことを知らせるメールです。

トラックバックスパムとは?

 そもそもトラックバックとは、他のサイトの投稿を引用・参照した際に、引用元の投稿に対して「私のサイトのこの記事で引用しましたよ!」と通知する仕組みです。引用された側(トラックバックされた側)は、どのように記事を引用されたのかを確認できるので便利な機能ですが、この特徴を悪意のあるスパマーが利用するようになってしまいました。

 トラックバックスパムとは、実際には引用や参照をしておらずホームページの宣伝を目的に送信されるトラックバックのことを言います。 トラックバックを受けた側は「どんなサイトに私の記事が引用されたんだろう?」という興味からトラックバック元の記事を観に行くと、実際は何も引用されておらず広告記事を見せられるというわけです。

WordPressの管理機能でトラックバックを止める方法

 WordPress は、デフォルトでトラックバックを受け付ける設定になっていますが、トラックバックを受け付けないように設定を変更することができます。 設定の単位は「サイト全体」と「記事毎」の2つの粒度で設定できます。

トラックバック受付け設定の単位

  1. サイト単位
  2. 記事単位

サイト全体でトラックバックを受け付けなくする

 サイトとしてトラックバックを受け付けなくするには、管理画面の「設定」→「ディスカッション設定」を開き、「新しい記事に対し他のブログからの通知 (ピンバック・トラックバック) を受け付ける」のチェックを外します。

WordPress管理画面

記事単位でトラックバックを受け付けなくする

 サイト全体としてはトラックバックを受け付けるが、特定の記事だけトラックバックを受け付けなくするには、投稿画面の「表示オプション」の「ディスカッション」にチェックがついていることを確認し、「ディスカッション」ブロックの「このページでトラックバックとピンバックを許可」のチェックを外します。

WordPress管理画面

WEBサーバの設定でトラックバックを止める方法

 上記のように WordPress の本体の機能でトラックバックを受け付けないようにできますが、もっと頑固に「トラックバック用のURLにアクセスすらさせたくない」場合があります。 そのような場合はどうしたら良いでしょうか?

 WordPress が他サイトからのトラックバックを受け付けているURLは、 /wp-trackback.php です。 スパマーはあなたのホームページのこのURL宛にトラックバックを送りつけています。 ですので /wp-trackback.php へのアクセスをWEBサーバ側の設定で遮断してしまえば良いでしょう。
 たとえば Apache httpd の httpd.conf や .htaccess などで遮断するのであれば、次のように指定すれば良いでしょう。

<FilesMatch "wp-trackback.php">
  Order deny,allow
  Deny from all
</FilesMatch>

おわりに

 本稿では WordPress 製のブログやホームページ宛のトラックバックスパムの対策方法について解説しました。

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。
個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca