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
实现相同的结果。
我的理解正确吗?
答案1
不,您对 spf 记录的解释是错误的。
a
不是指“完整域”,而是指“任何 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)。
此外,这里还有其他具有特殊功能的条目:如果我想知道,我可以将我的所有邮件发送到哪里[电子邮件保护]然后我检查域 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 的邮件交换器(所有邮件地址如下[电子邮件保护]),那可能是完全不同的东西……