コラム
問い合わせフォームの海外IPブロック|設定方法と国内営業に無力な理由
問い合わせフォームに英文のスパムや意味のない文字列が毎日のように届き、「いっそ海外からのアクセスをまとめて遮断できないか」と考えている——。この記事は、そんな状況のWeb担当者・制作会社の方に向けて書いています。
結論から言うと、海外IPブロックは海外発のボットスパムを減らす手段としては有効です。一方で、日本国内から人の手で送られてくる営業メールには効きません。設定の仕方を誤ると、海外出張中のお客様や検索エンジンのクローラーまで弾いてしまうこともあります。
本記事では、海外IPブロックの仕組み、Cloudflareと.htaccessでの設定方法、正規の問い合わせを取りこぼさないための注意点、そして国内の営業メールまで含めて対策するための組み合わせ方を順に解説します。
この記事の結論(先に要点)
| 対策 | 海外発のボットスパム | 国内から届く営業メール | 設定の手間 | 正規のお客様を弾くリスク |
|---|---|---|---|---|
| Cloudflareの国別ルール | ◎ | ✕ 素通り | 小 | 中(対象を絞れば小) |
| .htaccessによるIP制限 | ○ | ✕ 素通り | 大(IPリストの保守が必要) | 中 |
| WordPressのセキュリティプラグイン | ○ | ✕ 素通り | 小〜中 | 中 |
| ひらがな必須バリデーション | ○ | ✕ 素通り | 小 | 小(海外のお客様は弾く) |
| reCAPTCHA・ハニーポット | ◎ | ✕ 素通り | 小 | 小 |
| AI営業メール判定(Defform) | ○ | ◎ 内容で仕分け | 小 | 小(誤判定はダッシュボードで確認可) |
→ 海外IPブロックは「どこから来たか」で弾く対策です。「何が書かれているか」は見ていないため、国内の営業メールには別のレイヤーが必要です。
1. 海外IPブロックとは|国別にアクセスを判定する仕組み
インターネット上の通信には、送信元を示すIPアドレスが付いています。IPアドレスは地域ごとに割り当てが管理されており、「このアドレス帯はどの国で使われているか」を推定するデータベース(GeoIPデータベース)が広く提供されています。
海外IPブロックは、このデータベースを使ってアクセス元の国を推定し、日本以外からの送信を拒否する仕組みです。問い合わせフォームに当てはめると、次のような動きになります。
- 日本国内のIPアドレスからの送信 → 通常どおり受け付ける
- 日本以外と判定されたIPアドレスからの送信 → 拒否、または追加の確認(チャレンジ)を求める
海外から届くスパムの多くは、海外のサーバーやボットネットから機械的に送信されています。そのため、国内向けにしか事業をしていないサイトであれば、海外IPを遮断するだけでスパムの量がはっきり減るケースは少なくありません。
ただし、ここで判定しているのはあくまで送信元の場所です。メールの中身が営業なのか、本物の問い合わせなのかは判定していません。この点が、後半で説明する限界につながります。
2. ブロックする前に確認したい3つのこと
設定に入る前に、次の3点を確認しておくと失敗を避けられます。
2-1. スパムが本当に海外から来ているか
まず、届いているスパムの送信元を確認します。サーバーのアクセスログ、フォームプラグインの送信ログ、Cloudflareを使っている場合はそのダッシュボードで、フォーム送信のリクエストがどの国から来ているかを見ておきましょう。
英文のスパムでも、送信元が国内のクラウドサーバーということはありえます。送信元の大半が海外であることを確かめてから設定すると、効果を見誤りません。
2-2. 海外からの正規の問い合わせがないか
次に、海外から本物の問い合わせが来る可能性を洗い出します。
- 海外拠点を持つ取引先、海外在住の日本人のお客様
- 出張・旅行中にスマートフォンから問い合わせる国内のお客様
- 海外のパートナー企業、採用応募者
これらが想定される場合は、「完全に遮断」ではなく「追加確認(チャレンジ)を出す」設定にするか、別の連絡手段を案内しておくのが現実的です。
2-3. ブロックの範囲を「フォーム送信」に絞れるか
もっとも重要なのが範囲です。サイト全体を海外IPブロックにするのは避けてください。 Googleのクローラーは国外のIPアドレスからアクセスすることがあるため、サイト全体を遮断すると検索結果への掲載に影響が出るおそれがあります。
ブロックの対象は、問い合わせフォームの送信先(POSTリクエスト)だけに絞るのが基本です。ページの閲覧は誰でもでき、送信だけが国内に限定される状態を目指します。
3. Cloudflareで問い合わせフォームの海外IPをブロックする方法
サイトのDNSをCloudflareで管理している場合は、WAFのカスタムルールで国別の制御ができます。サーバー側の設定ファイルを触らずに済み、IPアドレスのリストを自分で保守する必要もないため、もっとも手軽で確実な方法です。
3-1. ルールの考え方
Cloudflareのカスタムルールでは、リクエストの属性を組み合わせた条件式を書きます。問い合わせフォームの送信だけを対象にする場合、条件は次の3つの組み合わせです。
- 送信元の国が日本以外である
- リクエストのパスがフォームの送信先である
- リクエストのメソッドがPOSTである
条件式で書くと、次のようなイメージです(/contact/ の部分は実際のフォーム送信先に置き換えてください)。
(ip.src.country ne "JP" and http.request.uri.path eq "/contact/" and http.request.method eq "POST")
3-2. アクション(動作)の選び方
条件に一致したリクエストに対して、どう動作させるかを選びます。
| アクション | 動き | 向いているケース |
|---|---|---|
| Block | 送信を拒否する | 海外からの正規の問い合わせがほぼない |
| Managed Challenge | 人間かどうかの確認を挟む | 海外のお客様からの問い合わせも一部ある |
海外から本物の問い合わせが来る可能性が少しでもあるなら、まずはManaged Challengeで始め、ログを見てからBlockに切り替える流れが安全です。
3-3. WordPressの場合は送信先のパスに注意
WordPressのフォームプラグインは、フォームを置いたページとは別のURL(REST APIや admin-ajax.php など)に送信していることがあります。ページのパスだけを条件にすると、ルールが効かないことがあるため、ブラウザの開発者ツールでフォーム送信時のリクエスト先を確認してから条件を書きましょう。
条件式で使えるフィールドや、作成できるルール数などの最新の仕様は、Cloudflareの公式ドキュメントで確認してください。
4. .htaccessで海外IPを制限する方法(Apache)
Cloudflareを使っていないApacheのサーバーでは、.htaccess でIPアドレスによるアクセス制限ができます。ただし .htaccess には「国」を直接指定する機能がないため、日本に割り当てられたIPアドレス帯を自分で列挙する必要があります。
4-1. 設定例(フォームの送信処理ファイルだけを国内IPに限定)
Apache 2.4系では、Require ip を使って次のように書きます。下記のIPアドレスは説明用の例なので、実際には日本に割り当てられたアドレス帯のリストに置き換えます。
<Files "send.php">
<RequireAny>
Require ip 192.0.2.0/24
Require ip 198.51.100.0/24
Require ip 203.0.113.0/24
</RequireAny>
</Files>
send.php の部分は、フォームの送信を受け取るファイル名に置き換えてください。こうすることで、ページの閲覧には影響を与えず、送信処理だけを国内IPに限定できます。
4-2. .htaccess方式の注意点
- リストが数千行になる: 国単位のアドレス帯は非常に多く、
.htaccessが肥大化します。サーバーの処理負荷にも配慮が必要です - 定期的な更新が必要: IPアドレスの割り当ては変わるため、リストが古くなると国内のお客様を弾いたり、海外からの送信を通したりします
- 書き間違いでサイトが表示されなくなる:
.htaccessの記述ミスはサーバーエラーにつながります。編集前に必ずバックアップを取りましょう
保守の負担を考えると、Cloudflareを使える環境ならそちらを優先し、.htaccess 方式は「特定のIPアドレスを個別にブロックしたい」場面に限定するのが現実的です。
5. WordPressで海外IPを制限する場合の注意点
WordPressでは、国別のアクセス制限機能を持つセキュリティプラグインを使う方法もあります。管理画面から設定でき、IPリストの更新もプラグイン側で行われるため、.htaccess を直接編集するより手軽です。
その際は、次の点を確認してください。
- 制限の範囲をフォーム送信やログイン画面に限定できるか: サイト全体の閲覧を遮断する設定は、前述のとおり検索エンジンへの影響が懸念されます
- キャッシュ系プラグインとの相性: ページキャッシュが効いていると、制限が意図どおりに動かないことがあります
- 自分が海外から管理画面に入れなくなるリスク: 海外出張中に管理画面へログインできなくなった、という事態を避けるため、除外設定を確認しておきましょう
フォームプラグインごとのスパム対策の違いは、Contact Form 7のスパム・営業メール対策 完全ガイドやWordPress問い合わせフォームプラグインの選び方で詳しく比較しています。
6. 海外IPブロックの限界|国内の営業メールに無力な理由
ここからが本題です。海外IPブロックを設定すると、英文のスパムは目に見えて減ります。それでも**「営業メールは相変わらず届く」**という状態になることがほとんどです。理由は4つあります。
限界1:フォーム営業は日本国内から送られている
問い合わせフォームに届く営業メールの送り主は、多くが日本国内の企業や営業代行会社です。国内のオフィスや自宅から、国内のIPアドレスで送信されています。
海外IPブロックの判定基準は「送信元の国」だけなので、国内から送られる営業メールは仕様どおりに素通りします。フォーム営業が増えている背景は問い合わせフォームに営業メールが急に増えた理由と対策で解説しています。
限界2:VPN・国内のクラウドサーバー経由で回避される
ボットの運用者が、日本国内のクラウドサーバーやVPN・プロキシを経由して送信すれば、送信元は「日本」と判定されます。IPアドレスによる判定は、送信者が場所を変えれば回避できるという性質を持っています。
限界3:正規のお客様を弾く可能性がある
GeoIPデータベースによる国の推定は、常に正確とは限りません。また、海外出張中のお客様や、海外拠点経由のネットワークを使う企業の担当者は、海外のIPアドレスから送信します。
弾かれた送信はフォーム側に記録が残らないことが多く、取りこぼしに気づきにくい点にも注意が必要です。
限界4:「内容」は一切見ていない
海外IPブロック、reCAPTCHA、ハニーポットに共通するのは、メールの中身を読んでいないという点です。
[送信]
↓
【第1層】送信元・挙動の判定 ← 海外IPブロック / reCAPTCHA / ハニーポット
↓ 海外ボット・機械的な自動送信を除去
【第2層】内容の判定 ← ★ ここが空白のまま
↓ 人間が送った営業メールを除去
[本当に対応すべき問い合わせ]
第1層の対策をいくら重ねても、第2層の「営業か、本物の問い合わせか」という判定は埋まりません。reCAPTCHAが同じ構造で営業メールを止められない理由は、reCAPTCHAが効かない理由で詳しく解説しています。
7. 海外IPブロックと組み合わせたい対策
海外IPブロックは単独で使うより、他の第1層の対策と組み合わせると効果が安定します。
| 対策 | 役割 | 詳しい解説 |
|---|---|---|
| ハニーポット | 自動入力するボットを検出する | ハニーポット実装 |
| reCAPTCHA / Turnstile | 送信の挙動から人間かどうかを判定する | Defform vs Cloudflare Turnstile |
| 営業お断り文言 | マナーを守る送信者に営業を控えてもらう | 営業お断り文言の書き方 |
それぞれの対策の効果と限界を一覧で比較したい場合は、問い合わせフォームの営業メール・スパム対策 完全ガイドをご覧ください。
いずれも「やる価値はあるが、国内の営業メールには届かない」という点は共通しています。だからこそ、最後に内容を読むレイヤーを加えることが重要になります。
8. 国内の営業メールはAIの文脈判定で仕分ける(Defform)
Defformは、空白になりがちな第2層を担うサービスです。判定するのは送信元のIPアドレスや挙動ではなく、メールの本文・件名・送信者情報・文章パターンです。
- 誰にでも当てはまる定型的な提案文か、自社に固有の用件か
- 差出人の情報と問い合わせ内容に整合性があるか
- 営業メールによく見られる文章パターンと一致するか
これらをもとに、営業メール / スパム / 本物の問い合わせに仕分けます。海外IPブロックやreCAPTCHAとは判定する対象が異なるため、併用が前提です。第1層で海外ボットや自動送信を落とし、第2層で国内の営業メールを仕分ける。この二段構えで、受信箱に残る問い合わせを本当に対応すべきものに近づけられます。
AIの判定にも誤りが起こる可能性はありますが、判定結果はすべてダッシュボードで確認できるため、営業メールと判定された問い合わせを後から見直せます。IPブロックのように「弾かれた送信が記録に残らない」状態にならない点も、併用する理由のひとつです。
また、営業メールを除外することで、フォーム送信をコンバージョンにしている場合のGA4の計測値の汚染も抑えられます(→GA4のコンバージョンが営業メール・スパムで水増しされる問題)。
導入手順(既存フォームはそのまま)
WordPressをお使いの場合、Contact Form 7などの既存フォームを残したまま後付けできます。
- WordPress管理画面 →「プラグイン」→「新規プラグインを追加」→「Defform」を検索・有効化(WordPress公式プラグイン)
- Defformに無料サインアップ
- 発行されたAPIキーをプラグインの設定画面に貼り付け
AI判定は30通/月まで永年無料で、PROプランは月額3,000円でAI判定300通/月まで使えます(→料金プラン)。プラグインの詳細はWordPressプラグインの紹介ページをご覧ください。
よくある質問(FAQ)
Q. 海外IPブロックはサイト全体にかけてもよいですか? A. おすすめしません。Googleのクローラーが国外のIPアドレスからアクセスすることがあり、検索結果への掲載に影響するおそれがあります。対象は問い合わせフォームの送信(POSTリクエスト)だけに絞るのが現実的です。
Q. 海外IPブロックを設定すれば営業メールは減りますか? A. 減るのは主に海外発のボットスパムです。問い合わせフォームに届く営業メールの多くは日本国内から人の手で送られているため、海外IPブロックでは止まりません。内容を判定する別のレイヤーとの併用が必要です。
Q. Cloudflareと.htaccessはどちらを使うべきですか? A. Cloudflareを使える環境なら、国を条件にしたルールを書けてIPリストの保守も不要なため、Cloudflareが手軽です。.htaccessで国単位の制限をする場合は日本のIPアドレス帯を自分で列挙・更新する必要があり、保守の負担が大きくなります。
Q. 海外にいるお客様からの問い合わせを弾いてしまいませんか? A. 弾く可能性はあります。海外からの問い合わせが想定される場合は、完全に遮断するのではなく、人間かどうかの確認(チャレンジ)を挟む設定から始め、ログを確認しながら調整するのが安全です。
Q. Defformを入れれば海外IPブロックは不要ですか? A. 併用をおすすめします。海外IPブロックやreCAPTCHAは海外ボットや自動送信を手前で減らす役割、Defformは届いた問い合わせの内容から営業メールを仕分ける役割で、判定する対象が異なります。
まとめ
- 海外IPブロックは送信元の国で判定する対策で、海外発のボットスパムを減らすのに有効
- 設定はCloudflareの国別ルールが手軽。.htaccess方式は日本のIPアドレス帯の列挙・更新が必要
- ブロックの対象はフォームの送信だけに絞る。サイト全体の遮断は検索エンジンへの影響が懸念される
- 海外のお客様を弾く可能性があるため、まずはチャレンジから始めてログを確認する
- 国内から人の手で送られる営業メールは素通りするため、内容を判定するレイヤーとの併用が必要