web-dev-qa-db-ja.com

MXレコードがIPアドレスをポイントできないのはなぜですか?

私はあなたを理解していますすべきではありませんMXレコードを直接IPアドレスに向けますが、すべきです代わりに、それをAレコードにポイントします。これは、次に、メールサーバーのIPアドレスをポイントします。

しかし、原則として、なぜが必要ですか?

93
dayuloli

MXレコードの背後にある全体的なアイデアは、Hostまたはhostsを指定することですドメインのメールを受け付けることができます。 RFC 1035 で指定されているように、MXレコードにはドメイン名が含まれています。したがって、それ自体がDNSで解決できるホストを指す必要があります。 IPアドレスは、非修飾ドメイン名として解釈され、解決できないため、使用できませんでした。

仕様が最初に作成された1980年代のこの理由は、今日の理由とほとんど同じです。ホストは複数のネットワークに接続され、複数のプロトコルを使用する場合があります。

80年代に戻ると、TCP/IPを使用する(比較的新しい)インターネットと、他のプロトコルを使用することが多い他のレガシーネットワークの両方に接続するメールゲートウェイを持つことは珍しくありませんでした。このようにMXを指定すると、- Chaosnet など、インターネット以外のネットワーク上のそのようなホストに到達する方法を特定できるDNSレコードが許可されました。しかし実際には、これはほとんど起こりませんでした。事実上誰もが、代わりにインターネットの一部になるようにネットワークを再設計しました。

今日の状況は、ホストが複数のプロトコル(IPv4およびIPv6)と各プロトコルの複数のIPアドレスによって到達される可能性があるということです。 1つのMXレコードで複数のアドレスをリストすることはできないため、唯一のオプションはホストをポイントすることで、そのホストのすべてのアドレスを検索できます。 (パフォーマンスの最適化として、DNSサーバーは、信頼できるレコードがホストにある場合、応答の追加セクションでホストのアドレスレコードを送信し、往復を節約します。)

メールエクスチェンジャーがサードパーティ(Google AppsやOffice 365など)から提供されている場合にも発生します。 MXレコードでホスト名を指定しますが、サービスプロバイダーがメールサーバーのIPアドレスを変更する必要がある場合があります。ホストを指定したので、サービスプロバイダーはこれを透過的に行うことができ、レコードに変更を加える必要はありません。

91
Michael Hampton

プロトコルとしてのDNSにはいくつかの異なるタイプの値があり、これらは交換できません。

DNSは、レコードのタイプとそのようなレコードが保持するデータのタイプとの間の厳密なマッピングを持つバイナリプロトコルであることに注意することが重要です。

例えば:
AレコードはIPv4アドレス(4バイトのデータ、固定長)を保持します。
AAAArecordは、IPv6アドレス(16バイトのデータ、固定長)を保持します。

一方、MXレコードはname<int number of bytes> <label> <int number of bytes> <label> <int 0>形式のラベルのシーケンス、可変長)を保持します。

MXレコードがデータとしてIPアドレスを持つことは可能ではありません。

19

これは推測として捨てます。もちろん、私はインフルエンザで家にいるので、多分ルーピーです。

RFC 974は次のように述べています。

ローカルのメーラーの最初のステップは、REMOTEのMX RRのクエリを発行することです。メーラーがメッセージを送信しようとするたびに、この手順を実行することを強くお勧めします。ドメインデータベースの変更がメーラーによって急速に使用され、ドメイン管理者がドメインデータベースを変更するだけで、欠陥のあるホストの送信中メッセージを再ルーティングできることが期待されます。

IPの代わりに名前を要求することにより、この手法を強制的に奨励します。名前は同じままでかまいません。ロードバランシングまたはDRの場合、MXレコード自体の変更やDNSの伝播の待機について心配する必要はありません。

6
TheCleaner

一部のメールサーバー(eximなど)は、純粋なIPアドレスを指すMXレコードへの送信を明確に許可していないため、準拠するためにFQDNを使用する必要があります。これは、ほとんどのサーバーがMXレコードにIPではなくホスト名を含めることを期待しているためです(これがAレコードの目的です)。

編集:詳述すると、DNSでは、各レコードには、各レコードが保持できるデータのタイプに関する厳しい要件があります。 MXレコードの場合、これはホスト名onlyです。

3
Nathan C

IN RFC 1025 MXレコードは、AレコードまたはCNAMEのRR(リソースレコード)のみを指します。

したがって、メールを送信するメールサーバーはMXレコードのRRを要求し、mxレコードはサーバーのAレコードを一覧表示します。メールサーバーは前方参照を実行してAレコードを取得し、次にリストされているサービスHostにsmtpを介してメールを転送しますそのドメインのメールを受信することを「希望」するメールサーバー。

あなたの質問-メールがIPアドレスに送信されない理由

対応-信頼のため

メールに関して実施されているルールの多くは、ドメイン間で送受信されるメッセージが実際に有効であるという信頼を維持するために進化しています。これらはすべて最終的にスパムを減らすことです。

  • 逆IPルックアップ
  • その問題のフォワードネームルックアップ

メールサーバーを構築するための基盤として必要なこれらのすべてのコンポーネントには、信頼できる通信を作成し、信頼できない通信を削減するために少なくともいくつかの小さなコンポーネントが組み込まれています。

リファレンス-RFC 1035および974

https://www.ietf.org/rfc/rfc1035.txt35

https://www.ietf.org/rfc/rfc974.txt

2
Citizen

MXrecordsの目的は、アプリケーション(メール転送)が、使用するホストについて学習できるようにすることです。アプリケーションレベルでは、Host namesを使用するのが適切です(IPアドレスではありません)。

また、DNSにバリアントタイプのレコードのコンコットを追加すると、複雑さのレベルが高まり、問題、実装の問題、セキュリティの課題への入り口となります。例えば、 1.2.3.4.example.com.は有効なホスト名です(そうです、RFC1034、3.5を考慮しても)。 example.comのバインド構成ファイルでこのホストをMXとして指定すると、次のようになります。

.  MX 10  1.2.3.4

そして、おそらくそれは、IPを備えたMXレコードがどのように見えるかとまったく同じです。 DNSデータグラムで情報を転送する場合でも、いくつかの風変わりなadditoinが必要です。最も簡単な方法は、曖昧さをなくすためにnewリソースレコードタイプMXAを導入することです。しかし、もう一度、なぜこのような新しいレコードタイプの負担を導入するのか

. MXA 10 5.6.7.8

常に置き換えることができます

. MX 10 dummy
dummy A 5.6.7.8

(そしてMXAレコードを知らないDNSクライアントでもサポートされます)?

2