- サイトの問い合わせフォームから英語のスパムメールがたくさん届いて困っている
- 問い合わせフォームにはContact Form 7を使用している
- 対策方法と効果を知りたい
こんにちは。代表の銀河(@ginga_noguchi)です。
WordPressでWEBサイトを作成し、日に日にアクセスも増えてきて順調……それに比例して問い合わせフォームからのスパム(迷惑メール)も増えてイライラ。通知に反応してがっかりするのも嫌だし、肝心なメールを見落としそうで怖い。
ということで何かしらの対策をしたいと考えますよね。WordPressの問い合わせフォームはほとんどの方が『Contact Form 7』というプラグインを使用していると思いますので、今回はこちらで作成したフォームの対策方法をご紹介していきます。
少し手間のかかる作業もありますが、頑張ってこなしてストレスと時間の無駄から解放されましょう。
本記事執筆から2年。現在、お問い合わせフォーム作成のプラグインはブロックエディタ対応の『Snow Monkey Forms』の使用をおすすめしています。
Snow Monkey Formsの使い方については別記事にて解説しています。
迷惑メール対策1. フォームにチェックボックスを入れる
もっとも簡単な対策がこれです。
スパムメール防止のため、こちらのボックスにチェックを入れてから送信してください。
のような文言を入れるやつですね。Contact Form 7に純正で備わっている機能ですが、対策効果は正直ちょっと薄めです。
もちろん無いよりはいいですけど。あと、スパム対策だけでなく
上記の内容で送信します。よろしければチェックを入れて送信ボタンを押してください。
このような文言にすれば送信前の確認としても使えます。
迷惑メール対策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に対応しているのでユーザーの利便性も見た目も失いません。ただし、上述の通り設定がやや複雑ですのでそこはデメリットですね。
迷惑メール対策4. プラグイン「Akismet」を入れる
『Akismet』はWordPressにデフォルトで入っているスパム対策のプラグインです。迷惑メールだけでなく、サイト内のコメントにも効果があります。
デフォルトで入っているので設定しようかと思いきや「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);
迷惑メール対策6. 問い合わせフォームを変える
あとは極論ですが、Contact Form 7からフォームを変えるという手段もあります。たとえばLINE公式アカウント(旧LINE@)や、TwitterなどのSNSのDMなどですね。
入力フォームが欲しければ『Google フォーム』も簡単に使えて何気に便利です。Contact Form 7はWordPressのお問い合わせフォームの定番中の定番でほぼみんなこれを使っていると思いますが、
- デフォルトのデザインがイケていなく、CSSのカスタマイズも面倒
- 送信前の確認画面がない
- 自動返信メールの設定もわかりにくい
- 公式の解説もわかりにくい
というデメリットがあります。僕は『Snow Monkey』の開発者の北島さん(@inc2734)が作成した『Snow Monkey Forms』が好き。
Snow Monkeyじゃなくてもどのテーマにも使えますので断然おすすめですよ。
まとめ
以上、「WordPressブログの問い合わせフォーム(Contact Form 7)からたくさんの迷惑メールが届いて困っている」という方向けの対策方法のご紹介でした。
チェックボックスを入れる | 簡単だけど効果は薄い |
クイズを入れる | 簡単だけどあんまりイケてない |
Google「reCAPTCHA」を導入する | 設定が少し手間だけど効果抜群 |
プラグイン「Akismet」を入れる | 効果はあるけど設定が手間なうえにサイトが重くなる |
日本語が含まれない場合はエラーにする | 初心者にはエラーが怖すぎる | 外国人向けには使えない
問い合わせフォームを変える | 極論 |
以上の6通りとなります。それぞれメリットもデメリットありますので、目的と状況に合わせておこなってみてください。