HPにメアドを載せたらスパムが激増|複数クローラーとコピペ拡散を前提に守る5層レイヤー防御

HPにメアドを載せたらスパムが激増|複数クローラーとコピペ拡散を前提に守る5層レイヤー防御 WordPress
この記事は約16分で読めます。
  1. 公開Webに「生メアド」を置くと拾われる確率が一気に上がる
  2. 「複数のクローラー」が同時に来ている
    1. 検索エンジン系クローラー(Googlebot等)
    2. メールアドレス収集ボット(ハーベスター)
    3. スクレイパー(コピペ転載・自動コピー)
  3. まずやるべき切り分け:原因が「収集」か「転載」か
    1. チェック1:増え始めたタイミングは掲載直後か?
    2. チェック2:自分のメアドを検索してみる(転載チェック)
    3. チェック3:アクセスログの異常をざっくり確認
    4. 対策は「1発」じゃなく「レイヤーで積む」のが勝ち筋
  4. レイヤーA:そもそも生メアドを出さない(最強の対策)
  5. レイヤーB:どうしても載せる場合の「見せ方」を工夫する
    1. B-1. Cloudflare Email Address Obfuscation
    2. B-2. [at][dot] 表記
    3. B-3. CSSで@を後付けする方法
    4. B-4.「リンクにしない」という選択肢
  6. レイヤーC:問い合わせフォームを「スパム耐性フォーム」にする
    1. C-1. Honeypot(ハニーポット)
    2. C-2. Cloudflare Turnstile(おすすめ)
    3. C-3. レート制限(送信回数制限)
  7. レイヤーD:コピペ転載(スクレイピング)対策は「割り切り」が大事
    1. D-1. 取られても被害が小さい構造にする
    2. D-2. 取るコストを上げる(WAF / Bot対策)
    3. D-3. robots.txtは「善良なボット向けのお願い」と割り切る
    4. D-4. 必要なら「noindex」を使う
  8. レイヤーE:メールそのものを固める(SPF / DKIM / DMARC)
    1. よくある誤解
    2. なぜ重要なのか
    3. 各技術の役割
    4. 2024年の大きな変化:Gmail送信者ガイドラインの厳格化
    5. DMARCポリシーの段階的な強化(推奨手順)
  9. すぐ使える「運用レシピ」3選
    1. レシピ1:個人サイト/ポートフォリオ
    2. レシピ2:事業サイト
    3. レシピ3:WordPressで現実的に固める
  10. よくある質問(FAQ)
    1. Q1. メアドをページから消したらスパムは止まりますか?
    2. Q2. robots.txtで連絡先ページをDisallowすればOKですか?
    3. Q3. 右クリック禁止やコピー禁止JSで守れますか?
    4. Q4. DMARCを入れれば迷惑メールが減りますか?
    5. Q5. Cloudflare Turnstileは本当に無料ですか?
    6. Q6. SPF/DKIM/DMARCは自分で設定できますか?
  11. まとめ:勝ち筋は「出さない」+「フォーム防御」+「メール認証」
  12. 参考資料(公式ドキュメント中心)
この記事の結論:HPに生メールアドレスを掲載するとスパムが激増する原因は「メールアドレス収集ボット(ハーベスター)」「コピペ転載による拡散」「スパムリストの売買」の3つです。対策は単発ではなく「レイヤー(層)で積む」のが鉄則で、「A. 生メアドを出さずフォームに一本化」「B. 難読化は補助輪として併用」「C. フォームをHoneypot+Turnstileで固める」「D. 転載されても被害が小さい構造にする」「E. SPF/DKIM/DMARCでなりすましを防ぐ」の5層を重ねがけしてください。

検証環境:WordPress 6.9.4 / Contact Form 7 6.1.5 / Cloudflare Turnstile / Xserver スタンダードプラン / Cloudflare Free プラン / 2026年4月時点の情報

ホームページにメールアドレスを掲載したら、ある日突然スパムメールが激増した…。Web担当者なら一度は経験したことがあるのではないでしょうか。

この記事では、なぜメールアドレスを公開するとスパムが増えるのか、その「原因の正体」を技術的な観点から解き明かしながら、今すぐ実践できる具体的な対策を「レイヤー(層)」の考え方で整理してお伝えします。

公開Webに「生メアド」を置くと拾われる確率が一気に上がる

ホームページに平文のメールアドレスを置くと、メールアドレス収集ボット(ハーベスター)に拾われ、さらにページが転載されると別サイトにもメアドが増殖し、一度スパムリストに載ると消しても長期間スパムが続きます。

ホームページに sample@mail.com のような平文(プレーンテキスト)のメールアドレスを置くと、次のような流れでスパムの標的になります。

  1. メールアドレス収集ボット(harvester / scraper)に拾われる。インターネット上を自動巡回し、@mailto: を目印にメールアドレスを収集する専用プログラムが存在します。
  2. そのページが転載(コピペ)されると、別サイトにもメアドが増殖する。悪質なスクレイパーは記事ごと丸コピーすることがあり、あなたのメアドも一緒に拡散されます。
  3. 一度リスト化されると、消しても長期間続く。スパムリストは売買・共有されるため、元を断っても完全停止は難しいのが現実です。

ここで押さえておきたいポイントは、「クローラーは一種類じゃない」ということです。検索エンジンのクローラーだけでなく、目的の異なる複数の巡回者が同時にあなたのサイトを訪れています。

3種類のクローラーがサイトを巡回している概念図

「複数のクローラー」が同時に来ている

同じ「クローラー」「ボット」でも「検索エンジン系(インデックス目的)」「ハーベスター(メアド収集目的)」「スクレイパー(記事丸コピー目的)」の3種類はまったく別物で、robots.txtを守るのは検索エンジン系だけです。

検索エンジン系クローラー(Googlebot等)

Googlebotなどの検索エンジンクローラーは、サイトを検索結果に載せるために巡回しています。これ自体がスパムを送るわけではありません。ただし、インデックスされた情報は検索結果として公開されるため、悪性スクレイパーに発見される確率が上がるという間接的な影響があります。

メールアドレス収集ボット(ハーベスター)

スパムの元凶となるボットです。ページ内のテキストをスキャンし、メールアドレス形式の文字列を片っ端から収集します。

収集の手口はかなり洗練されています。@マークを含む文字列の検出、mailto:リンクの自動抽出、[at][dot]といった置き換え表記の復元、さらにJavaScriptで生成された表示の取得まで可能なものも存在します。

GitHubには「email-scraper」というタグで300以上のリポジトリが存在し、PythonやNode.jsで手軽にスクレイピングできるツールが公開されています。ScrapeBoxのような商用ツールは、プロキシ経由で大量巡回が可能で、User-Agentを偽装する機能まで備えています。

スクレイパー(コピペ転載・自動コピー)

コンテンツを自動的にコピーして別サイトに掲載するボットです。厄介なのは、あなたがメアドを消しても転載先に残っていれば拾われ続けるという点です。転載サイトが検索エンジンにインデックスされ、そこからハーベスターがメアドを収集するという二次被害も発生します。

「自分のサイトを直接守る」だけでは不十分で、拡散されることを前提とした設計が必要です。

まずやるべき切り分け:原因が「収集」か「転載」か

スパムが増え始めたタイミング(掲載直後なら収集ボット由来、しばらく経ってからなら転載や漏洩リスト由来)を確認し、メアドの完全一致検索で転載チェック、アクセスログで異常パターンの確認を行うことで、効果的な対策の優先順位が見えてきます。

チェック1:増え始めたタイミングは掲載直後か?

パターン 推定される原因
掲載して数日〜数週間で急増 収集ボット由来が濃厚
掲載からしばらく経って増えた 転載や別ルート(漏洩リスト・データブローカー等)も疑う

チェック2:自分のメアドを検索してみる(転載チェック)

検索エンジンで "sample@mail.com" のようにダブルクオート(完全一致検索)で検索してみましょう。身に覚えのないサイトにメアドが載っていたら、転載による拡散が起きている可能性が高いです。ただし、検索に出ない転載もあるため、出なかったから安心とは言い切れません。

チェック3:アクセスログの異常をざっくり確認

サーバーのアクセスログで、1分間に数十〜数百リクエストの連続アクセス、不自然なUser-Agent(空欄や古いブラウザ)、同じIP帯からの連打(特に海外IP)がないか確認してください。

注意:User-Agentは簡単に偽装できます。「Googlebotを名乗っているから安心」という判断は危険です。正規のGooglebotかどうかは、逆引きDNSでgooglebot.comドメインからのアクセスか確認する方法が確実です。

対策は「1発」じゃなく「レイヤーで積む」のが勝ち筋

セキュリティの世界で「多層防御(Defense in Depth)」と呼ばれるアプローチで、1つの施策が突破されることを前提に複数の対策を重ねがけするのが鉄則です。ここからはA〜Eの5レイヤーをおすすめ順に紹介します。

5レイヤーの多層防御構造図

レイヤーA:そもそも生メアドを出さない(最強の対策)

最も効果的なのは根本的にメールアドレスを公開しないことで、問い合わせフォームを主導線にし、どうしても載せるなら専用の受信用アドレス(いつでも廃棄可能なもの)を使うのが推奨構成です。

従来 推奨
ページにメアドを掲載 問い合わせフォームを主導線に
「連絡はこちら:info@〜」と記載 メアドは原則非掲載
mailto: リンクを設置 どうしても載せるなら専用の受信用アドレス(いつでも廃棄可能)を使用

「メールで直接やりとりしたい」というニーズは理解できます。しかし、公開Webは実質的に「世界中に公開された掲示板」です。掲載する=拾われる可能性がある、という前提で設計するのが現実的です。

レイヤーB:どうしても載せる場合の「見せ方」を工夫する

Cloudflare Email Obfuscation、[at][dot]表記、CSSでの@後付け、mailto:リンクを使わないテキスト表記の4つの難読化テクニックがありますが、いずれも単独では突破される可能性があるため「やらないよりマシ」の補助的対策として他のレイヤーと併用してください。

B-1. Cloudflare Email Address Obfuscation

Cloudflareを利用しているサイトであれば、Scrape Shield機能でメールアドレスの自動難読化が可能です。HTMLソース上のメールアドレスを暗号化された文字列に自動変換し、ブラウザ表示時にJavaScriptがデコードして人間には普通に見えます。

設定は、Cloudflareダッシュボード → Scrape Shield → Email Address Obfuscation を「On」にするだけです。

注意点:フロントエンドフレームワーク(React等)との組み合わせで不具合が出ることがある、AJAXで取得したコンテンツには適用されないことがある、高度なボットには突破される可能性がある、といった制限があります。Cloudflare自身も「洗練されたボットはバイパスできる可能性がある」と認めています。

B-2. [at][dot] 表記

最も古典的な方法ですが、今でも一定の効果があります。実装が簡単でJavaScript無効環境でも表示できる一方、最近のスクレイパーは正規表現で復元できるものが増えており、単独対策にはしないのが無難です。

B-3. CSSで@を後付けする方法

HTMLソースに@マークを直接書かず、CSSの::before擬似要素で後付けする手法です。

ブラウザではsample@mail.comと表示されますが、HTMLソース上ではsamplemail.comが分離されています。ただしCSS無効環境での表示崩れ、ヘッドレスブラウザによるレンダリング後取得、転載先での再構成といった限界があります。

B-4.「リンクにしない」という選択肢

mailto:リンクは特に収集されやすいため、どうしてもメアドを載せるならクリック不可のテキストにするという割り切りもあります。UXは下がりますが、収集コストを上げる効果はあります。

レイヤーC:問い合わせフォームを「スパム耐性フォーム」にする

メールアドレスを隠すと次に攻撃されるのがフォームそのもので、Honeypot(人間に見えない入力欄でボットを検出)+Cloudflare Turnstile(完全無料・ユーザー負担ゼロの認証)+レート制限(同一IPからの連投防止)の3重防御が推奨構成です。

C-1. Honeypot(ハニーポット)

人間には見えない(CSSで非表示にした)入力欄を用意し、そこに値が入力されていたらボットと判定する手法です。WordPressではHoneypot for Contact Form 7プラグインをインストールし、フォームに[honeypot your-name]タグを追加するだけです。

ユーザーに負担をかけず実装も簡単ですが、高度なボットはHoneypotの存在を検知して回避することがあります。

C-2. Cloudflare Turnstile(おすすめ)

Cloudflareが提供する無料のCAPTCHA代替サービスです。完全無料(回数制限なし)、ユーザーに画像選択やパズル解答を求めない「ゼロフリクション」認証、プライバシー重視(広告リターゲティング用のデータ収集なし)という特徴があります。

Contact Form 7はTurnstileに公式対応しており、公式マニュアルでも「reCAPTCHAを使うべき理由が特にないのであれば、Turnstileを選択してください」と案内されています。

Contact Form 7のインテグレーション設定画面でTurnstileのサイトキー・シークレットキーを入力している画面

設定手順(WordPress + Contact Form 7):

  1. Cloudflareでアカウント作成(無料)
  2. ダッシュボード → Turnstile → ウィジェットを作成
  3. サイトキーとシークレットキーを取得
  4. WordPress管理画面 → お問い合わせ → インテグレーション → Turnstile を設定
  5. フォームに [turnstile] タグを追加

なお、Google reCAPTCHAは2024年後半から無料枠が月間10,000件に縮小されたため、新規導入ならTurnstileのほうが制限なく使えます。

C-3. レート制限(送信回数制限)

同一IPアドレスからの短時間連投を制限する仕組みです。CloudflareなどのCDN/WAFレベルで「同一IPから5分間に3回以上のフォーム送信があった場合、一時的にブロック」のように設定するのが効果的です。

レイヤーD:コピペ転載(スクレイピング)対策は「割り切り」が大事

コピー対策の完全防止は技術的に非常に困難なので、「取られても被害が小さい構造(生メアド非掲載・フォーム中心)」を作り、WAF/CDNで取るコストを上げ、robots.txtは善良なボット向けのお願いと割り切るのが現実的なアプローチです。

D-1. 取られても被害が小さい構造にする

対策 効果
生メアドを出さない 最重要:転載されてもメアドは漏れない
重要連絡はフォーム/チケット化 メールに依存しない導線を確保
メアドは専用の受信箱にする 被害が大きくなったら切り替え可能

D-2. 取るコストを上げる(WAF / Bot対策)

異常なアクセスパターン(連続アクセス、深夜帯の大量リクエスト)をWAFでブロック、不審なIP帯をレート制限、リクエストパスの不自然なパターンをフィルタ、といった対策で攻撃者のコストを上げます。

D-3. robots.txtは「善良なボット向けのお願い」と割り切る

この設定はGooglebotなどの行儀の良いクローラーには有効ですが、メール収集ボットは無視して巡回することがあります。さらに、robots.txtでブロックしても外部サイトからリンクがあるとURLだけがGoogleにインデックスされる可能性があります。

D-4. 必要なら「noindex」を使う

検索結果に出したくないページ(連絡先ページ、会員専用ページなど)に設定します。ただし、本当に検索から消したいのかはSEO・導線の観点でしっかり検討してください。

レイヤーE:メールそのものを固める(SPF / DKIM / DMARC)

SPF/DKIM/DMARCは「受信スパムを減らす魔法」ではなく「あなたのドメインを騙るなりすましメール」を防ぐ技術です。2024年2月以降Googleが送信ドメイン認証を義務化しており、未対応だとGmailにメールが届かなくなるリスクがあるため、スパム対策とは別の理由でも設定必須です。

よくある誤解

「SPF/DKIM/DMARCを設定すれば受信スパムが減る」は半分正解・半分間違いです。あなたのドメインを騙るなりすましメールは減らせますが、受信するスパム全体を減らす仕組みではありません。

なぜ重要なのか

HPにメアドを載せた → 収集された → 次に来るのが「なりすまし」という流れがあります。攻撃者があなたのドメイン@example.comを詐称して、取引先や顧客にフィッシングメールを送信するリスクがあるのです。

各技術の役割

技術 役割 たとえ話
SPF 送信元IPが正規送信サーバーか確認 「正規の郵便局から発送されたか?」
DKIM 電子署名で改ざんされていないか検証 「偽造防止シールが貼られているか?」
DMARC SPF/DKIMの結果とFromドメインの整合性を検証 「シールと差出人が一致しない場合どうするか?」

2024年の大きな変化:Gmail送信者ガイドラインの厳格化

送信規模 要件
すべての送信者 SPFまたはDKIMの設定が必要
1日5,000件以上送信 SPF、DKIM、DMARCの3つすべてが必要

未対応の場合、Gmailにメールが届かなくなる可能性があります。Google・Yahoo!・Microsoftともに同様の方向で対応を進めています。

DMARCポリシーの段階的な強化(推奨手順)

いきなり厳格なポリシーにすると正規のメールまで拒否されるリスクがあります。段階を踏むのが安全です。

ステップ1:監視モード(p=none)

認証失敗しても何もしない。レポートで現状を把握する段階です。

ステップ2:隔離モード(p=quarantine)

認証失敗したメールは迷惑メールフォルダへ。

ステップ3:拒否モード(p=reject)

認証失敗したメールは受信拒否。最も強力な設定です。

ポイント:rua=でレポート送信先を指定すると、自社ドメインを名乗るメールがどこから送信されているかを把握できます。なりすまし攻撃の早期発見に役立ちます。

すぐ使える「運用レシピ」3選

個人サイトなら「フォーム一本化+Honeypot+Turnstile」、事業サイトなら「フォーム主導線+WAFレート制限+SPF/DKIM/DMARC」、WordPressなら「Contact Form 7+Honeypotプラグイン+Turnstile+Cloudflare Email Obfuscation」の組み合わせが現実的です。

レシピ1:個人サイト/ポートフォリオ

☑ 生メアドは載せない(フォーム一本化)
☑ フォーム:Honeypot + Turnstile
☑ どうしても載せるなら:CSS @後付け or [at][dot]表記を補助で
☑ 受信用アドレスは専用化(捨てやすいもの)

レシピ2:事業サイト

☑ フォームを主導線に(自動返信+必須項目の最適化)
☑ WAF/CDNでレート制限(Cloudflare無料プランでも可)
☑ SPF/DKIM/DMARCを整備(なりすまし対策)
☑ フォームにはTurnstile + Honeypotの二重対策

レシピ3:WordPressで現実的に固める

☑ Contact Form 7 または WPForms でフォーム作成
☑ Honeypot for Contact Form 7 をインストール
☑ Cloudflare Turnstile を設定
☑ 可能ならCloudflareの Email Obfuscation を併用(補助輪)
☑ SPF/DKIMはサーバー設定で(多くのレンタルサーバーは対応済み)

よくある質問(FAQ)

「メアドを消したらスパムは止まるか」「robots.txtでDisallowすればOKか」「右クリック禁止で守れるか」「DMARCで迷惑メールが減るか」「Turnstileは本当に無料か」「SPF/DKIM/DMARCは自分で設定できるか」の6問に、根拠を持って回答します。

Q1. メアドをページから消したらスパムは止まりますか?

減ることはありますが、完全停止は難しいです。一度スパムリストに載ると売買・共有されて拡散します。根本対策は「今後増やさない構造(フォーム中心)」を作ることです。

Q2. robots.txtで連絡先ページをDisallowすればOKですか?

善良なクローラーには効きますが、悪性スクレイパーは無視します。本当に検索に出したくないならnoindexメタタグを使いましょう。

Q3. 右クリック禁止やコピー禁止JSで守れますか?

ほぼ意味がありません。スクレイピングはブラウザを使わず直接HTTPリクエストでHTMLを取得します。「取られても困らない設計」と「取るコストを上げる」が現実的な対策です。

Q4. DMARCを入れれば迷惑メールが減りますか?

「あなたのドメインのなりすまし」は減らせます。ただし受信するスパム全体をゼロにする仕組みではありません。

Q5. Cloudflare Turnstileは本当に無料ですか?

はい、完全無料で回数制限もありません。Google reCAPTCHAは月間10,000件を超えると有料になりますが、Turnstileにはその制限がありません。

Q6. SPF/DKIM/DMARCは自分で設定できますか?

多くのレンタルサーバーでは管理画面から簡単に設定できます。Xserver、ConoHa WING、お名前.comなど主要サービスではSPF/DKIMは標準対応済みです。DMARCは1行のTXTレコードを追加するだけです。

まとめ:勝ち筋は「出さない」+「フォーム防御」+「メール認証」

スパム対策の勝ち筋は「A. 生メアドを出さない」「C. フォームをHoneypot+Turnstileで固める」「E. SPF/DKIM/DMARCでなりすましを防ぐ」の3本柱で、B(難読化)とD(転載対策)は補助レイヤーとして併用する多層防御が最も効果的です。

この記事で解説した5つのレイヤーをまとめます。

レイヤー 対策 重要度
A 生メアドを出さない・フォーム中心に設計 最重要
B 難読化(Cloudflare Obfuscation / CSS / [at][dot]) 補助
C フォームをHoneypot+Turnstile+レート制限で固める 重要
D 転載されても被害が小さい構造+WAF 補助
E SPF/DKIM/DMARCでなりすまし防止 重要

どれか1つではなく、重ねがけ(レイヤー構造)が効くというのがこの記事の主旨です。スパム対策は「やったら終わり」ではなく、定期的な見直しが必要です。

参考資料(公式ドキュメント中心)

対策の実装時に参照すべき公式ドキュメントをCloudflare・Google・メール認証・WordPressの4カテゴリでまとめています。

コメント

タイトルとURLをコピーしました