はじめに
Sign In with Apple(Appleログインと後述)が2019年に発表され、2020年4月には必須化になるなか導入の際にハマったインフラ系のことについてメモ書きしておきます。
私はiOSエンジニアではないですがPMやっていたときに遭遇しました。
ユーザ登録時にAppleログインで会員登録する際にメールアドレスをサービス提供側に公開するか非公開にするか選択があります。
非公開を選択した場合、サービス側が取得できるメールアドレスは「xxxx@privaterelay.appleid.com」になります。
本家サイトには「xxxx@privaterelay.appleid.com」に返信すれば登録ユーザに届くというようなことを書いているけどもGmailで送信した場合に下記の様にバウンスしてきました。これの解決方法です。
本記事で力になれないこと
これ以上読んで頂いても目的のものが含まれていない可能性を提示します。
- Gmailから発信されたメールの転送
- Gsuiteからの発信されたメールの転送
本記事はDNS周りの設定がメインとなります。
Gsuiteからの送信についてはもしかしたらやりようがあるかもしれませんが、Apple側の設定ができず。。。Gmailがフリーメールであるため作成可能なため受信は難しいかもしれません。
解決策
SPF設定をしましょう(ドン!)
ここに書いてありあました。
https://developer.apple.com/documentation/signinwithapplejs/communicating_using_the_private_email_relay_service
メールドメインを登録する
プライベートメールアドレスを持つユーザーにメールを送信するには、アウトバウンドメールまたはメールドメインを登録し、Sender Policy Framework(SPF)を使用してアウトバウンドメールを認証する必要があります。これらのメカニズムにより、このチャネルを介してユーザーとのみ通信できるようになり、スパムの通過を防ぎます。
by Google翻訳
ネットワークで、認証系、、、ちょっとだけアレルギーがでました
SPFとは
細かい説明は下記サイトを見てください。
https://salt.iajapan.org/wpmu/anti_spam/admin/tech/explanation/spf/
おさえておきたい事柄として、
受信したメールのドメインが信頼されているサーバから発信されたものなのかを確認する機構です。
メールの送信者ってプログラムで指定(もとい偽装)できますよね。下のスクショでいう送信元の話です。
SPFはそれがあっても安全さを担保する仕組みと思ってください。
送信者側設定
DNSの設定になります。
やることは対象ドメインに下記のTXTレコードを追加します。これで終了。
「このドメインはここから送信されたメールに対しては保証します!」って言うことなんですね
※自分自身は設定できません
"v=spf1 include:[許可するドメイン名] ~all"
設定の方法にはいろいろあるみたいなので必要に応じてアレンジできますね。
紹介されているのはIPアドレス、ドメイン名、メールサーバ、あわせ技ななどなど。
https://www.naritai.jp/guidance_spf_example.html
チェックツールもいくつかありました。
下記サイトで紹介されているみたいなのでどうしてもうまく行かないときとかは使ってみてもいいかもしれません。
自ドメインの設定が正しいかや、メールの一斉配信ツールなどでメールサーバが外部にあるときとかはspfの設定があるかを確認することもできます。
https://asumeru.net/spf-record-check
余談ではありますが今回nslookupのオプションでDNSのレコードを漁るということを覚えました。
これで、対象のドメインのDNS設定を観ることができます
nslookup -type=[レコード名] [ドメイン名]
例えば、
nslookup -type=mx [ドメイン名]
で、対象ドメインのメールサーバがわかります。
Apple Developer側設定
下記の記事を参考にしてみてください。
やることとしては、受信可能にするドメインかメールアドレスを登録することだけです。
**送信元とFromが一緒であればここの設定だけで大丈夫だと思います(多分) **
https://notes.tret.jp/sign-in-with-apple-register/
#終わりに
Appleログインを実装する上では一定数ハマるひとがいなくなればといいなとおもいます。
セキュリティ周りをしっかりするのはいいけどもなかなか初見殺しで面倒に感じました。
あと、黒い画面でネットワークのコマンド打って、ちょっとかっこいいと感じてしまったのは秘密です。