• サイトの問い合わせフォームから英語のスパムメールがたくさん届いて困っている
  • 問い合わせフォームにはContact Form 7を使用している
  • 対策方法と効果を知りたい

こんにちは。銀河(@ginga_noguchi)です。

WordPressでWEBサイトを作成し、日に日にアクセスも増えてきて順調……それに比例して問い合わせフォームからのスパム(迷惑メール)も増えてイライラ。通知に反応してがっかりするのも嫌だし、肝心なメールを見落としそうで怖い。

ということで何かしらの対策をしたいと考えますよね。WordPressの問い合わせフォームはほとんどの方が『Contact Form 7』というプラグインを使用していると思いますので、今回はこちらで作成したフォームの対策方法をご紹介していきます。

少し手間のかかる作業もありますが、頑張ってこなしてストレスと時間の無駄から解放されましょう。

Snow Monkey Formsを推奨しています

本記事執筆から2年。現在、お問い合わせフォーム作成のプラグインはブロックエディタ対応の『Snow Monkey Forms』の使用をおすすめしています。

Snow Monkey Formsの使い方については別記事にて解説しています。

迷惑メール対策1. フォームにチェックボックスを入れる

もっとも簡単な対策がこれです。

スパムメール防止のため、こちらのボックスにチェックを入れてから送信してください。

のような文言を入れるやつですね。Contact Form 7に純正で備わっている機能ですが、対策効果は正直ちょっと薄めです。

もちろん無いよりはいいですけど。あと、スパム対策だけでなく

上記の内容で送信します。よろしければチェックを入れて送信ボタンを押してください。

このような文言にすれば送信前の確認としても使えます。

メリット
デメリット
  • 設定が簡単
  • ちょっとだけ効果がある
  • 送信前の確認としても使える
  • 全ては防げない
  • 1アクション増えるので利便性は下がる

迷惑メール対策2. クイズを入れる

Contact Foorm 7の純正機能からもう1つご紹介。こちらは「1 + 1 = ???」のような簡単なクイズ機能を使って回答が正解でなければエラーになるというものですね。

簡単な問題でもロボットでは解けませんから効果はあります。ただ、デザイン的にイケてはいないのと、ユーザーの利便性も下がりますね。

メリット
デメリット
  • 設定が簡単
  • けっこう効果がある
  • 利便性はけっこう下がる
  • あんまりイケてない

迷惑メール対策3. Google「reCAPTCHA」を導入する

もっともおすすめなのがこちら。Googleの『reCAPTCHA』というものを導入することですね。

reCAPTCHAとは「私はロボットではありません」のようなやつです。見たことありますよね?

ただ、これだけだと「最初のと同じチェック入れるやつじゃん」と思う方もいるでしょう。それでしたらこちらは設定が結構面倒なのでおすすめしません。

reCAPTCHAは現在V3(バージョン3)まで出ており、以下のような性能となっています。

V1

4文字ほどのランダムの英語や数字やひらがな等が表示され「表示されているテキストを入力して下さい」的なやつ

V2

「私はロボットではありません」にチェックを入れる。または複数の写真が表示されて「自動車の写真を全部選んでください」的やつ

V3

AIがページ内でのユーザーの行動を自動でスコア化し、人間かbotか判断してくれる

V3になると、ユーザーがサイトに来てからどのような動きをして問い合わせに来て、その動きから察するにそれは人間なのかロボットなのかをAIが自動で判断し、疑わしいやつはその場ではじいてくれます。

そしてContact Form 7はV3に対応しているのでユーザーの利便性も見た目も失いません。ただし、上述の通り設定がやや複雑ですのでそこはデメリットですね。

メリット
デメリット
  • AIが自動で人間かbotか判断
  • デザインも利便性も損なわない
  • サイト内のデータが増えれば増えるほどAIが学習して精度アップ
  • 設定が複雑で初心者はちょっとひるむかも

迷惑メール対策4. プラグイン「Akismet」を入れる

『Akismet』はWordPressにデフォルトで入っているスパム対策のプラグインです。迷惑メールだけでなく、サイト内のコメントにも効果があります。

デフォルトで入っているので設定しようかと思いきや「WordPress.comへの登録がなんちゃらかんちゃら」で挫折した方も多いんじゃないでしょうか。

メリット
デメリット
  • スパムコメントにも効果がある
  • 一定のロボットに効果がある
  • 送信前の確認としても使える
  • WordPress.comへの登録が必要
  • 重くなる・他のプラグインと競合するなどの理由でプラグインを増やしたくない

迷惑メール対策5. 日本語が含まれない場合はエラーにする

現在スパムメールのほとんどは海外からのものです。ですので「日本語が1文字も含まれない場合はスパム認証する」という設定にしてしまえば未然に防げます。

設定方法は以下のソースコードをfunction.phpに記述するだけ。ただし、function.phpは繊細ですのでちょっとしたことで「画面真っ白」みたいなエラーにもなりかねません。

初心者がここをいじる場合は必ずバックアップを取り、万が一エラーになった際には復元作業をするという覚悟の元で行ってください。

functionwpcf7_validate_spam_message($result,$tag){
  $value=str_replace(array(PHP_EOL,' '),'',esc_attr($_POST['your-subject']));
  if(!empty($value)){
    if(preg_match('/^[!-~]+$/',$value)){
      $result['valid']=false;
      $result['reason']=array('your-subject'=>'エラー。日本語を入力してください。');
    }
  }
  return$result;
}
add_filter('wpcf7_validate','wpcf7_validate_spam_message',10,2);
メリット
デメリット
  • 日本語の含まれないスパムメールを一斉排除できる
  • デザインを損なわない
  • funtioon.phpをいじる必要があるので初心者には怖い
  • 人間からでも日本語が含まれなかった場合はエラーになる

迷惑メール対策6. 問い合わせフォームを変える

あとは極論ですが、Contact Form 7からフォームを変えるという手段もあります。たとえばLINE公式アカウント(旧LINE@)や、TwitterなどのSNSのDMなどですね。

入力フォームが欲しければ『Google フォーム』も簡単に使えて何気に便利です。Contact Form 7はWordPressのお問い合わせフォームの定番中の定番でほぼみんなこれを使っていると思いますが、

  • デフォルトのデザインがイケていなく、CSSのカスタマイズも面倒
  • 送信前の確認画面がない
  • 自動返信メールの設定もわかりにくい
  • 公式の解説もわかりにくい

というデメリットがあります。僕は『Snow Monkey』の開発者が作成した『Snow Monkey Forms』が好き。

Snow Monkeyじゃなくてもどのテーマにも使えますので断然おすすめですよ。

まとめ

以上、「WordPressブログの問い合わせフォーム(Contact Form 7)からたくさんの迷惑メールが届いて困っている」という方向けの対策方法のご紹介でした。

チェックボックスを入れる簡単だけど効果は薄い
クイズを入れる簡単だけどあんまりイケてない
Google「reCAPTCHA」を導入する設定が少し手間だけど効果抜群
プラグイン「Akismet」を入れる効果はあるけど設定が手間なうえにサイトが重くなる
日本語が含まれない場合はエラーにする外国人向けには使えない
初心者にはエラーが怖すぎる
問い合わせフォームを変える極論

以上の6通りとなります。それぞれメリットもデメリットありますので、目的と状況に合わせておこなってみてください。