← RFC Reference

RFC 1035 – ドメイン名: 実装および仕様

Internet Standard DNS & Mail Routing Published March 2026
ELI5: 手紙を送るときは、受取人の住所を担当する郵便局がどこかを知る必要があります。DNSはメールのそれをお答える電話帳です。ドメイン名を調べるとDNSはそのドメインのメールを受け入れるメールサーバー(MXレコード)、それらのIPアドレス(A/AAAAレコード)、および適用されるポリシー(SPF、DKIM、DMARCのTXTレコード)を伝えます。DNSなしでは、メール配信方法がありません。

このRFCが存在する理由

1987年にRFC 1034と一緒に公開されたRFC 1035は、ドメインネームシステムの実装詳細を定義しています。DNSは汎用インフラですが、電子メールにとって絶対に重要です。すべてのメール配信はDNSルックアップで始まります—送信サーバーは受信者のドメインのメールを受け入れるサーバーを発見する必要があります。

RFC 1035は、レコードタイプ、クエリ形式、およびレスポンス構造を定義しており、これらがこれを可能にします。メールの場合、4つのレコードタイプが最も重要です:MX(メール交換ルーティング)、A(IPv4アドレス)、AAAA(IPv6アドレス、後にRFC 3596で定義)、およびTXT(SPF、DKIMキー、DMARCポリシーなどに使用されるテキストレコード)。

RFC 1035がなければ、ドメイン名をそのメールを処理するサーバーにマップする標準的な方法がありません。現代的なメールのすべての認証とルーティングメカニズムはそれに依存しています。

動作方法

送信MTAがuser@example.comへのメッセージを配信する必要がある場合、特定のDNSルックアップシーケンスに従います:

  1. example.comのMXレコードをクエリしてください。レスポンスには1つ以上のメール交換器が含まれ、それぞれに優先度値があります(低い方が優先)。
  2. 優先度でソートしてください。複数のMXレコードが同じ優先度を共有する場合、送信者は負荷分散のためにそれらの間をランダム化します。
  3. MXホスト名をIPアドレスに解決してください。A(IPv4)またはAAAA(IPv6)クエリを使用します。
  4. ポート25の解決されたIPアドレスでメールサーバーに接続し、SMTPセッションを開始してください。
  5. 推奨MXに到達できない場合は、次に低い優先度を試してください。
  6. MXレコードが存在しない場合は、ドメイン自体のA/AAAAレコードにフォールバックしてください(RFC 5321に従って)。

主要な技術詳細

MXレコード—メールルーティング

MXレコードはメールルーティングの基盤です。ドメインをそのメールサーバーのホスト名にマップし、試行される順序を決定する優先度値を持ちます:

example.com. IN MX 10 mx1.example.com. example.com. IN MX 20 mx2.example.com. example.com. IN MX 30 mx-backup.example.com.

MXターゲットはホスト名である必要があります。決してIPアドレスではありません。送信MTAはA/AAAAクエリを使用してそのホスト名をIPに解決します。CNAMEを指すMXレコードは仕様では技術的に禁止されていますが、一部のリゾルバーはそれを許容します。

AレコードとAAAAレコード—IP解決

MXホスト名がわかったら、AレコードはIPv4アドレスを提供し、AAAAレコードはIPv6アドレスを提供します:

mx1.example.com. IN A 198.51.100.25 mx1.example.com. IN AAAA 2001:db8::25

MXホスト名がAとAAAAの両方のレコードに解決される場合、送信MTAは独自の構成と接続に基づいて選択します。ほとんどの最新MTAはIPv6が利用可能な場合はそれを優先し、IPv4にフォールバックします。

TXTレコード—メール認証

TXTレコードは元々、ドメイン名にテキストデータを付加するための汎用メカニズムでした。メール認証はそれを広く採用しています:

# SPF — このドメインのメール送信が許可されたサーバー example.com. IN TXT "v=spf1 include:mailertogo.com ~all" # DKIKMの公開鍵 — メッセージ署名の検証に使用 selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGf..." # DMARCポリシー — 認証に失敗したメールについて何をするか _dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

TXTレコードは文字列ごとに255バイトに制限されていますが、単一のレコードは連結される複数の文字列を含むことができます。255バイトを超えるSPFレコードはこのように分割する必要があります。

Null MX — RFC 7505

メールを受け入れないドメインはNull MXレコード—優先度が0で"."(ルート)を指すMX—を公開できます。これは送信サーバーに配信を試みないよう指示し、遅延とバウンスを回避します:

no-reply.example.com. IN MX 0 .

TTLとキャッシング

すべてのDNSレコードには、リゾルバーがどのくらい長く結果をキャッシュするかを制御するTTL(有効期限)があります。MXレコードの場合、典型的なTTLは300から3600秒の範囲です。低いTTLはより高速なフェイルオーバーを可能にしますが、DNSクエリの量を増加させます。移行中に、キャッシュされたレコードが変更前に期限切れになるように、事前にTTLを削減してください。

DNSルックアップの例

user@example.comへの配信のための完全なDNSルックアップシーケンス:

# ステップ1:MXレコードのクエリ $ dig example.com MX +short 10 mx1.example.com. 20 mx2.example.com. # ステップ2:推奨MXホスト名を解決 $ dig mx1.example.com A +short 198.51.100.25 $ dig mx1.example.com AAAA +short 2001:db8::25 # ステップ3:送信ドメインのSPFをチェック $ dig example.com TXT +short "v=spf1 include:mailertogo.com ~all" # ステップ4:DMARCポリシーをチェック $ dig _dmarc.example.com TXT +short "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"

よくある間違い

配信性への影響

Related RFCs