用語辞典・DNS・ドメイン

TXTレコード

TXTレコードとは

TXTレコードは、DNSで一つ以上の文字列を保存し、メール方針や所有確認など用途別のデータを公開するリソースレコードです。正式名称はText record(テキスト・レコード)です。

RFC 1035が定めるデータ形式は、一つ以上のcharacter-string(キャラクター・ストリング)です。DNSは文字列の入れ物を提供しますが、文字列をどう読むかは、SPF、ドメイン所有確認、サービス設定など利用する規約が決めます。

「TXTなら自由な文章」というより、用途ごとの規則に従う公開データを、DNSの文字列形式で運ぶレコードと考えると正確です。

同じ所有者名に複数のTXTレコードを置き、用途ごとに選んで解釈するDNSは文字列を返し、意味と検証方法は各プロトコルが定める
一つの名前に複数のTXTレコードがあり、各レコード内の文字列群をメール方針、所有確認、サービス設定が別々に利用する図解
図1複数のTXTレコードは別々のレコードです。一つのレコードを構成する複数文字列と、同じ名前にある複数レコードを混ぜてはいけません。

一つのレコード内の分割と、複数レコードを分ける

引用符はゾーンファイルの書き方、DNSメッセージでは長さ付き文字列一つのcharacter-stringは最大255オクテット
一つのTXTレコード
"part-one""part-two"

二つの文字列を持つ一件のRDATA

同じ名前の別レコード
"another-purpose"

別のTXTとして独立した一件

利用する規約
選択解釈・検証

用途識別子や構文を見て処理する

図2長い値を複数文字列へ分ける場合、それらをどう連結するかは利用規約を確認します。異なるTXTレコード同士を勝手につないで一つの値にしてはいけません。

DNSは、文字列の意味を自動判定しない

TXTは、メール送信元の方針を示すSPF、サービスへドメイン管理権を証明するトークン、サイトや組織に関する補助情報などに使われます。ただし、先頭が同じように見える文字列でも、対応する仕様を知らないDNSリゾルバーは内容を検証しません。

たとえばSPFの評価は、メール受信側がSPF仕様に従って行います。TXTレコードがDNSに存在するだけで、メールが安全になるわけではありません。DKIMやDMARCにもそれぞれ名前の配置と値の構文があります。

ゾーンファイルの引用符は、値そのものと区別する

管理画面やゾーンファイルでは文字列を引用符で囲むことがあります。引用符は入力形式の区切りであり、通常はDNS応答で利用アプリへ渡る文字列の一部ではありません。管理サービスが自動で引用符を補うか、利用者が入力するかは製品ごとに異なります。

空白、セミコロン、バックスラッシュなどもゾーンファイルの構文上の意味を持つ場合があります。値を登録するときは、サービス事業者が示した文字列を勝手に整形せず、そのDNS管理画面の入力規則に合わせます。

TXTは公開情報であり、秘密の保管場所ではない

権威DNSへ問い合わせられる利用者は、公開TXTレコードを読めます。ドメイン所有確認用トークンも、登録後は第三者から取得できます。パスワード、API秘密鍵、秘密の復旧コードを置く場所ではありません。

確認作業が終わったトークンを残す必要があるかは提供元の仕様によります。継続確認に必要な値を消すと連携が外れ、不要な値を残し続けると構成の把握が難しくなるため、用途と管理者を記録します。

仕様の確認資料:RFC 1035「Domain Names — Implementation and Specification」RFC 7208「Sender Policy Framework」

関連用語