web-dev-qa-db-ja.com

DNS:MXレコードとCNAMEの両方を必要とするサブドメイン

ゾーンmywebservice.comを所有しているとしましょう。

顧客ごとに、customer.mywebservice.comなどの独自のサブドメインを取得してほしい。

customer.mywebservice.comは、特定のサーバーオフサイトへのCNAMEである必要があります。そのサイトは独自の機器を管理し、いつでもアドレスを変更できるため、CNAMEは必須です。

また、人々は[email protected]に電子メールを送信できる必要があります。これには単純なMXレコードが必要です。

ただし、ここでいくつかのガイダンスが必要です。

RFC 1034 によると:

If a CNAME RR is present at a node, no other data should be
present; this ensures that the data for a canonical name and its aliases
cannot be different.

また、DNSサーバーがCNAMEを使用するホストに対してCNAME以外のサービスを提供することを拒否することも確認しました。

だから、私は敗北の状況を持っているようです。 MXレコードを使用する場合は、CNAMEではなくAを使用する必要があります。

誰かが何らかの回避策を考えることができますか?ありがとう!

18
Michael Gorsuch

残念ながら、実行しているのはDNS仕様の制限です。 CNAMEレコードとして定義されているのと同じホスト名のMXレコードを持つことは、ほとんどのDNSサーバー実装で失敗します。一部の古いDNSサーバーはこれを許可しますが、より安全な新しい実装のために、ほとんどが段階的に廃止されています。

CNAMEレコードを使用する代わりに、名前にエイリアスを付ける代わりに、顧客サイトのIPアドレスを直接含む「A」レコードを使用する必要があります。

21
Justin Scott

ここで多くの作業と研究を行った結果、許容できる解決策を見つけました。まず、私たち全員がRFCに従うことが重要です。 RFCに違反するようにDNSサーバーにパッチを適用したところ、他のいくつかの主要なDNSサーバーは変更を尊重しないことがわかりました。

適切な方法は、CNAMEが指すホストにMXを配置することです。したがって、customer.mywebservice.comがAレコードloadbalancer.mywebservice.comのCNAMEである場合は、loadbalancer.mywebservice.comのMXレコードも作成するのが適切です。これがすべての主要なリゾルバで機能することを確認しました。

MXクエリがcustomer.mywebservice.comに対して行われた場合、リゾルバライブラリはCNAMEに従い、最後のAレコードの適切なMXを取得します。フラー!

18
Michael Gorsuch

customer.mywebservice.comは、特定のサーバーオフサイトへのCNAMEである必要があります。そのサイトは独自の機器を管理し、いつでもアドレスを変更できるため、CNAMEは必須です。

誰かが何らかの回避策を考えることができますか?ありがとう!

顧客が住所を変更できる必要があるという要件がありますが、顧客が自分のレコードを動的に更新できるようにすることを検討しましたか?動的DNSを使用すると、Aレコードを使用でき、顧客は必要に応じてレコードを変更できます。少し手間はかかりますが、個々のサブドメインを個別のゾーンとして作成することで、顧客が自分のゾーンのみにアクセスできるようにすることができます。

まだ試していませんが、 gnudip は、認証を処理したりDNSサーバーに多数のゾーンを設定したりすることなく動的更新を容易にするオープンソースツールのようです。

4
Zoredache

MXレコードがこれらすべてのレコードで同じになる場合は、DNAMEを使用してXYZ.mywebservice.comをhosting.mywebservice.comにリダイレクトしようとすることができます。 hosting.mywebservice.comの下に、関連するMXレコードとAレコードを追加します。

私はDNAMEレコードを実稼働で利用したことがないことを言わなければなりませんが、それらについての詳細は RFC2672 で読むことができます。

3
Doug Luxem

Customer.mywebservice.com CNAMEのRHSにはMXエントリがありますか?

その場合、メールサーバーはそのMXを使用して、使用するメールサーバーを見つけます。うまくいけば、それを制御できます。

3
MikeyB

Michael Gorsuchの答えはほぼ正しく、CNAME-> A + MXチェーンは機能します... ほとんど。ただし、特定のMTAでいくつかの悪い動作を引き起こします。適切な規模でこのソリューションを実行していることがわかったもの:

  • 一部のMTAは単にレコードの検索を拒否します。
  • 他の人は、CNAMEがあるはずのAレコードを誤って置き換えます。つまり、「[email protected]」にメールを送信し、CNAMESは、mail.example.comのMXを持つweb.example.comに送信します。 MTAはエンベロープヘッダーを "To:[email protected]"に書き換えます。

これらの問題がどの程度蔓延しているのかはまだはっきりしていませんが(google/hotmail/yahoo/etcすべてがこれを正しく処理しているようです)、確かに彼らはより良い解決策を模索しています。

1
osheroff

考えられる有効な解決策は、すべての顧客の基本的なホスト名を作成し、それをオフサイトWebサーバーとmxのaおよびaaaaレコードに設定し、すべての顧客ドメインをその単一のホスト名にCNAMEすることです。そうすれば、オフサイトのIPアドレスが変更されたときに1つのレコードを変更するだけで済みます。

CNAMEは単なるaではなく、レコードの完全なセットのエイリアスであるため、これが唯一の価値と可能な方法です。

0
Bachsau