對於 SPF 記錄,‘a’ 和 ‘mx’ 在很多情況下會達到相同的結果嗎?
範例 DNS 記錄:
Type: TXT Hostname: example.com Value: returns v=spf1 a ~all Type: A Hostname: mail.example.com Value: 1.1.1.1 Type: AAAA Hostname: mail.example.com Value: 1000:1:1:1:1:1:0001 Type: MX Hostname: example.com Value: mail.example.com
在上面的範例中,SPF 記錄使用該
a
機制。如果我正確理解 SPF,這意味著郵件伺服器將允許來自目前域的郵件通過。在這種情況下example.com
。但是,如果我使用
mx
了郵件伺服器,那麼來自任何域的郵件都會MX
在該伺服器上有記錄。因此,對於這樣的基本設置
a
並mx
獲得相同的結果。我理解正確嗎?
不,您對 spf 記錄的解釋是錯誤的。
a
並不意味著“完整的域”,而是“任何 a- 類型的域記錄”。在您給定的範例中,僅接受來自唯一給定記錄“mail.example.com”的郵件。如果還有其他條目,例如:
類型:A
主機名:example.com
值:1.1.1.2
類型:A
主機名:www.example.com
值:1.1.1.3
類型:A
主機名:www2.example.com
值:1.1.1.4
然後來自 example.com(主機,而不是域)、www.example.com 和 www2.example.com 的郵件也將被接受,而
v=spf1 mx
只允許來自 mail.example.com 的郵件作為唯一的 mx 記錄。答案到此結束,但我認為——從你的另一個問題來看——你可能需要一些 DNS 基礎知識才能真正理解發生了什麼。
網際網路(以及每個專用網路)甚至不需要一個主機名即可正常工作。它所需要的只是找到其中每個節點的地址。不幸的是,人類不喜歡像 172.217.23.163 或 10101100110110010001011110100011 這樣的數字,因為它們很難記住。這(一個原因)為什麼我們給數字命名,例如 www.google.de(是的,數字代表分配給該主機名的一個 ip)。
電腦不知道如何處理名稱,它們需要地址。這就是 DNS 的用途:將人名轉換為網路可以使用的地址。
a 記錄是翻譯表中的一個條目。它將名稱 (mail.example.com) 分配給地址 (1.1.1.1)。
此外,這裡還有其他具有特殊功能的條目:如果我想知道,我可以在哪裡發送 something@example.com 的所有郵件,然後我檢查域 example.com 的 mx 類型條目(@- 符號後面的所有內容) . 我找到了一個可以直接告訴我發送到哪裡的條目:
類型:MX
主機名:example.com
值:1.1.1.1
或者它告訴我要查找的名稱:
類型:MX
主機名:example.com
值:mail.example.com
您可能已經看到,第二個地址將我們引向何處:這不是一個有效的地址……我們需要在 a- 記錄中查找它才能解決它。
這可能也從另一條評論中回答了您的問題:為什麼主機名“example.com”:因為這就是我們要尋找的:example.com 的 mx 條目。如果是
Hostname: mail.example.com
這樣,我們將查找子域 mail.example.com 的郵件交換器(所有郵件地址,如 someaddress@mail.example.com),這可能完全不同……