Contact Form 7のスパム対策は、3つをまとめて追加するより、止めたい送信に合うものを一つ選ぶのが先です。自動送信ならTurnstile、内容を含めた判定ならAkismet、決まった語句やIPアドレスなら禁止語リストが候補になります。
選ぶ基準は強さではありません。送信内容、外部サービスへ渡る情報、誤判定したときの戻しやすさで決めます。
この記事でわかること
この記事では、個別設定を網羅せず、最初に試す対策を選ぶところへ絞ります。
- Turnstile、Akismet、禁止語リストの違い
- 止めたい送信から候補を選ぶ基準
- 外部サービスを使う前に見る情報
- 対策を重ねる順番と、変更を止める条件
3つの対策は判定に使う情報が違う
Turnstile、Akismet、禁止語リストは、同じ強さの選択肢ではありません。何を見てスパムと判断するかが違います。
| 対策 | 主に見るもの | 向いている状態 | 先に確かめること |
|---|---|---|---|
| Turnstile | ブラウザや訪問時のシグナル | 機械的な自動送信が続く | Cloudflareアカウント、サイトキー、シークレットキー、対象フォーム |
| Akismet | フォームの入力内容と環境情報 | 固定語だけでは分けにくい送信 | APIキー、利用条件、外部へ送る入力内容、フォームタグ |
| 禁止語リスト | 登録した語句またはIPアドレス | 毎回同じ特徴が現れる | 一致範囲、正規問い合わせにも含まれないか |
送信の特徴をまだ分けていないなら、対策選びへ進むのは早めです。対策前に送信を分ける方法から見てみてください。
自動送信が続くならTurnstileを候補にする
Turnstileは、訪問者のブラウザ側でチャレンジを実行し、送信時のトークンを検証する仕組みです。Contact Form 7には連携機能があり、設定すると各フォームへウィジェットが入ります。
向いているのは、次のような状態です。
- 複数のフォームへ似た送信が続く
- 文面やメールアドレスが毎回変わり、禁止語を決めにくい
- 利用者へ画像選択式の操作を増やしたくない
- フォームの入力内容を判定サービスへ渡さず、自動送信を見分けたい
Cloudflareアカウントでウィジェットを作り、サイトキーとシークレットキーを取得します。Contact Form 7側の設定場所は「お問い合わせ > インテグレーション」です。
シークレットキーは公開情報ではありません。記事、問い合わせ本文、社内の共有メモへそのまま貼らず、管理者と保管場所を先に決めます。
Turnstileはフォーム入力内容そのものを処理しませんが、ブラウザ環境のシグナルを使います。導入前にプライバシーポリシーと現在の外部サービス一覧を見直しておくと、表示と実装がずれません。
入力内容も含めて判定するならAkismetを検討する
Akismetは、送信者名、メールアドレス、URLなどを手がかりに判定します。Contact Form 7で使うにはAkismetを有効にし、対象のフォームタグへ専用オプションを付けます。
注意したいのは送信される範囲です。Akismetを使うフォームでは、専用オプションを付けた項目だけでなく、すべての入力内容と環境情報がAkismetへ送られます。
問い合わせ本文に個人情報や事業上の情報が入るサイトでは、この違いを曖昧にできません。APIキーと利用条件に加えて、プライバシー表示と社内ルールも確認対象です。
Akismetは、決まった単語だけでは分けにくい送信を内容込みで判定したい場合に向きます。一方、外部へ送る情報を説明できないなら、設定を先へ進めません。
誤判定は起こり得ます。保存機能としてFlamingoをすでに使っている場合は、受信箱とスパム欄を見比べ、判定が合っているか確認できます。
同じ語句やIPアドレスが続くなら禁止語リストを狭く使う
禁止語リストは、WordPressの「設定 > ディスカッション」にある機能です。「コメント内で許可されないキーワード」へ、語句やIPアドレスを1行ずつ登録します。Contact Form 7でも、該当する送信はスパムとして扱われます。
仕組みが分かりやすく、元へ戻す場所も明確です。ただし、登録語が正規の問い合わせへ含まれていれば、その送信も止まります。
たとえば「制作」「修正」のような広い言葉は、サービス相談でも普通に使われます。この種類の語を登録すると、止めたい営業文だけを狙えません。
禁止語リストを選ぶのは、繰り返す特徴を狭く説明できる場合です。共通点が曖昧なら、無理に単語を作らず別の対策へ戻ります。
IPアドレスも同じ考え方です。一時的に同じ送信元が続いていても、送信元が変われば効きません。共有されるIPアドレスなら、関係のない利用者を止める可能性もあります。
最初に試す対策は戻しやすさまで含めて決める
候補が2つ以上残ったとき、私なら強さでは選びません。元へ戻す場所を一つに絞れるほうを先に試すと、結果が悪かったときに差し戻しと原因の切り分けを同時に済ませられます。
選び方を流れにすると、次のようになります。
- 止めたい送信の共通点を一つ書く
- 自動送信、内容判定、固定語句のどれに近いか選ぶ
- 必要なアカウント、入力情報、管理者を確認する
- 変更前の画面と元へ戻す場所を残す
- 対策を一つだけ有効にする
- 正規の問い合わせが通るか試す
1つ目の結果が分かるまでは、次を重ねません。Contact Form 7では異なる対策を組み合わせられますが、最初から全部を有効にすると、どの判定で止まったか追いにくくなります。
対策後は正規送信と拒否の両方を見る
迷惑送信が減っただけでは、設定を残す判断はできません。正規の問い合わせが通ることと、狙った条件だけが拒否されることの両方を見ます。
変更前の記録、正規送信、拒否テスト、メール受信、差し戻し。この5つを一つの流れにしたのが対策後の送信テストです。
テスト前に戻す場所が分からない場合は、設定を有効にしないほうが安全です。外部サービスのアカウント管理者が不明な場合も、キーを作り直す前に担当を確認します。
自分で選べる範囲と、設定を止める条件
送信の特徴が一つに絞れ、現在の対策と管理者が分かるなら、候補の比較までは自分でも進められます。設定変更は、元へ戻せる一か所に限定します。
次の状態では選択を保留します。
- 自動送信と人が送る営業連絡を分けられない
- すでに複数のスパム対策が有効になっている
- Akismetへ送られる入力内容を説明できない
- Turnstileのキーを誰が管理するか分からない
- 禁止語が正規の相談でも使われる
- 誤判定したときの確認場所と差し戻し手順がない
強い設定を探すより、何を見て判定するかを説明できることが先です。説明できない対策は、次に問題が起きたときも直せません。
おわりに
Contact Form 7のスパム対策は、止めたい送信から選びます。自動送信ならTurnstile、入力内容を含めた判定ならAkismet、固定した語句やIPアドレスなら禁止語リストが候補です。
候補を決めるところまでは自分でも進められます。複数の対策が重なっている、外部へ渡る情報を判断できない、元へ戻す設定が分からない。
一つでも当てはまるなら、そこが変更の止めどきです。現在の構成だけ共有してみてください。


