スパマーはあらゆる対象をターゲットにします。あなたの問い合わせフォームも例外ではありません。
Contact Form 7 はさまざまなスパム対抗モジュールを用意しています。異なるタイプのモジュールを複数組み合わせて使うのがおすすめです。
Akismet は Automattic が提供する強力なアンチスパムサービスです。Akismet によるスパムフィルタリングは Contact Form 7 の対スパム戦略の要をなします。
Akismet を有効化する
情報開示: この投稿の作成者は Automattic アフィリエイトです。これは、文中のリンクを通じてあなたが何かを購入した場合に、投稿作成者が手数料収益を得ることを意味します。
最初のステップは Akismet プラグインを有効化することです。Akismet のプラグインパッケージは WordPress に同梱されているので、わざわざインストールする必要はありません。「プラグイン」メニューに移動して、”Akismet Anti-Spam” を有効化するだけです。
Akismet を使うためには API キーの取得が必要になります。個人のブログで使う場合は無料で API キーを取得できます。企業サイトや商業サイト向けには有料の購読プランが提供されています。
有料の購読プランの利用を検討している方には Jetpack Security のプランをおすすめします。これらにはスパム対策の機能に加えてバックアップとマルウェア検出の機能が含まれています。Jetpack は Akismet と同じ会社が提供している、WordPress のための総合セキュリティパッケージです。

問い合わせフォームに Akismet を配備する
Akismet の元々の目的は WordPress のコメントフォームを保護することです。Akismet を Contact Form 7 を保護する用途で使うためには、フォームの入力項目(フォームタグ)に特定のオプションを設定する必要があります。
Akismet 関連のオプションが3種類用意されています:
akismet:author
送信者の名前を入力する項目にこのオプションを設定します。
例: [text* your-name akismet:author]
akismet:author_email
送信者のメールアドレスを入力する項目にこのオプションを設定します。
例: [email* your-email akismet:author_email]
akismet:author_url
送信者のウェブサイトの URL を入力する項目にこのオプションを設定します。
例: [text your-url akismet:author_url]
これらのオプションのひとつでも使用されていれば Akismet がフォームに配備されます。正確な結果を得るためにはなるべく多種類のオプションを使用することをお勧めします。
Akismet が配備されたフォームでは誰かがフォームの送信を行うたびに Contact Form 7 は Akismet に対してデータ送信を行います。このデータは、すべてのユーザー入力内容(akismet:* オプション付きの項目だけではないので注意)に加えて、環境変数に由来する内容が含まれます。Akismet はこのデータを検証し、「スパム」か「ハム(非スパム)」かを応答します。
「スパム」応答が返された場合、Contact Form 7 はメール送信を停止し、「メッセージの送信に失敗しました」というオレンジの枠線で囲まれたメッセージを表示します。
スパムフィルタリングをテストする
スパムフィルタリングが正常に機能しているかテストするには、名前 (akismet:author) の入力項目に “viagra-test-123” と、あるいはメールアドレス (akismet:author_email) の入力項目に “akismet-guaranteed-spam@example.com” と入力して送信してみてください。これらのテスト用に予約された魔法の単語が与えられると Akismet は必ず「スパム」の応答を返すことになっています。期待通りに機能していればオレンジ枠のエラーメッセージを目にするでしょう。
誤検知を報告する
100%正確なスパムフィルターは存在しません。偽陽性 (正常な送信をスパムと誤認する) と偽陰性 (スパムを正常な送信と誤認する)、両方の誤検知が多かれ少なかれ発生します。メッセージが不正確に扱われた場合は Akismet に対して誤検知を報告しましょう。あなたの報告から Akismet が学習し、以後のスパム検出アルゴリズムの正確性が向上します。
Akismet への誤検知報告には Flamingo プラグインが必要です。これは、Contact Form 7 にはそもそも送信データをデータベースに保存する機能がないためです。コンタクトフォームから送信されたメッセージは Flamingo > 受信メッセージ メニューから閲覧できます。正常なメッセージは 受信トレイ に、スパムのメッセージは スパム のリストに入ります。
ここでスパムのリストに入るべきメッセージが 受信トレイ に入っていたら、そのメッセージを開いて ステータス を スパム に変更しましょう。すると偽陰性誤検知の報告を Flamingo が Akismet API に対して自動的に送信します。同様に、正常なメッセージが スパム のリストに入っていた場合はステータスを 非スパム に変更します。この場合は偽陽性誤検知の報告が Akismet に送られます。
