Firebase Authenticationを導入したものの、ユーザーへの認証メールやパスワード再設定メールが迷惑メールフォルダに落ちたり、ユーザーに不信感を与えている…と困っている方も多いのではないでしょうか。
サービスの信頼性を高め、メールの到達率を劇的に向上させるためには、送信元を自社ツール専用の「独自ドメイン」へカスタマイズすることが不可欠です。
本記事では、Firebaseでの設定手順から、DNSレコード(SPFやDKIMなど)を登録する際の見落としがちな注意点、既存のレンタルサーバー環境と安全に共存させるための具体策まで、分かりやすく解説しています。
デフォルトのメールは迷惑メールフォルダに入りやすい
メールアドレスの認証やメールやパスワード変更時にAuthから自動的に送信されるメールアドレスは「noreply@xxx.firebaseapp.com」のようになっています。
このドメインからのメールアドレスは基本的に迷惑メールフォルダに入ります。
迷惑メールフォルダに入るのを防ぐためには、メール送信元のドメインを独自ドメインに変更する必要があります。
「ドメインのカスタマイズ」か「SMTP設定」どちらがいいか?
Authのメール送信元のドメインを独自ドメインに変更する方法は以下の2つがあります。
結論からいうと「ドメインのカスタマイズ」がお勧めです。
- ドメインのカスタマイズ
- SMTP設定
ドメインのカスタマイズとは?
ドメインのカスタマイズの場合、実際にメール送信をするのはこれまで通り「Firebase」です。DNSレコードを設定することで、送信元名義を指定したドメインに「正当に」切り替えます。
- 無料で使える(送信上限あり)
- 到達率が高い
- 大量送信にも耐えられる
- 既にメール送信で使っているドメインと併用できる
- 無料枠が決まっている(上限あり)
- 送信したメールのログ(履歴)が追えない
Firebaseのメール送信の無料枠
特に無料枠についてはしっかり押さえておく必要があります。
メール送信数の上限は、完全無料のSparkプランと、クレカ登録が必須のBlazeプランで異なります。
| メール送信 | Spark(無料)プランの上限 | Blaze プランの上限 |
|---|---|---|
| アドレス確認メール | 1,000 件/日 | 100,000 件/日 |
| アドレス変更メール | 1,000 件/日 | 10,000 件/日 |
| パスワード リセット メール | 150 件/日 | 10,000 件/日 |
| メールリンク ログインメール | 5 件/日 | 25,000 件/日 |
Sparkプランでも、新規登録などで1日あたり1,000通送れるなど、十分すぎる余裕があります。
Blazeプランであれば1日10万件なので、ほぼ無料で使えます。
(参考)Firebase Authentication の上限
SMTP設定とは?
SMTP設定は自分で契約しているメールサーバーでメールを送信する方法です。
ドメインのカスタマイズの場合、実際にメール送信をするのはこれまで通り「Firebase」です。DNSレコードを設定することで、送信元名義を指定したドメインに「正当に」切り替えます。
- メールの送信履歴が残る
- Firebaseの無料枠の制限を受けない
- 仕様するメールサーバーに依存する
Xserverやお名前.comなどのレンタルサーバーを使用する場合、1秒間や1日あたりに送信できるメールの上限数はレンタルサーバー側に依存します。
特に、短時間に多くのユーザーがサインアップを試みた際、レンタルサーバー側の送信制限に引っかかり、認証メールの配信が遅延・ストップするリスクがあります。
ドメイン カスタマイズの設定手順
ここでは、Firebaseのメールサーバーを使って、そこに独自ドメインを紐づける「ドメインのカスタマイズ」の設定方法を紹介します。
Authのドメインをカスタマイズする
Firebaseコンソールに入り、「Authentication > テンプレート 」へと進みます。
「ドメインをカスタマイズ」をクリックします。

モーダルが表示されるので、追加したいドメイン名を入力します。

DNSの設定内容が表示されます。

これらを対象ドメインのDNSに設定していきます。
DNSの設定
4つのDNSを設定していきます。
SPF設定(なりすまし防止:メールサーバーの証明)
なりすましを防止するための設定です。Firebaseのメールサーバー「_spf.firebasemail.com」はこのドメインの正規の送信元であることを宣言します。
TXTレコードで以下を追加する。
v=spf1 include:_spf.firebasemail.com ~allレンタルサーバーなどで対象のドメインでメール送信をする場合など、既にSPFが設定されている場合があります。
このときに、firebaseのSPFを追加でもう一つ登録するのはNGです。DNSのルール上、1つのドメインに対してSPFレコード(v=spf1 で始まるTXTレコード)は1つしか登録できません。
SPFに登録してあるドメインが既にある場合は複数を記載して登録します。
v=spf1 include:_spf.onamae.ne.jp include:_spf.firebasemail.com ~allドメインの所有権確認(プロバイダ認証)
Firebase側に対して、登録したドメインの管理権限を持っていることを証明するためのTXTレコードを追加します。
firebase=ドメイン名対象ドメインをfirebase hostingで使っている場合既に、firebaseにhostingの登録ドメインの所有権を証明するための以下のレコードがあります。
hosting-site=ドメイン名これとは別物になるため、それぞれ登録が必要です。
DKIMの設定(なりすまし防止:電子署名)
CNAMEレコードを使ってFirebase側のDKIM公開鍵を紐付けます。
送信するメールに電子署名を付与し、受信側で「途中でメール本文が改ざんされていないか」「本当にこのドメインから送られたか」を検証できるようにするための設定です。
mail-ドメイン名.dkim1._domainkey.firebasemail.com.
mail-ドメイン名.dkim2._domainkey.firebasemail.com.ドメインの登録先によっては「mail-ドメイン名.dkim1._domainkey.firebasemail.com.」で保存しようとするとエラーが発生することがあります。
この場合は、末尾のドットを削除して試してみてください。
firebase1 と firebase2の2つを設定する理由は、「鍵のローテーション(定期的な変更)」に対応するためです。
片方の鍵を更新している間も、もう片方の鍵で署名の検証を途切れなく行えるようにしています。
DNSの登録が終わったら、右下の「確認」をクリックします。

「確認が完了しました」と表示されたら「カスタム ドメインを適用」をクリックします。

送信元が指定したドメインになります。
以上でテンプレートの送信メールの変更は完了です。

