单个域名可以有包含不同 SPF 条目的多个 TXT 记录吗?

单个域名可以有包含不同 SPF 条目的多个 TXT 记录吗?

远程收件人域以 SPF 为由拒绝邮件,我认为这是因为发件人的 SPF 配置不正确。

当我运行 dig 时,我看到:

[fooadm@box ~]# dig @8.8.8.8 -t TXT foosender.com

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> @8.8.8.8 -t TXT foosender.com
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30608
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;foosender.com.              IN      TXT

;; ANSWER SECTION:
foosender.com.       14039   IN      TXT     "v=spf1 include:spf.foo1.com -all"
foosender.com.       14039   IN      TXT     "v=spf1 include:_spf.bob.foo2.com -all"

;; Query time: 26 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Jan  7 09:45:38 2014
;; MSG SIZE  rcvd: 146

这是有效的设置吗?我觉得有两个单独的记录(每个记录都有硬失败)很奇怪。难道所有内容不应该放在一个记录中吗?

我希望正确的 TXT 记录是:

v=spf1 include:spf.foo1.com include:_spf.bob.foo2.com -all

答案1

不,你说得对。看看RFC 4408,第 4.5 节

  1. 不以版本部分“v=spf1”开头的记录将被丢弃。请注意,版本部分以 SP 字符或记录结尾结束。版本部分为“v=spf10”的记录不匹配,必须丢弃。

  2. 如果集合中存在任何 SPF 类型的记录,那么所有 TXT 类型的记录都会被丢弃。

    经过上述步骤后,应该只剩下一条记录,评估就可以继续了。 如果剩余两个或更多记录,则 check_host() 将立即退出,结果为“PermError”。

    如果没有返回匹配的记录,SPF 客户端必须假定该域未做出任何 SPF 声明。SPF 处理必须停止并
    返回“无”。

答案2

此 SPF 设置无效。如果发现多条记录,记录选择应该会产生错误。请参阅RFC 7208,第 4.5 节选择记录时:

如果结果记录集包含多个记录,check_host() 将产生“permerror”结果。

相关内容