こんにちは。代表の銀河(@ginga_noguchi)です。
WordPressでWEBサイトを作成し、日に日にアクセスも増えてきて順調……それに比例して問い合わせフォームからのスパム(迷惑メール)も増えてイライラ。通知に反応してがっかりするのも嫌だし、肝心なメールを見落としそうで怖い。
ということで何かしらの対策をしたいと考えますよね。WordPressの問い合わせフォームはほとんどの方が『Contact Form 7』というプラグインを使用していると思いますので、今回はこちらで作成したフォームの対策方法をご紹介していきます。
少し手間のかかる作業もありますが、頑張ってこなしてストレスと時間の無駄から解放されましょう。
迷惑メール対策1. フォームにチェックボックスを入れる
もっとも簡単な対策がこれ。
「スパムメール防止のため、こちらのボックスにチェックを入れてから送信してください。」
のような文言を入れるやつですね。Contact Form 7に純正で備わっている機能ですが、対策効果はちょっと薄め。
もちろん無いよりはいいですけど。あと、スパム対策だけでなく
「上記の内容で送信します。よろしければチェックを入れて送信ボタンを押してください。」
みたいな文言にすれば送信前の確認にも使えます。
- 設定が簡単
- ちょっとだけ効果がある
- 送信前の確認としても使える
- 全ては防げない
- 1アクション増えるので利便性は下がる
迷惑メール対策2. クイズを入れる
Contact Foorm 7の純正機能からもう1つご紹介。こちらは「1 + 1 = ???」のような簡単なクイズ機能を使って回答が正解でなければエラーになるというものですね。
簡単な問題でもロボットでは解けませんから効果はあります。ただ、デザイン的にイケてはいないのと、ユーザーの利便性も下がりますね。
- 設定が簡単
- けっこう効果がある
- 利便性はけっこう下がる
- あんまりイケてない
迷惑メール対策3. Google「reCAPTCHA」を導入する
もっともおすすめなのがこちら。Googleの『reCAPTCHA』というものを導入することですね。
reCAPTCHAとは「私はロボットではありません」みたいなやつです。見たことありますよね?
ただ、これだけだと「最初のと同じチェック入れるやつじゃん」と思う方もいるでしょう。それだったらこっちは設定が結構面倒なのでおすすめしません。
reCAPTCHAは現在V3(バージョン3)まで出ており、
- 4文字ほどのランダムの英語や数字やひらがな等が表示され「表示されているテキストを入力して下さい」的なやつ
- 「私はロボットではありません」にチェックを入れる。または複数の写真が表示されて「自動車の写真を全部選んでください」的やつ
- AIがページ内でのユーザーの行動を自動でスコア化し、人間かbotか判断してくれる
となっています。V3になるとユーザーがサイトに来てからどのような動きをして問い合わせに来て、その動きから察するにそれは人間なのかロボットなのかをAIが自動で判断し、疑わしいやつはその場ではじいてくれます。
そしてContact Form 7はV3に対応しているのでユーザーの利便性も見た目も失いません。ただし、上述の通り設定がやや複雑ですのでそこはデメリットですね。
- AIが自動で人間かbotか判断
- デザインも利便性も損なわない
- サイト内のデータが増えれば増えるほどAIが学習して精度アップ
- 設定が複雑で初心者はちょっとひるむかも
- reCAPTCHAの導入方法
迷惑メール対策4. プラグイン「Akismet」を入れる
『Akismet』はWordPressにデフォルトで入っているスパム対策のプラグインです。迷惑メールだけでなく、サイト内のコメントにも効果があります。
デフォルトで入っているので設定しようかと思いきや「WordPress.comへの登録がなんちゃらかんちゃら」で挫折した方も多いんじゃないでしょうか。
- スパムコメントにも効果がある
- 一定のロボットに効果がある
- 送信前の確認としても使える
- WordPress.comへの登録が必要
- 重くなる・他のプラグインと競合するなどの理由でプラグインを増やしたくない
- Akismetの導入方法
迷惑メール対策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』の開発者の北島さん(@inc2734)が作成した『Snow Monkey Forms』が好き。
Snow Monkeyじゃなくてもどのテーマにも使えますので、断然おすすめですよー。
まとめ
以上、「WordPressブログの問い合わせフォーム(Contact Form 7)から迷惑メールが来てうざいよー」の方向けの対策方法のご紹介でした。まとめると
チェックボックスを入れる | 簡単だけど効果薄い |
クイズを入れる | 簡単だけどあんまりイケてない |
Google「reCAPTCHA」を導入する | 効果あるけど設定が手間 |
プラグイン「Akismet」を入れる | 効果あるけど設定が手間 |
日本語が含まれない場合はエラーにする | 外国人向けには使えない 初心者にはエラーが怖すぎる |
問い合わせフォームを変える | 極論 |
以上の6通りとなります。それぞれメリットもデメリットありますので目的と状況に合わせて行ってみてください。