由於 DNS 配置,未收到來自某些發件人的郵件
我注意到我的Google應用程序域的一種特殊行為。大多數郵件都如您所願通過,但一段時間後我得出的結論是,來自某些發件人的郵件沒有通過。在確定了一個這樣的發件人之後,他的郵件無法通過,我讓他嘗試給我發一封電子郵件並將“傳遞失敗”的回復轉發到我的正常 gmail。
傳遞失敗響應包含以下程式碼段:
—– 會話記錄如下 —–
<myusername@GHS.L.GOOGLE.COM>
… 延遲:與 ghs.l.google.com 的連接超時。這幫助我通過快速搜尋找到了問題,這將我帶到了 Google Apps 幫助論壇上的這個頁面。事實上,我檢查了我的域的 DNS 記錄,並
@
設置為 ghs.google.com。(CNAME),它不應該是。將其更改為@ 74.125.93.121 (A)
* 解決了問題。我知道在郵件無法通過的情況下,我的域名通過 CNAME 查找被它的規範名稱替換,因此郵件被發送到
myusername@ghs.l.google.com
而不是myusername@mydomain.com
. **但為什麼它對絕大多數發件人有效?**郵件無法通過的發件人是否使用了某種不同類型的郵件協議、一些奇怪的 DNS 設置,或者可能是什麼?從我在Google上研究這個問題可以看出,這似乎是一個廣泛存在的問題(很多人抱怨來自戰網的電子郵件沒有通過,這將是一個流行的例子),只是人們似乎沒有請注意,問題在於他們自己的 DNS 設置,而不是發件人方面。
那麼這該如何解釋呢?
- 我使用這個 IP 是因為我在這裡讀到的內容,但我認為任何 IP 都可以解決問題。誰能證實這一點?請注意,簡單地刪除
@
記錄並不能解決問題,必須對其進行更改。
來自 RFC 2821“簡單郵件傳輸協議”,第 5 節“地址解析和郵件處理”:
查找首先嘗試查找與該名稱關聯的 MX 記錄。如果改為找到 CNAME 記錄,則處理結果名稱,就好像它是初始名稱一樣。
通常,這就是 CNAME 的工作方式。它們經常被誤用、誤讀和誤用。:-)
如果您的域是 example.com,那麼您可能有現有的 MX 記錄指向通常的 Google Apps 主機。
example.com. MX 10 ASPMX.L.GOOGLE.COM. example.com. MX 20 ALT1.ASPMX.L.GOOGLE.COM. example.com. MX 20 ALT2.ASPMX.L.GOOGLE.COM. example.com. MX 30 ASPMX2.GOOGLEMAIL.COM. example.com. MX 30 ASPMX3.GOOGLMAILE.COM. example.com. MX 30 ASPMX4.GOOGLEMAIL.COM. example.com. MX 30 ASPMX5.GOOGLEMAIL.COM.
聽起來您也有這樣的條目:
example.com. CNAME ghs.l.google.com.
RFC 1034“域概念和設施”第 3.6.2 節“別名和規範名稱”中的狀態建議不要使用此配置:
如果 CNAME RR 出現在節點上,則不應出現其他數據;這可確保規範名稱及其別名的數據不能不同。
對於您粘貼的錯誤,發送端的郵件伺服器和/或 DNS 伺服器嘗試查找您的域 example.com 的 MX 記錄,並找到指向 ghs.l.google 的 CNAME。 com。然後它嘗試查找 ghs.l.google.com 的 MX 記錄。該域目前沒有任何 MX 記錄,因此郵件伺服器將掉入 ghs.l.google.com 的 A 記錄。該 IP 地址未在 SMTP 埠上偵聽,因此結果是錯誤“與 ghs.l.google.com 的連接超時”。
通過刪除 CNAME 記錄,您已經解決了您的郵件問題。如果您在其位置定義的 IP 地址在 Google 端發生更改,您可能會遇到問題。
您可以改為為 www.example.com 定義 cname:
www.example.com. CNAME ghs.l.google.com.
並在您指向 example.com 的任何 IP 上執行一個小型網路伺服器,它只是將 HTTP 重定向到http://www.example.com/
它工作得和它一樣好有點令人驚訝。我相信,Postel 定律在那裡得到了一些讚譽。:-)
回到 RFC 1034 2.6.2:
CNAME RR 會導致 DNS 軟體中的特殊操作。當名稱伺服器未能在與域名關聯的資源集中找到所需的 RR 時,它會檢查資源集是否包含具有匹配類的 CNAME 記錄。如果是,則名稱伺服器在響應中包含 CNAME 記錄,並在 CNAME 記錄的數據欄位中指定的域名處重新開始查詢。此規則的一個例外是不重新啟動與 CNAME 類型匹配的查詢。
因此,在這種情況下,可以說 DNS 伺服器將/不應該在 MX 查找中遵循 CNAME,除非沒有找到 MX 記錄。
發送郵件時,Sendmail 和 qmail(以及可能的其他郵件)預設會嘗試將電子郵件地址右側使用的任何 CNAME 重寫為規範名稱。
事實上,一些網站依賴於這種行為。djb 在他的“郵件中的 CNAME 記錄”文件中詳細說明了他認為人們應該停止依賴它的原因。