海外向けWordPressサイト作成日記

HP開発日記

コンタクトフォームの迷惑メール対策方法

導入

WordPressで海外向けのWebサイトを運営していると、コンタクトフォームに大量の迷惑メールが届くことがあります。特に英語圏や多言語対応サイトでは、自動送信ボットによるスパムが日常的に送られてきます。放置すると運営者の手間が増えるだけでなく、大切な顧客からの問い合わせを見落とすリスクもあります。そこで本記事では、WordPressサイトにおける「海外向けコンタクトフォームの迷惑メール対策方法」を日記形式で解説します。


手順解説

迷惑メール対策にはいくつかのアプローチがあります。以下の順番で対策を実施すると、より効果的にスパムを減らせます。

  1. reCAPTCHAの導入
    Googleが提供する「reCAPTCHA」を利用することで、自動送信ボットからのスパムを大幅に減らせます。特に「reCAPTCHA v3」を利用すれば、ユーザーに煩わしい操作をさせずに判定できます。 公式サイト:Google reCAPTCHA
  2. Akismet Anti-Spamプラグインの活用
    WordPress公式プラグイン「Akismet」は、フォームから送信された内容をAIでチェックし、スパムを自動的に分類してくれます。
  3. Contact Form 7 のスパム対策機能
    Contact Form 7 には標準で「CAPTCHA」や「クイズ」機能を追加する仕組みがあります。特定の質問(例:2+3=?)を追加するだけでもスパムを防げます。
  4. 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 の部分を迷惑メールが多いドメインに変更して利用します。
  • 会社や個人で不要な送信元をまとめて指定することで、手動で削除する手間を大幅に減らせます。

動作確認/実用方法

  1. コードを貼り付けた後、対象ドメインのアドレスでフォームを送信するとエラーが表示されます。
  2. reCAPTCHAやAkismetと併用すれば、海外からのスパムもほぼブロック可能です。
  3. 完全にゼロにはできませんが、迷惑メールは9割以上減らせるケースが多いです。

まとめ

海外向けサイトでは、コンタクトフォーム経由のスパム対策は必須です。reCAPTCHA、Akismet、Contact Form 7 の機能を組み合わせることで、ほとんどの迷惑メールを防げます。さらに独自のコードで送信元を制限すれば、運営の効率化につながります。セキュリティとユーザビリティの両立を意識しながら、自分のサイトに最適な対策を取り入れていきましょう。


コメント