我有一个带有此 A 记录的域名:
A 1.2.3.4
还有这样的邮件记录,我在不同的托管服务提供商处拥有我的邮件服务以进行交换。
MX mxpool.example.com
现在我想设置正确的 SPF 记录。我尝试过不使用,并尝试了以下方法:
"v=spf1 mx ~all"
但邮件被拦截为垃圾邮件。邮件提供商有一个邮件服务器池,我没有获得正确的 IP。而且邮件服务器的主机名也发生了变化。那么我该如何为此设置正确的 SPF?谢谢。
答案1
ip4
选择/几乎总是更好的选择ip6
机制优于任何需要额外 DNS 查询的机制。使用mx
成本高昂,因为它需要对MX
和 进行两次额外查询A
。如果包含的内容和其他非 IP 机制过多,SPF 解析器将耗尽并停止查询。
询问您的服务提供商。这不应该是一个秘密。
我首先会查看服务提供商的 SPF 记录。如果它有 IP 块,您可以简单地使用该
include
机制将其添加到您的 SPF 记录中。如果 1 和 2 失败,您应该重新考虑您的电子邮件提供商,因为他们不知道他们在做什么。
您可以使用 whois 数据库和反向 DNS 作为提示。假设您的邮件是从
192.0.2.20
和发送的192.0.2.22
。它们都来自 netblock,192.0.2.0/24
即TEST-NET-1
。您可以允许整个块ip4:192.0.2.0/24
或使用PTR
块的记录来检测命名模式,从而揭示所有出站 SMTP 服务器。
答案2
哪个主机实际上会代表域名“发送”邮件?这就是您需要添加到 SPF 记录中的内容。
如果“mxpool.example.com”代表[电子邮件保护],这将起作用:
example.com.IN TXT“v=spf1 mx a ptr a:mxpool.example.com -all
'mx' 允许将主机列为 mx
“a” 允许“A”记录的 IP(1.2.3.4)代表 example.com 发送邮件
“ptr” 允许 example.com 的所有子域代表 example.com 发送邮件(只要您控制整个域就可以)
“a:mxpool.example.com”明确授权该主机代表 example.com 发送邮件(即使它属于前两个规则)。
“-all” 告诉其他邮件服务器,如果邮件不是来自授权主机之一,则应拒绝该邮件(SPF 失败)。
编辑:如果您希望 OtherSendingDomain.com 的主机代表 yourdomain.com 发送,您可以在 spf 记录中添加“include”。应该可以正常工作。
yourdomain.com。IN TXT“v=spf1 mx a ptr a:mx.yourdomain.com include:OtherSendingDomain.com -all”
SPF 的工作方式是,您需要了解并允许代表您的域发送邮件的每个主机。它们可以以某种方式在 spf 记录中明确说明,或从另一个域继承/包含。