概要
Firebase AuthenticationとGoogle Workspaceからのメール送信が必要なシステムで、SPFレコードを以下のように登録していた。
v=spf1 include:_spf.firebasemail.com include:_spf.google.com ~all
mxtoolbox でSPFの構成をチェックしたところ、以下のような警告を発見。
Too many included lookups (11) Too many DNS Lookups? Solve this problem with SPF Flattening
SPFにおけるDNSルックアップの最大回数は10回までという制限がある。
疑問
FirebaseはGoogleのサービスだからSPFのアドレスも重複しているのでは?
調査
redditにも同じような投稿があった。
It looks like _spf.firebasemail.com just has include:sendgrid.net in there as well as redundant lookups for _spf.google.com.
You should be able to just put include:sendgrid.net in your SPF record and that will cover you._spf.firebasemail.comにinclude:sendgrid.netがあるだけでなく、_spf.google.comのルックアップも重複しているようです。
SPFレコードにinclude:sendgrid.netを入れれば大丈夫です。
なるほど。
検証
実際にFirebaseのSPFレコードをdigしてみる。
dig -t txt _spf.firebasemail.com
; <<>> DiG 9.10.6 <<>> -t txt _spf.firebasemail.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65082
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;_spf.firebasemail.com. IN TXT
;; ANSWER SECTION:
_spf.firebasemail.com. 300 IN TXT "v=spf1 include:sendgrid.net include:_spf.google.com ~all"
;; Query time: 10 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Fri Jan 12 09:24:04 JST 2024
;; MSG SIZE rcvd: 119
普通に sendgrid.net
と _spf.google.com
が定義されてた。
SPF Surveyor でルックアップしてもIPが重複していることが分かる。
SPFから _spf.google.com
を外してもメール受信時は PASS
になることを確認。
ルックアップも11回から8回に減らせた。
結論
FirebaseとGoogle Workspaceを利用してる場合、SPFレコードはFirebaseだけ登録してあれば良い (Sendgridの場合も同様)。