メルマガ不正登録の犯人は「セキュリティソフト」?ダブルオプトインをすり抜ける抜け穴とは
メルマガの登録フォームにCAPTCHA(画像認証)もダブルオプトイン(確認メールでの二重確認)も設定しているのに、明らかにおかしいメールアドレスが勝手に登録されてしまう..。配信するたびに、大量のエラーメールが..。
送信ドメインやIPの評価に悪影響を及ぼす、不思議な現象に悩まされていませんか?
実はこれ、いたずらや不正アクセスではなく、ある「善意の仕組み」が引き起こしている現象です。今回はこの事象を引き起こす正体と対処法をわかりやすく解説します。
こんな不思議な現象、起きていませんか?
あるメルマガ運営者から、こんな相談が寄せられました。
公的機関のセキュリティ通報窓口など、絶対に登録するはずのないメールアドレスが、勝手にメルマガに登録されてしまう。配信のたびに、大量の配信エラーメッセージが返ってくる。
一見すると「よくあるいたずら登録」に思えます。しかしこの登録フォームには、次の2つの対策がすでに施されていました。
- CAPTCHA:ロボットによる自動送信を防ぐ画像認証
- ダブルオプトイン:確認メール内のリンクをクリックしないと登録が完了しない仕組み
それでも登録が完了してしまう..。原因がわからずに悩んでいたのです。
犯人は「人」でも「ボット」でもなく、セキュリティソフトだった
事象を一つずつ分析していくなかで、この事象を引き起こしているのはメールアドレスの登録受付を実施している受信側で導入している、「メールセキュリティのスキャナー」であることが分かりました。
これは、届いたメールが危険(フィッシングやウイルス)でないかを自動でチェックしてくれる、いわば「受信BOXの門番」のようなソフトです。
この事象は、次の4段階で発生していました。
Step1:ボットが手当たり次第に登録フォームを送信
悪意のあるボットが、ネット上で見つけた実在のメールアドレスを使い、手当たり次第にメルマガの登録フォームを送信します。
「CAPTCHAがあるのに、なぜ送信が通ってしまうの?」
と思うかもしれません。私も思いました。よくよく調べると、CAPTCHAはボットの送信を100%防げる仕組みではないのです。
- 多くのCAPTCHAは「怪しさ」を点数化して判定しているだけなので、点数が基準を超えなければ通過してしまう
- 最近のボットは、CAPTCHA解読を代行するサービスやAIツールを使って、画像認証を突破してくることもある
つまり
「CAPTCHAを入れている=ボットの送信がゼロになる」
わけではなく、一定の確率ですり抜けは起こります。今回もこのすり抜けにより、確認メールが送信されてしまいました。
Step2:システムが確認メールを送信
フォーム送信を通ってしまえば、システム側では”正規申し込み”として、そのアドレス宛に自動配信される確認メールを送ります。
Step3:受信側のスキャナーが、確認リンクを自動でクリック
公的機関や大企業のメールサーバーには、届いたメール内のリンクが安全かどうかを自動スキャンする機能が導入されていることが多くなっています。
このスキャナーは、フィッシング詐欺やウイルスを検知するために、メール本文中のリンクを人間の代わりにすべて機械的にクリックします。
Step4:「クリックするだけで完了」の仕様が仇に
今回相談を受けたメルマガシステムでは、確認メール内のリンクは”クリックするだけで登録が完了”という仕様でした。
つまり、自動スキャンする機能が安全確認のために機械的にリンクを踏んだ瞬間に本登録が確定してしまっていたのです。
同じ理由で、「読者が身に覚えなく、勝手に配信解除されてしまう」という逆の問題も起きていました。解除リンクも同じ仕組みだったため、受信側のスキャナーがリンクを踏んだだけで、解除が成立してしまっていたのです。
この問題の本質は、CAPTCHAやダブルオプトインの不備ではなく、Webの設計ルールにあります。
- 登録する
- 解除する
のような重要な処理を、リンク1つで完結させてしまうと、こうした自動チェックによって、意図しない登録・解除が簡単に起きてしまうのです。
自動スキャンさせるなら、リンクの先に「確認ボタン」を1つ挟む
対策は非常にシンプルです。メール内のリンクをクリックしただけで処理を完了させず、間に必ず「確認ページ」を1枚挟みます。
- メール内のリンクは、あくまで”確認画面を表示”するだけ
- 確認画面に「登録を確定する」「解除する」といったボタンを設置
- 実際の登録・解除処理は、そのボタンが押された時にだけ実行
メールセキュリティスキャナーは、「安全かどうかの確認」のためにリンクを踏むことはあっても、確認画面のボタンを押して情報を送信するという能動的な操作までは行いません。
その理由は主に2つです。
(1) ボタンを押す処理には、不正利用を防ぐための追加情報が必要になることが多く、単純な自動巡回では再現が困難
(2) 「意思を持ってボタンを押す」という行為そのものが、自動化ツールの想定する動作の範囲外
つまり、確認画面とボタンを1つ挟むだけで、自動スキャンする機能による意図しない登録・解除を確実に防ぐことができるのです。
最後に
今回の事象は明らかにおかしいメアドが不自然にメルマガへ登録されてしまう、あるいは逆に読者が勝手に配信解除されてしまうというものでした。
そのきっかけは、CAPTCHAをすり抜けたボットが登録フォームを送信し、システムが正規の申し込みとして確認メールを発行してしまったことです。
そして直接の原因は、受信側の会社が導入しているメールセキュリティスキャナーが、安全確認のために確認・解除リンクを自動でクリックしてしまったことにありました。
さらにその奥にある本当の原因は、「登録」や「解除」のような重要な処理を、リンクをクリックするだけで完了させてしまう設計になっていたことです。
CAPTCHAやダブルオプトインといった対策があっても、この土台の設計が甘ければ、意図しない登録・解除は防ぎきれません。
対策としては、リンク先に確認ページを設け、実際の登録・解除処理は「確認ボタンを押した時」だけ実行するようにすることが有効です。
ダブルオプトインやワンクリック配信解除の仕組みを作るときは、CAPTCHAのようなボット対策だけに頼らず、
「リンクは見るだけ、大事な処理は必ず本人のボタン操作で行う」
という基本ルールを守ることが、思わぬトラブルを防ぐカギになります。これはメール配信システムに限らず、あらゆるWebサービスに共通する設計の鉄則です。