【Contact form 7】スパム判定のとき、コメント機能を使っていたら注意したいこと【WordPress】

WordPressのContact Form 7プラグインで作成したフォームからメッセージを送ろうとすると、オレンジ色の枠線で「メッセージの送信に失敗しました。後でまたお試しください。」と表示されてしまう事象があります。
これまでも一度記事にまとめていました。

今回も同様の事象が発生。
ただ上の記事には無かった原因で、コメント機能(ディスカッション設定)に関連して発生していました。

Flamingoプラグインで確認したら一発で原因解明できたのですが、個人的に盲点だったので書き残しておきたいと思います。

スパム判定のメッセージ

該当メッセージは以下のようなもの。

枠線の色は送信後のステータスによって異なり、キャプチャのオレンジ色はスパム判定となったことを表します。

今回前の記事と明らかに異なっていたのは、Google reCAPTCHAを導入していない内から発生していたという点でした。

原因はディスカッション設定の「コメント内で許可されないキーワード」

早速結論を述べると、スパム判定になってしまっていた理由は
WordPress管理画面のディスカッション設定にある「コメント内で許可されないキーワード」(以下禁止用語リスト)で設定していたワードに、フォームで送信したメッセージがひっかかっていたせいでした。

画面ではこの部分。

WP管理画面左メニュー「設定」>ディスカッション

改めて調べると、公式にもちゃんと記載が。

禁止用語リスト (旧コメントブラックリスト)

コンタクトフォーム経由で送られてくるスパムや好ましくないメッセージに迷惑していて、CAPTCHA や Akismet を使っても完全にはブロックできない、そんなときには禁止用語リストが役に立ちます。
(中略)
WordPress の管理画面にログインしたら、設定 > ディスカッションのメニューに移動、その中頃にコメント内で許可されないキーワードという項目があります。

単語か IP アドレスを一行に一個ずつ、テキストボックスに入力してください。作成したリストに含まれる単語を含む、または IP アドレスから送信されたメッセージは Contact Form 7 によりスパムとして扱われ、メールとして送信されません。

禁止用語リスト (旧コメントブラックリスト) | Contact Form 7 [日本語]

今回reCAPTCHAを一旦導入してからスパムに気づいたせいで、ついついreCAPTCHAを疑ってしまいました。
調べていく内にreCAPTCHAを外してもスパム判定になることが分かり、Flamingoを導入して原因が特定できた次第。
(Flamingoの見方は後述)

この禁止用語リストから該当ワードを削除したり、該当ワードを含まないようテストメッセージを送信したところ、無事送信成功するようになりました!

ちなみに、今回禁止用語リストにひっかかった経緯について。
普段WPコメント機能はあんまり使わないんですが、今回コメント機能に重きを置くサイトを作ろうと、有志の方のWordPress用のコメントブロックリスト(Comment Blocklist for WordPress)をまるっと禁止用語リストに登録してみていました。

そのワード数は5万強。
この中に「!」があり、たまたまテスト送信で「!」を入れたメッセージを(毎回)打ってたせいでスパム判定になった訳です。
コメントブロックリスト、日本語部分だけざっくり確認していただけだったのでスルーしてしまったんですが、「!」はコメントでもフォームでも禁止したい物ではなかったので気付けてよかったです。

スパムの原因はFlamingoプラグインで確認しよう

Contact Form 7のスパム判定関連だとreCAPTCHAの再設定で解消したという事例は多いかと思います。
この詳細については以下の記事をご覧ください。

また、今回原因を調べるにあたってFlamingoプラグインのスパムログがめちゃくちゃわかりやすかったので、今度から何かあったらこちらを確認すると早いなと思いました。

Contact Form 7と同じ方が制作しているFlamingoは、

  • Contact Form 7から送信されたメッセージをWordPress上で確認できる
  • スパム判定がでて送信失敗したメッセージもその送信内容と理由(スパムログ)を調べられる

というもの。

Flamingoを使ったスパムログの確認方法は以下の通りです。

1.[WP]Flamingoプラグインをインストール

https://ja.wordpress.org/plugins/flamingo/

2.[サイト上]Contact Form 7で作成したフォームからメッセージを送信し、スパム判定を再現

3.[WP]Flamingoメニューから”受信メッセージ”をクリック

4.[WP]スパムタブをクリックし、該当メッセージの表示リンクをクリック

5.[WP]該当メッセージの詳細が表示され、画面右側のステータスボックスにある「スパムログ:〜」を確認する

!が引っかかった場合の表記

また、reCAPTCHAの閾値を変更する方法も公式で紹介されていました。(プラグインとは関係なし)
reCAPTCHAのスパム判定の閾値が問題と思われる場合、最終的にこういった手段を検討できるのはありがたいですね。備忘録としてメモ。

reCAPTCHA v3 に関する FAQ | Contact Form 7 [日本語]

まとめ

今回の学んだことのまとめです。

  • ディスカッションの「コメント内で許可されないキーワード(禁止用語リスト)」に設定したワードは、Contact Form 7のスパム判定の際にも用いられる
  • reCAPTCHA未導入でスパム判定がされた場合、 Akismet等のスパム対策プラグインや禁止用語リストの設定を確認する
  • 大量のワードを禁止用語リストに設定する場合は、意図しないワードが含まれていないか、普段使いのワードがないか中身を確かめる
  • スパム判定の原因確認はFlamingoプラグインを活用する

下記の記事もよければ併せてご覧ください!