TXT レコードの書き方

ドメインに文字列を持たせるレコードです。SPF・DMARC・所有者確認に使います。

名前種別TTL
(空欄)TXTv=spf1 include:_spf.example.net -all3600

SPF は 1 つのドメインに 1 本だけです。複数あると判定されません。

こう書く

やりたいこと名前種別TTL
送信を許可するサーバーを宣言する (SPF)(空欄)TXTv=spf1 include:_spf.example.net -all3600
なりすまし対策の方針を決める (DMARC)_dmarcTXTv=DMARC1; p=quarantine; rua=mailto:dmarc@example.jp3600
DKIM の公開鍵を置くselector._domainkeyTXTv=DKIM1; k=rsa; p=(公開鍵)3600
サービスの所有者確認(空欄)TXT(指定された確認用の文字列)3600

DKIM の名前はメールサービスが指定するセレクタです。公開鍵も相手側が発行します。

間違えやすい点

  • SPF を 2 行に分けて登録する1 つのドメインに SPF は 1 本だけです。複数あると無効になります。送信元が増えたら include でまとめます。
  • DMARC を p=none のまま放置するp=none は監視だけで、なりすましは止まりません。レポートを確認できたら quarantine、次に reject へ進めます。
  • include を増やしすぎるSPF が参照できるのは 10 回までです。超えると判定されません。include の先の include も数に入ります。

設定後の確認

メール設定チェックで、SPF の参照回数と末尾の指定、DKIM の鍵、DMARC のポリシーを確認できます。

よくある質問

SPF の末尾は -all と ~all のどちらがよいですか?

送信元をすべて洗い出せているなら -all です。移行中で漏れがありそうなときは ~all から始め、確認できてから -all にします。

DMARC はどこに書きますか?

名前を _dmarc にした TXT レコードです。ドメインの直下に 1 本だけ置きます。

所有者確認の文字列はどこに入れますか?

指示がなければ、名前を空欄にしてルートドメインの TXT に入れます。サービス側がサブドメインを指定していれば、その名前で登録します。