我一直在努力了解如何解决使用不同域名设置 SPF 的特定问题。我尝试搜索网络,但没有找到我想要的东西。
我的问题是,从我的网站发送的所有电子邮件目前都被发送到垃圾邮件箱。网站域名是exampleshop.com。但 G Suite 的 MX 记录是在示例.com并且 exampleshop.com 上的电子邮件来自[电子邮件保护]。
最初,我设置了以下 SPF txt 记录:“v=spf1 include:_spf.google.com ~all”。但后来我将其更改为“v=spf1 include:_spf.google.com include:exampleshop.com ~all”,以包含从网站发送的内容。
但是当我使用 MX Toolbox 时,出现了错误。它显示“包含的域没有有效的 SPF 记录:exampleshop.com”。这让我相信我需要在 exampleshop.com 域上添加 SPF txt 记录。这是正确的吗?如果正确,我应该在那里添加什么?
答案1
我重新阅读了您的问题,发现您有两个不同的域名:example.com 和 exampleshop.com。example.com 的电子邮件由 gmail 的服务器和网络服务器发送www.exampleshop.com因此 example.com 的 SPF 可能是这样的:
example.com IN TXT "v=spf1 include:_spf.google.com a:www.exampleshop.com ~all"
如果您像写 SPF 那样写,"v=spf1 include:_spf.google.com include:exampleshop.com ~all"
那么您告诉 example.com 电子邮件接收者,电子邮件可能是从 Google 的 SPF(include:_spf.google.com)和 exampleshop.com SPF(include:exampleshop.com)授权的 IP 发送的。要实现这一点,exampleshop.com 必须拥有自己的 SPF。例如:
example.com IN TXT "v=spf1 include:_spf.google.com include:exampleshop.com ~all"
exampleshop.com IN TXT "v=spf1 a ~all"
您可以使用这两个选项中的任意一个。
答案2
当您在 SPF 中使用 include 指令时,您是在告诉接收方邮件服务器检查该 SPF 策略。例如,如果您的域名是 example.com,并且您的 SPF 如下所示:v=spf1 include:_spf.google.com ~all
,当电子邮件服务器收到来自 example.com 的电子邮件时,它会向 DNS 服务器询问 example.com 的 SPF,它会得到v=spf1 include:_spf.google.com ~all
。然后它会查找 _spf.google.com 的 SPF,即:
v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all
邮件服务器递归查找所有包含指令。最后,这些包含的策略中必须包含一些 IP:
v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all
因此,就您而言,您的 SPF 注册表应该是这样的:
v=spf1 include:_spf.google.com mx a ip4:10.0.0.1 ~all
mx 选项允许 example.com MX 注册发送电子邮件,a 选项对 example.com 的 ip 执行相同的操作,最后,ip4 允许允许特定 IP 为您的域发送电子邮件。
问候,
答案3
在我的回答中,我猜测 exampleshop.com 和www.exampleshop.com具有相同的 IP,尽管这不可能是真的。
让我给你举个例子。假设你有一个域名 exampleshop.com,它使用 Gmail 的电子邮件服务器,但也从网络服务器发送电子邮件。DNS 注册可能如下所示:
exampleshop.com A -> 192.168.1.1
www.exampleshop.com A -> 192.168.1.2
exampleshop.com MX -> gmail's servers
exampleshop.com MX -> another server (optional)
如果我们想同时允许 Gmail 的服务器和www.exampleshop.com从我们的域名 (exampleshop.com) 发送电子邮件,SPF 可以是以下任一项:
v=spf1 include:_spf.google.com ip4:192.168.1.2 ~all
v=spf1 include:_spf.google.com a:www.exampleshop.com ~all
如果 exampleshop.com 和www.exampleshop.com具有相同的 IP(例如 192.168.1.1),那么您可以像这样编写 SPF:
v=spf1 include:_spf.google.com a ~all
上面一行中的“a”表示 SPF 域的 IP(exampleshop.com = 192.168.1.1)被允许为该域发送电子邮件。如果一段时间后您更改了 exampleshop.com 的 IP,则无需编辑 SPF,因为电子邮件的接收者将解析 exampleshop.com 的新 IP。
当然,您也可以将“a”和“ip4”选项都添加到 SPF:
v=spf1 include:_spf.google.com ip4:192.168.1.2 a ~all
v=spf1 include:_spf.google.com a:www.exampleshop.com a ~all
该 SPF 允许 Gmail 的服务器、IP 为 192.168.1.2 的服务器和域 (exampleshop.com) 的 IP 使用 @exampleshop.com 发送电子邮件。
最后,您还可以将 MX(邮件交换器)选项添加到 SPF:
v=spf1 include:_spf.google.com ip4:192.168.1.2 a mx ~all
MX 选项告诉来自 @exampleshop.com 的电子邮件接收者,DNS 配置中声明的每个服务器都被允许发送该电子邮件。
SPF 中的 MX 和 A 选项就像“别名”,取决于您的 DNS 服务器的配置。
有很多种方法可以编写 SPF。请查看:https://dmarcian.com/spf-syntax-table/