我对 SPF 记录有一个问题:它们是否需要存在于所有子域中?
假设我有一个包含 domain.com SPF 信息的 TXT 记录
假设我有一个单独的电子邮件域名 subdomain.domain.com
domain.com 的 SPF 策略/信息是否也适用于子域名?还是我也需要为其添加单独的 TXT 记录?
答案1
您需要为每个要发送邮件的子域名设置单独的 SPF 记录。
以下内容最初发布在 openspf.org 上,该组织曾经是此类内容的重要资源。
最新链接http://www.open-spf.org/FAQ/The_demon_question/
恶魔问题:子域名怎么样?
如果我收到来自 pielovers.demon.co.uk 的邮件,而 pielovers 没有 SPF 数据,我是否应该返回上一级并测试 demon.co.uk 的 SPF?不。Demon 的每个子域都是不同的客户,每个客户可能都有自己的策略。默认情况下,Demon 的策略适用于所有客户是没有意义的;如果 Demon 想要这样做,它可以为每个子域设置 SPF 记录。
因此,对 SPF 发布者的建议是:您应该为每个具有 A 或 MX 记录的子域或主机名添加一个 SPF 记录。
具有通配符 A 或 MX 记录的站点也应该具有通配符 SPF 记录,格式为:* IN TXT“v=spf1 -all”
这是有道理的——子域名很可能位于不同的地理位置,并且具有非常不同的 SPF 定义。
SPF 的“include:”指令可用于为所有子域提供相同的条目。例如,在子域 mailfrom.example.com 的 SPF 记录中输入“include:example.com”。这样,每当您更新 example.com 的定义时,您的子域都会自动获取更新的值。
答案2
除了其他答案之外,如果子域名创建为 CNAME 记录,则 SPF 记录是其指向的域名的记录,例如sub.domain.com
是的 CNAME otherdomain.com
,当邮件服务器查找时,它将获得的 SPF[email protected]
位于的 DNS 记录中otherdomain.com
。
如果 CNAME 记录显示 sub.domain.com => othersub.domain.com,那么在实践中情况也是一样的,因此您的 TXT 记录需要是 othersub,而不是 sub。这与 DKIM 不同,DKIM 需要为公钥提供单独的 TXT 记录,即使您的子域是 CNAME。
答案3
但请注意,正如已接受答案中引用的常见问题解答中所述,您可以为通配符 A 或 MX 记录的域设置通配符 SPF。我有通配符 MX 域,这对我来说很有效:
*.mydomain.org. 3600 IN TXT "v=spf1 ip4:IPADDR -all"
将 IPADDR 替换为您的 IP 地址/范围。
答案4
*.mydomain.org. 3600 IN TXT "v=spf1 ip4:IPADDR -all"
如果垃圾邮件发送者使用已在 dDNS 中的子域,则上述方法无效。例如,在这种情况下,www.domain.com AA 记录位于通配符之前。