对于包含不同 SPF 条目的单个域,是否可以拥有多个 TXT 记录?

Mik*_*e B 17 domain-name-system email spf

远程收件人域以 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
Run Code Online (Sandbox Code Playgroud)

这是有效的设置吗?有两个单独的记录(每个都有硬失败)对我来说似乎很奇怪。不应该所有内容都在一个记录中吗?

我希望正确的 TXT 记录是:

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

dmo*_*ati 21

不,你是对的。请参阅RFC 4408,第 4.5 节

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

  2. 如果集合中有任何 SPF 类型的记录,则丢弃所有 TXT 类型的记录。

    完成上述步骤后,应该只剩下一个记录,可以进行评估。 如果剩余两条或更多条记录,则 check_host() 立即退出并返回“PermError”结果。

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

  • 截至 2014 年 4 月,[RFC 7208](https://tools.ietf.org/html/rfc7208) 废弃了 RFC 4408。SPF 类型的记录已被弃用,取而代之的是 TXT 类型的`SPF 记录必须发布为仅 DNS TXT(类型 16)资源记录 (RR) [RFC1035]。`(参见 [RFC 7208,第 3.1 节](https://tools.ietf.org/html/rfc7208#section-3.1))。我将在此基础上尝试一个新的答案。 (2认同)

JHo*_*ann 5

此 SPF 设置无效。如果找到多个记录,则记录选择应该会产生错误结果。请参阅RFC 7208,关于选择记录的第 4.5 节

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