在包含不同SPF条目的单个域中具有多个TXT记录是否可以?


17

远程收件人域基于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

Answers:


20

不,你说得对。请参阅RFC 4408第4.5节

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

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

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

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


2
截至2014年4月,RFC 7208已取代RFC4408。SPF类型的记录已弃用,而推荐使用TXT类型的记录SPF records MUST be published as a DNS TXT (type 16) Resource Record (RR) [RFC1035] only.(请参阅RFC 7208,第3.1节)。我将基于此尝试新的答案。
霍夫曼

4

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.