Domain-Name-System

DNS:同時需要 MX 記錄和 CNAME 的子域

  • May 21, 2021

假設我們擁有 mywebservice.com 區域。

我希望我的每個客戶都有自己的子域,例如 customer.mywebservice.com。

customer.mywebservice.com 需要是給定伺服器異地的 CNAME。由於該站點管理自己的設備並且可以隨時更改地址,因此 CNAME 是必需的。

人們還需要能夠向 inbox@customer.mywebservice.com 發送電子郵件,這需要一個簡單的 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 之外的任何內容。

所以,看來我可能有一個失敗的情況。如果我想使用 MX 記錄,我需要使用 A 而不是 CNAME。

誰能想到任何解決方法?謝謝!

不幸的是,您遇到的是 DNS 規範的限制。在大多數 DNS 伺服器實現中,擁有與定義為 CNAME 記錄相同的主機名的 MX 記錄將失敗。一些較舊的 DNS 伺服器將允許這樣做,但它們大多已被淘汰,以支持更新、更安全的實施。

您需要直接使用帶有客戶站點 IP 地址的“A”記錄而不是使用別名記錄,而不是使用 CNAME 記錄。

經過大量的工作和研究,我找到了一個可以接受的解決方案。首先,重要的是我們都遵循 RFC。我修補了我的 DNS 伺服器以違反 RFC,我發現其他幾個主要的 DNS 伺服器不會遵守更改。

適當的舉措是將 MX 放在 CNAME 指向的主機上。因此,如果 customer.mywebservice.com 是 A 記錄 loadbalancer.mywebservice.com 的 CNAME,則還可以為 loadbalancer.mywebservice.com 建構一個 MX 記錄。我已經驗證這適用於所有主要的解析器。

如果對 customer.mywebservice.com 進行 MX 查詢,解析器庫將遵循 CNAME 並為最終 A 記錄獲取正確的 MX。歡呼!

引用自:https://serverfault.com/questions/18000