サービスごとにメールアドレスを使い分ける方法

Webサービスやアプリのアカウントを作成するとき、「パスワードを使い回さない」というのはもちろんだが、「メールアドレスも、サービスごとに違うもので登録したい」と考えた。アカウントを作る度に新しいアドレスを用意し、毎回違うものを登録していく、という構想だ。

この方法を取る利点は二つある。まず一つは、「メールアドレスが流出しても、被害が広がりにくい」ということだ。

流出したメールアドレスというのは、ほかのサービスへの不正ログインを試す手がかりにされたりするのだが、個々のサービスに異なるアドレスを登録しておけば、ある事業者からアドレスが漏れたとしても、それはほかのサービスとは無縁のアドレスなので、悪用される可能性を減らすことができる。

もう一つの利点は、「流出元の見当がつく」ということだ。サービスごとに別々のアドレスを登録しておけば、迷惑メールやフィッシングメールが届いたとき、宛先からどのサービスに登録したものなのかを特定することができる。

そのサービスから情報が連携された先で流出が起きた可能性もあるので、これだけで流出元を断定することはできないが、それでも流出経路を考える手がかりにはなるし、サービス事業者に問い合わせるときに「このサービスにしか登録していないアドレスに届いた」と伝えることで、流出を疑う理由を具体的に説明することができる。


ちなみに、登録先を区別する方法としては、Gmailなどで使える「+」記号を付けるテクニックがよく知られていると思う。メールアドレスの「@」より前に、「+」に続けて任意の文字列を付けても、元のメールアドレスで受信できる仕組みで、俗にエイリアスと呼ばれているやつだ。(「厳密にはエイリアスではない」説をよく見るが、そのへんの詳しいことは僕もあまりよくわかっていない。)

この機能を使うと、たとえば hoge@gmail.com を使っている人なら、hoge+piyo@gmail.com 宛てのメールも同じメールボックスで受け取ることができる。

これを利用して、Chooningというサービスに登録するときは hoge+chooning@gmail.com としておくことで、このアドレス宛てに迷惑メールが届けば、「Chooningに登録したアドレスが、どこかへ出回ったらしい」とわかるわけだ。

しかし、この方法には課題がある。まず、そもそも「+」を含むメールアドレスの登録を受け付けないサービスがあって、そういう場合には使えない。また、hoge+piyo@gmail.com というアドレスからは、元のアドレスが容易に特定できてしまう(「+」と、それに続く文字列を取り除けばよい)。

つまり、登録先の目印にはなるが、普段使っているアドレスを伏せることはできない。流出したときの被害を抑えられるかというと、少々あやしいところがある。


そこで今回は、独自ドメインを使って、a8f3k9m2p5x1z7q4@example.com のようなランダムな文字列のアドレスを、サービスごとに使い分ける方法を紹介しようと思う。

サービスごとに異なるランダムなアドレスを使えば、どのサービスに登録したものかを識別できるし、一つのアドレスからほかのアドレスを推測されることも避けられる。

ただし、ランダムなアドレスをいくつも覚えておくのは難しいので、この方法は、登録情報をパスワードマネージャーで管理することを前提としている。

仕組み

今回使うのは、Cloudflareの「Email Routing」というメール転送機能だ。Cloudflareで管理している独自ドメイン宛てのメールを、Gmailなどの手持ちのメールアドレスに転送することができる。

たとえば、自分が持っている example.com というドメインに対して、「このドメイン宛てに届いたメールを、すべて普段のGmailへ転送する」と設定したとする。すると、「@」より前が何であっても、つまり abc@example.com でも、xyz123@example.com でも、指定したGmailに転送されてくるようになる。

また、これはアドレスを登録するたびに「メールアドレスを一つずつ発行する」といった手間を必要とするものではない。Cloudflare側は「@」以降のドメインで判定しているので、サービスに登録するときは、その場で作ったランダムな文字列に @example.com を付けて登録しさえすればよい。

設定方法

1. ドメインのDNSをCloudflareで管理する

これからドメインを取る場合は、Cloudflareのアカウントを作り、Cloudflare Registrarでドメインを取得する。

すでに別のサービスで取得したドメインを持っている場合は、Cloudflareにドメインを追加し、DNSの管理をCloudflareに切り替えることになる。切り替えの手順は利用中のドメイン管理サービスによって異なるので、「サービス名 Cloudflare DNS 移行」などで検索するとよいだろう。

ちなみに、僕はこの機会にSquarespaceで管理していたドメインをCloudflareへと移した。Google Domainsの終了に伴ってSquarespaceへ移って以来、ずっと使いづらいなあと思っていたのでちょうどよかった。(Google Domains懐かしいなあ、いいサービスだったのになあ。)

2. 転送先のメールアドレスを登録する

Cloudflareの管理画面で、「Compute → Email Service → Email Routing」を開く。

「Destination addresses」から、転送先にしたいGmailなどのメールアドレスを登録する。そのアドレス宛てに確認メールが届くので、その中の「Verify email address」を押して認証を完了する。

3. ドメインのメール受信を有効にする

Email Routingの画面に戻り、「Onboard Domain」から使いたいドメインを選んで、DNSレコードの設定へ進む。

メールの受信先を指定するMXレコードと、メール認証用のTXTレコードが表示されるので、「Activate」を押す。(レコードは控えたりしなくて大丈夫。)

4. Catch-Allの転送先を設定する

「Routing rules」でCatch-All、つまり「ドメインが受信したすべてのメールに対するアクション」を設定していく。

「Action」を「Send to an email」にし、「Destination」に先ほど認証した転送先のメールアドレスを選んで保存する。

そのうえで、一覧画面にあるCatch-Allのスイッチをオンにする。保存しただけでは「Disabled」になっているので、「Active」にするよう必要がある。

5. テストメールを送る

ここまでできたら、試しに管理しているドメインの前に適当な文字列を付けたアドレス、すなわち te34qtwbetvw3@example.com のようなアドレスへメールを送ってみよう。

これが転送先として設定したアドレスに届けば完了だ。初回のみ、設定の反映には少し時間がかかることがあるので、すぐに届かない場合がある。(僕も数分待ってから届いた。)

ランダムなメールアドレスの生成

「毎回ランダムなメールアドレスを考えるのが面倒だよー」という人のために、ツールを作って公開した。

Personal Information Generator(個人情報ジェネレーター)


「個人情報ジェネレーター」である。名前のいかがわしさがすごいだろう。

メールアドレスだけでなく、パスワードや、架空の名前・誕生日などもランダムに生成できる。もちろん、ものによっては正確な情報の登録が必要な場面もあるので、そのあたりは各自判断して適法に使ってください。


なお、今回設定したのは受信用の仕組みだ。ランダム文字列のアドレスからメールを送信するには、別途設定が必要になる。これについては「登録したメールアドレスから送信しなければならない」場面というのは極めて少ないだろうと判断し、目をつむることにした。基本送ることはない、受信専用のアドレスというふうに思ってもらえればいいと思う。


今回紹介した方法は以前から思いついていたのだが、ようやく重い腰を上げたのは、数日前、僕のもとにフィッシングメールが届いたからだ。「所得税還付金 受取手続未完了のお知らせ」というやつが届いた。八万円もらえると書いてあったので、マジでクリックしそうになった。

八万円ほしい

いったいどこから僕のアドレスが出回ったのかはわからないが、こういう仕事をしていることもあって、新しいサービスはどんどん使ってみたいし、登録するたびに身構えるのもつまらない。これからもインターネットと気軽に付き合っていきたいからこそ、多少面倒でも、こうやって仕組みを作っておかないとなあと思ったのだ。