新機能とリリース

MXレコードが優先される理由 (そしてAレコードとNSレコードが優先されない理由)

特定のサブドメインを別のドメイン名のエイリアスとして設定する正規名 (Canonical Name) レコードである CNAME とは異なり、NS、A、およびMXレコードはすべて、特定の値に対して複数持つことができるDNSレコードタイプです。

 ただし、MXレコードの優先順位が高く、MXレコードはこれら3つのレコードタイプの中でも特別です。この記事でMXレコードが特別な理由を確認していきましょう。

MXレコードが優先される理由

  通常、MXレコード(Mail eXchanger レコード) は、ドメイン名のメールサーバーを示すために使用されます。名前、TTL(存続時間)、タイプ、値などの標準のDNSレコードフィールドに加えて、MXレコードにも優先度フィールドがあります。

優先度フィールドの値が低いほど、優先度は高くなります。  一般的なMXレコードの実装には、様々なレベルの優先度を持つ2つ以上のMXレコードがあります。例えば、Gandiのメールサービスに必要なMXレコードは次のとおりです。  

@ 1800 IN MX 50 fb.mail.gandi.net.
@ 1800 IN MX 10 spool.mail.gandi.net.

メールサーバー fb.mail.gandi.net の優先度は「50」で、サーバー spool.mail.gandi.net の優先度は「10」です。 優先度は、これらのメールサーバーがメールの配信を試みるメールサーバーによって試行される順序を示します。 Gandiのメールサービスに配信しようとするメールサーバーは、優先度が「10」であるため、最初に spool.mail.gandi.net に配信しようとします。

ただし、それが機能しない場合は、fb.mail.gandi.net を試します (優先度は「50」であるため)。

そうすれば、何らかの理由で spool.mail.gandi.net が利用できない、ビジー状態である、またはオフラインの場合、代わりにメールを fb.mail.gandi.net に配信できます。

AレコードとNSレコードも優先されないのはなぜですか?

AレコードやNSレコードなどの他のレコードも同様の目的を達成します。 Gandi の LiveDNS サービスは、次のNSレコードを使用します。  

@ 172800 IN NS ns-89-c.gandi.net.
@ 172800 IN NS ns-32-b.gandi.net.
@ 172800 IN NS ns-202-a.gandi.net.

ns-89-c.gandi.net が利用できない場合、DNSリゾルバ は ns-32-b.gandi.net または ns-202-a.gandi.net に連絡して、探している答えを得ることができます。  同様に、同じコンテンツをホストしている異なるウェブサーバーを指す2つのAレコードを追加できます。

最初のレコードがダウンしているか利用できない場合、訪問者は2番目のレコードを試すことができます。  ただし、AレコードとNSレコードにはこの種のフォールバックメカニズムが機能する必要がなく、優先順位がありません。

MXレコードに優先順位が必要なのはなぜですか?

複数のMXレコードを持つことは、上記のように単にフォールバックを提供するよりも複雑です。  通常、MXレコードが最も高い優先度で指すサーバーは、受信メールを処理するサーバーです。フォールバックは実際にはメールを配信せず、最優先サーバーが再び使用可能になったときにキューに入れます。つまり、どのメールサーバーを最初に試すかが実際に重要です。

ただし、どのウェブサーバーまたはネームサーバーが特定のリクエストを受け取るかは重要ではありません。 これはインターネット上でメールの配信に数日かかったり、メールサーバーが頻繁にダウンして重要なメールの配信に時間がかかっていた時代から残る慣習のようなものです。

同じタイプのレコードを復数追加することについて

Aレコードに優先順位がないため、実際にはラウンドロビンDNSと呼ばれるものに使用できます。これはDNSベースの負荷分散技術であり、複数の冗長ウェブサーバーを使用し、それぞれを指すAレコードが追加されます。 理論的にはリストはクエリが実行されるたびにランダムな順序で表示されるため、ウェブサイトをホストしているウェブサーバーのIPアドレスのランダムなリストが生成されます。

 同じキャッシュを使用する人は誰でも最初に同じウェブサーバーを試すため、キャッシュを利用している場合は上記の仕組みを利用できません。  また、Aレコードに優先順位がある場合、上記のようなDNSの仕組みは全く機能しないでしょう。