マジックリンクのログインが失敗するのはなぜですか?
マジックリンクの失敗の多くは、ユーザーのせいでも配信の問題でもありません。人間より先に、何かがそのリンクを開いています。メールのセキュリティスキャナー、リンクのプレビュー用ボット、受信トレイのプリフェッチは、配信から数秒のうちにメッセージ内のすべてのURLをたどります。トークンが初回使用で失効する設計なら、その自動アクセスがトークンを使い切り、本人のクリックは「このリンクは使用済みです」に着地します。直し方は、リンクの寿命を終わらせるのを最初の開封ではなく有効期限にすること、そして常にもう一つの入口を残しておくことです。
ユーザーの操作ミスに見える失敗
症状はいつも同じで、いつも紛らわしいものです。誰かがログインリンクを要求し、リンクが届き、クリックすると、アプリが「無効」または「使用済み」と返します。ログを見ても壊れている箇所はありません。メールは受理され、トークンは作られ、トークンは検証されています。検証はされた — ただし送った相手によってではありません。送信からクリックまでの間には、そのメッセージを読む機械の行列があります。受信側のメールセキュリティ製品がリンクを書き換えて追跡し、メールクライアントがプレビューを即座に表示するために先読みし、企業のゲートウェイが隔離環境でURLを実行し、入口のフィルターが同じことをすることもあります。
私たち自身の本番のサインアップでも2026年8月にこれが起きました。何も起きていないように見えるので、その形を書き残しておく価値があります。ある登録者が一度の作業中に3本のリンクを要求しました。3本とも送信から16〜23秒でサーバー側で検証されており — 受信トレイを読んでいる人間には速すぎます — その後の人間のクリックはすべて使用済みとして拒否されました。その人はソーシャルログインでやり直して、ようやく中に入れました。ありふれた習慣が二つ、事態を悪化させ、しかもまったく同じログ行を生みます。スマートフォンでリンクを要求してノートパソコンで開くこと、そしてログインメールを同僚や自分の別アドレスに転送することです。トークンへの最初のリクエストが本人のブラウザだと前提を置く設計では、この三つはすべて攻撃に見えます。実際にはどれも普通の使い方です。
自分のケースがどれかを突き止める
何かを変える前に、実際にトークンを使い切ったのが何かを突き止めてください。手がかりはタイムスタンプです。スキャナーやプリフェッチは送信から数秒で到達し、人間は数十秒から数分かかります。すべての検証について時刻・ユーザーエージェント・IPを記録し、送信時刻と並べて読んでください。
| 見えている症状 | 考えられる原因 | 確かめ方 |
|---|---|---|
| 送信の数秒後に検証され、その後の本人のクリックが拒否される | メールのセキュリティスキャナーか受信トレイのプリフェッチが先に開いた | 検証時刻と送信時刻を比べ、ユーザーエージェントとIPがブラウザではなくメール事業者のものかを確認する |
| 特定の会社の人だけ失敗する | その会社のメールゲートウェイがリンクを書き換えて実行している | ユーザーにリンクを貼り戻してもらい、書き換えられたホスト名がないか探す |
| スマートフォンで要求し、ノートパソコンで失敗する | トークンが要求元のブラウザセッションに紐づいている | 他を疑う前に、自分で2台の端末をまたいで同じ流れを試す |
| 長い間隔のあとにだけ失敗し、早すぎる検証はない | リンクが本当に期限切れになっている — 短い寿命と遅い受信トレイの組み合わせが多い | 送信からクリックまでの間隔を、自分の有効期限の設定と突き合わせる |
| そもそも届かない | トークンではなく到達性の問題 | まずバウンス、迷惑メール判定、送信ドメインの認証レコードを確認する |
直す順番が結果を分ける
順番が要です。このうち二つは単独なら安全ですが、順序を誤ると危険になります。
- 消費より先に有効期限を確認する 他に何を変えても、期限切れのトークンがセッションを開けてはいけません。有効期限の確認を先に置くことが、次の手順を安全にします。これがないと、再度の開封を許すことがリンクの寿命を延ばすことになり、余分な訪問に耐えるだけでは済まなくなります。
- 期限内のリンクは複数回開けるようにする すでに検証済みでも有効期限内のトークンは受け入れ、エラーではなく「再利用である」ことを示すフラグを返してください。リンクは期限が切れたときに死ぬべきで、最初の機械が触れたときではありません。
- 最初の検証時刻を残す 再度の開封を受け入れるときも、最初の消費時刻を上書きしないでください。どのアクセスが実際に先着したかを示す唯一の記録であり、次に誰かがこの症状を報告したとき最初に見たくなる情報です。
- 開ける回数ではなく有効時間を絞る 何度か開けても構わない短命のリンクは、最初の接触で死ぬ長命のリンクより実務上は安全です。セキュリティの仕事をしているのは短い寿命のほうで、一回限りという制約はもともとその代用にすぎませんでした。
- 必ず二つ目の入口を残す パスワード、パスキー、ソーシャルログインのいずれかをもう一つの入口として用意し、3クリック先ではなく失敗画面そのものに出してください。私たちが失いかけた登録者はソーシャルログインで復帰しました。その入口がなければ、入口の手前で消えていたはずです。
- 失敗したときに役立つことを言う 「無効なリンクです」は、相手が何か間違えたと伝えるだけです。「このリンクは期限切れです — 新しいものはこちら」と同じ画面でワンタップ再送を出せば、サポート宛のメールに追いやらずに流れの中に留められます。
バグとして報告されない被害
ログインの失敗は目に見えます。計測の被害は見えず、しかもバグより長く残ります。サインアップのコンバージョンイベントを検証エンドポイントに最初に届いたリクエストで発火させていると、スキャナーが先に着くたびに、そのコンバージョンはどのブラウザも実行しないリダイレクトに乗ることになります。私たちに起きたのはまさにこれでした。新規登録を示すフラグがスキャナーのリクエストとともに運ばれ、その人の広告プラットフォーム側のサインアップコンバージョンは記録されないまま終わりました。そのデータで入札している人は、最も苦労して得たコンバージョンの一部が静かに欠けた数字に対して入札しています。
これを捕まえる習慣は地味ですが確実です。リンクのクリックではなく完了したセッションを数え、「リンク要求」と「セッション作成」の差をファネルの独立した一段として扱ってください。要求のうち無視できない割合がセッションにならないなら、ランディングページをいくら磨いても直りません。説得の失敗ではなく仕組みの失敗だからです。この一段手前はサイト訪問者をサインアップに変える方法、一段あとはアクティベーション率を参照してください。そもそもメールが届いていないなら、迷惑メール判定を避けるコールドメールの書き方にあるドメイン認証の手順はトランザクションメールにもそのまま当てはまります。どこから送るかをこれから決めるなら、Notifuseが自前運用の選択肢の一つです。
FAQ
- マジックリンクの有効期限はどのくらいが適切ですか?
- 時間単位ではなく分単位です。寿命が短いからこそ、同じリンクが複数回開かれても安全に許容でき、それが本当の解決策になります。一回限りで長寿命のリンクは両方の悪いところ取りです。何時間も受信トレイでスキャンされるのを待ち、それでいて最初に触れた機械で壊れます。
- マジックリンクは一回限りにすべきですか?
- 一回限りという単位そのものがずれています。必要なのは用途が一つで寿命が短いリンクです。ログインできるアカウントはちょうど一つ、そして期限が切れれば動かなくなります。最初の開封で寿命を終わらせる設計は、本人のブラウザが先に来ることを前提にしていますが、先に来るのはたいていスキャナーだけです。
- 送信の数秒後に検証済みとログに出るのはなぜですか?
- 機械が読んだからです。メールのセキュリティ製品は確認のためにリンクをたどり、メールクライアントはプレビュー表示のために先読みします。どちらも配信から数秒以内に起こります。検証の時刻と送信の時刻を比べてください。数秒以内のものが人間であることはほとんどありません。
- メールが迷惑メールに入るのと同じ問題ですか?
- 違います。切り分けておくと、直す対象を間違えずに済みます。迷惑メール判定はメールが受信トレイに届かなかったということで、こちらは届いたうえで違う読み手が開いたということです。まずバウンスと配置を確認してください。届いているなら、問いは「誰がトークンを検証したか」に変わります。
- サインアップの計測にも影響しますか?
- 大きく影響し得ます。サインアップのコンバージョンを検証エンドポイントへの最初のリクエストで発火させていると、スキャナーのリクエストがそれを持ち去り、どのブラウザも実行しないリダイレクトに帰属するか、まるごと失われます。作成されたセッションを基準にコンバージョンを発火させれば、ファネルからもレポートからもこの問題は消えます。
Want this done for you?
AgentCeres is a managed AI marketing team — specialists draft the work, you approve what ships. 14-day free trial, from $39/month.