コンタクトフォームの迷惑メール対策方法
導入
WordPressで海外向けのWebサイトを運営していると、コンタクトフォームに大量の迷惑メールが届くことがあります。特に英語圏や多言語対応サイトでは、自動送信ボットによるスパムが日常的に送られてきます。放置すると運営者の手間が増えるだけでなく、大切な顧客からの問い合わせを見落とすリスクもあります。そこで本記事では、WordPressサイトにおける「海外向けコンタクトフォームの迷惑メール対策方法」を日記形式で解説します。
手順解説
迷惑メール対策にはいくつかのアプローチがあります。以下の順番で対策を実施すると、より効果的にスパムを減らせます。
- reCAPTCHAの導入
Googleが提供する「reCAPTCHA」を利用することで、自動送信ボットからのスパムを大幅に減らせます。特に「reCAPTCHA v3」を利用すれば、ユーザーに煩わしい操作をさせずに判定できます。 公式サイト:Google reCAPTCHA - Akismet Anti-Spamプラグインの活用
WordPress公式プラグイン「Akismet」は、フォームから送信された内容をAIでチェックし、スパムを自動的に分類してくれます。 - Contact Form 7 のスパム対策機能
Contact Form 7 には標準で「CAPTCHA」や「クイズ」機能を追加する仕組みがあります。特定の質問(例:2+3=?)を追加するだけでもスパムを防げます。 - IPアドレス・メールアドレスの制限
functions.php にコードを追記して、特定のIPやドメインからの送信を拒否することも可能です。
コード例:functions.phpで簡単なスパム対策
このコードは、特定のドメインを含むメールアドレスからの送信をブロックするものです。
ここからコード
// 特定ドメインのメールを拒否
add_filter('wpcf7_validate_email*', 'block_spam_domain', 20, 2);
function block_spam_domain($result, $tag) {
$type = $tag['type'];
$name = $tag['name'];
if ('email' == $type || 'email*' == $type) {
$email = isset($_POST[$name]) ? trim($_POST[$name]) : '';
if (strpos($email, '@example.com') !== false) {
$result->invalidate($tag, 'このドメインからの送信は許可されていません。');
}
}
return $result;
}
ここまでコード
ポイント解説
@example.com
の部分を迷惑メールが多いドメインに変更して利用します。- 会社や個人で不要な送信元をまとめて指定することで、手動で削除する手間を大幅に減らせます。
動作確認/実用方法
- コードを貼り付けた後、対象ドメインのアドレスでフォームを送信するとエラーが表示されます。
- reCAPTCHAやAkismetと併用すれば、海外からのスパムもほぼブロック可能です。
- 完全にゼロにはできませんが、迷惑メールは9割以上減らせるケースが多いです。
まとめ
海外向けサイトでは、コンタクトフォーム経由のスパム対策は必須です。reCAPTCHA、Akismet、Contact Form 7 の機能を組み合わせることで、ほとんどの迷惑メールを防げます。さらに独自のコードで送信元を制限すれば、運営の効率化につながります。セキュリティとユーザビリティの両立を意識しながら、自分のサイトに最適な対策を取り入れていきましょう。
コメント