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


89

MXレコードをIPアドレスで直接ポイントするのでなく、レコードをポイントして、メールサーバーのIPアドレスをポイントする必要があることを理解してます。A

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


MXレコードを設定できる場合は、Aレコードも設定できます。ここには問題はありません。
-joshudson

26
@joshudsonそれはまったく問題ではなく、単に他の人が何をするのかを追うのではなく、なぜ私がその理由を理解しようとしているだけです。
Dayuloli

CloudFlareで試しました。MXレコードの値としてIPアドレスを受け入れません。
-LinuxBabe

SPFレコードを追加するまでこれを気にせず、ルックアップが多すぎました。いくつかを切り取る別の方法を見つけなければなりませんでした。
gbryant

回答:


90

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

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

80年代に、TCP / IPを使用する(比較的新しい)インターネットと、他のプロトコルを使用することが多い他のレガシーネットワークの両方に接続するメールゲートウェイが存在することは珍しくありませんでした。この方法でMXを指定すると、DNSレコードを許可して、Chaosnetなどのインターネット以外のネットワーク上のそのようなホストに到達する方法を識別できます。しかし実際には、これはほとんど起こりませんでした。事実上すべての人がネットワークをリエンジニアリングして、代わりにインターネットの一部になりました。

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

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


2
IPアドレスとの互換性を実際に妨げているわけではありません。実際、ほとんどのSMTPサーバー/クライアントは、私が行った小さなテストのMXレコードのIPアドレスで問題なく動作します。意図は、IPアドレスを一括して使用することを業界が思いとどまらせることだったと思います-そのルールが個別に述べられていなかったなら、それは起こりそうだったであろうことです-ケースバイケースではなく。したがって、「必要」ではなく「すべき」です。しかし、素晴らしい情報のために+1。私はそのほとんどを考えたことがありませんでした。
ゼネクサー

16
@Zenexer交通法は、何が安全で何が安全でないかを正確に知っている比較的少数の専門ドライバーの不便さのためにありません。彼らは、自分たちが何をしているのかを知っているが、知らないと考える、非常に大規模なクソバカのサブセットのために存在しています。
シャドゥール

7
@Zenexer特定のMTAが今日それを許容し、明日は許容しないことがあります。結局のところ、標準で許可されている動作ではありません。そしてもちろん、すべてのMTAがサポートしているわけではありません。したがって、これを行うことでメールの損失が保証されます。
マイケルハンプトン

1
@MichaelHampton:MXレコードが場合はすべきで IPアドレスの代わりにホスト名が含まれている場合、MTAがしなければならない IPアドレスを受け入れます。MXレコードがあれば仮に、しなければならないホスト名が含まれ、その後MTAは、すべきである IPアドレスを受け入れます。これがRFCの仕組みです。「SHOULD」実装アドバイスのカウンターパーティは、アドバイスに従うという仮定に基づいて最適化できますが、それでできることはほとんどすべてです。
MSalters

2
@MSalters混乱していると思います。何も言ってはいけません。確かに、MXレコードにはホスト名が含まれている必要があり、これもRFCが言っていることです。
マイケルハンプトン

18

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

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

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

MXレコードは、他の一方で、保持している名前(形式のラベルの配列<int number of bytes> <label> <int number of bytes> <label> <int 0>、可変長)。

そうではありません可能性のためにMX、レコードがデータとしてIPアドレスを持っています。


ラベルをIPアドレスのテキスト表現にすることもできますが、ホスト名として解決できないため、そうすることは意味がありません。
マイケルハンプトン

@MichaelHampton確かに、通常の人間に優しい表現では一見IPv4アドレスのように見えるすべて数字のラベルが付いた名前を持つことが可能です。しかし、それは問題になると実際には何も変わりませんが、それはまだ名前であるため、名前のように処理されます(少なくともパブリックインターネットでは単なる名前ですNXDOMAIN)。
ホーカンLindqvist

これは、OPの質問に実際には答えません。あなたは基本的に「そういう風になっているから」と言います。
dr01

@ dr01質問が「現状」に気付かないことを明確に示していることを考慮すると(実際にはIPアドレスでMXレコードを指すべきではなく、Aレコードを指すべきです)、実際には可能性がない名前以外の値を持っている)、物事がどのようになっているのか、それが他のオプションを不可能にする理由を指摘するのは場違いだとは思わない。私はあなたが実際にそこにない質問に多くを読んでいると感じています。
ホーカンLindqvist

@ dr01つまり、質問はDNSの初期の設計決定に関する学術的な質問やそのようなものとは思わず、単にMX世界に実際に存在するレコードをどのように使用できるか、または使用すべきかという質問です。
ホーカンLindqvist

6

推測としてこれを捨てます。もちろん、私はインフルエンザにかかっているので、たぶん私は気が狂います。

RFC 974の状態:

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

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


8
インフルエンザにかかっている間、休みの日にスタック交換の質問に答えます。
マイクB

3

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

編集:詳細を述べると、DNSの各レコードには、各レコードが保持できるデータの種類に関する厳しい要件があります。MXレコードの場合、ホスト名のみです。


では、eximが最初にMXレコードがIPアドレスを指すことを許可しなかったのはなぜですか?私には奇妙に思えます!私は慣例のためにすべきではないことを理解していますが、なぜそれが違法にされるの理解ていません。
-dayuloli

1
MXレコードが値としてIPアドレスを持つことはできないため、MTAがこれをどのようにサポートできるかわかりません。
ホーカンLindqvist

@HåkanLindqvist上記のあなたの答えはこの点を明確にしてくれました!ありがとうございました!
-dayuloli

2

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

したがって、メールを送信するメールサーバーはMXレコードのRRを要求し、mxレコードはサーバーのAレコードをリストし、メールサーバーは前方参照を行ってAレコードを取得し、smtpを介してリストされているサービスホストにメールを転送しますそのドメインのメールを「喜んで」受信するメールサーバー。

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

応答-信頼のため

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

  • 逆IPルックアップ
  • その問題の前方参照

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

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

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

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


2

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

また、DNSにバリアントタイプレコードの構想を追加すると、複雑化のてこが発生するため、問題、実装の失敗、セキュリティの課題の入り口になります。たとえば1.2.3.4.example.com.、有効なホスト名です(はい、RFC1034、3.5の観点からもそうです)。MXexample.comのバインド構成ファイルでこのホストを指定すると次のようになります

.  MX 10  1.2.3.4

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

. MXA 10 5.6.7.8

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

. MX 10 dummy
dummy A 5.6.7.8

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.