远程收件人域以SPF为由拒绝邮件,我认为这是因为发件人的SPFconfiguration不正确。
当我跑步时,我看到:
[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
这是一个有效的设置? 我觉得有两个单独的logging(每个logging都很难失败)似乎很奇怪。 一切都不应该在一个logging?
我期望正确的TXTlogging是:
v=spf1 include:spf.foo1.com include:_spf.bob.foo2.com -all
不,你说得对。 请参阅RFC 4408的第4.5节 。
不以“v = spf1”的版本部分开头的logging将被丢弃。 请注意版本部分由SP字符或logging的结尾终止。 版本段“v = spf10”的logging不匹配,必须丢弃。
如果任何SPFtypes的logging都在该集合中,那么TXTtypes的所有logging都将被丢弃。
经过上述步骤后,应该只剩下一条logging,并可以进行评估。 如果有两个或更多的logging,则check_host()立即退出,结果是“PermError”。
如果没有匹配的logging被返回,SPF客户端必须假定域没有做SPF声明。 SPF处理必须停止和
返回“无”。
此SPF设置无效。 如果find多个logging,则loggingselect应该会导致错误。 有关selectlogging,请参阅RFC 7208第4.5节 :
如果结果logging集包含多个logging,则check_host()会产生“permerror”结果。