什么是 SPF 记录?
什么是 SPF 记录?
SPF 记录是用来控制哪些服务器可以使用您的域名发送电子邮件的重要工具。关于 SPF 记录在防止电子邮件欺骗中的作用的更完整信息可在此处获得(注:此处应有链接或参考),且在 cPanel 中的“电子邮件认证”功能或通过外部 SPF 生成器提供了高质量的工具,即使不了解其工作原理,也能方便地创建 SPF 记录。本文是一篇深入教程,将为希望更好理解 SPF 记录语法的读者提供详细信息。我们关于欺骗问题的文章详细介绍了如何创建 SPF 记录,本文将在此基础上补充有关在高级 DNS 编辑器中创建 TXT 记录时如何格式化 TXT 数据字段内容的具体信息。
本文将分为几个部分:
- SPF 记录应包含哪些内容? ⤵
- SPF 记录中可以使用哪些操作符? ⤵
- SPF 记录中可以使用哪些参数? ⤵
- 参数应按什么顺序排列? ⤵
SPF 记录应包含哪些内容?
一个基本的 SPF 记录应由三部分组成。第一部分是标识 TXT 数据为 SPF 记录的前缀。该前缀后应跟一个被授权使用该域发送邮件的服务器和主机列表。最后,基本 SPF 记录应包含一个明确拒绝作为该用户发送邮件的服务器列表。最后一部分通常简写为所有未被明确授权的服务器。以下是一个托管在共享 HostGator 服务器上的域的自动生成 SPF 记录示例及其各部分解析:
v=spf1 a mx include:websitewelcome.com ~all
- SPF 前缀:v=spf1
- 授权使用该域发送邮件的服务器和主机列表:a mx include:websitewelcome.com
该部分具体包括:
- 如果邮件来自与该域的 A 记录匹配的 IP。
- 如果邮件来自与该域的 MX 记录匹配的 IP。
- 如果邮件符合 websitewelcome.com SPF 记录的任何规则。
- 对未被明确允许发送邮件的服务器进行软失败:~all
SPF 记录中可以使用哪些操作符?
以下是 SPF 记录中可用的操作符及其含义:
- “+” 这是“通过”操作符。如果使用此操作符的参数适用于邮件,则该邮件将被允许通过授权。如果参数未指定操作符,则默认视为“+”
例如,以下两个记录将被视为相同:
v=spf1 a ~all
v=spf1 +a ~all
- “-” 这是“失败”操作符。任何匹配此操作符参数的邮件将被明确拒绝。
- “~” 这是“软失败”操作符。任何匹配此操作符参数的邮件将被允许通过,但会被标记为垃圾邮件。
- “?” 这是“中立”操作符。匹配此操作符参数的邮件既不会被主动拒绝,也不会被允许通过。
SPF 记录中可以使用哪些参数?
以下是 SPF 记录中可用来制定规则的所有参数列表:
- all
- ip4
- ip6
- a
- mx
- ptr
- include
- exists
创建良好 SPF 记录最重要的参数是“all”参数。“all”参数包含所有未被 SPF 记录中先前规则涵盖的 IP 地址和主机名。在以下示例 SPF 记录中,由于在 all 参数之前没有其他规则,所有从该域发送的邮件都会软失败:
v=spf1 ~all
SPF 记录还可以使用“ip4”和“ip6”标签接受完整的 IPv4 或 IPv6 地址作为参数。以下示例 SPF 记录将标记来自 IP 地址 127.0.0.1 和 2001:0db8:85a3:0042:1000:8a2e:0370:7334 的邮件为授权,其他邮件软失败:
v=spf1 ip4:127.0.0.1 ip6:2001:0db8:85a3:0042:1000:8a2e:0370:7334 ~all
SPF 记录还可以接受“a”、“mx”或“ptr”作为参数,允许 SPF 记录自引用为其创建 SPF 的域的现有 A 记录、MX 记录或 PTR 记录。例如,如果为 example1.com 创建以下 SPF 记录,则来自匹配 example1.com 的 A、MX 或 PTR 记录的 IP 地址的邮件将被允许使用 example1.com 发送邮件,其他邮件软失败:
v=spf1 a mx ptr ~all
这些参数也可用于包含其他域的记录。例如,要授权来自匹配 example2.com 的 MX 记录的 IP 和匹配 example3.com 的 PTR 记录的 IP 发送邮件,可使用以下语法:
v=spf1 mx:example2.com ptr:example3.com ~all
SPF 记录还可以使用 include 参数包含其他域的 SPF 记录。以下示例将标记任何被 websitewelcome.com SPF 记录允许发送邮件的邮件为授权,其他邮件软失败:
v=spf1 include:websitewelcome.com ~all
SPF 记录还可以使用“exists”参数授权如果某域存在 A 记录,则允许该域发送邮件。无论该域名的 IP 地址是否与邮件的发起 IP 匹配,都不影响授权。关键是该域应存在 A 记录,仅此而已。例如,在以下示例中,如果 example2.com 存在 A 记录,则邮件被授权,否则软失败:
v=spf1 exists:example2.com ~all
参数应按什么顺序排列?
参数从左到右处理。一旦找到与发送邮件服务器信息匹配的参数,则遵循该规则,忽略记录的其余部分。基于此,参数应按更具体的规则放在更通用规则之前排列。例如,以下记录将无法正确工作:
v=spf1 ~all +ip4:127.0.0.1
在此规则中,“all”参数带有软失败规则,位于允许规则“ip4:127.0.0.1”之前,这将导致使用“ip4:127.0.0.1”的规则始终被忽略。原因是如果邮件来自“ip4:127.0.0.1”,它包含在 all 参数中,因此在处理允许规则之前会被软失败。
正确格式化记录以授权来自 127.0.0.1 IP 地址的邮件的方式如下:
v=spf1 +ip4:127.0.0.1 ~all
如有任何疑问或需要协助,请通过电话或聊天联系我们。