问题:SPF Record (TXT)无法从域的DNS条目中检索zwischengas.com
我在我的DNS条目中,我有一行SPF记录(作为TXT条目):
@ IN TXT "v=spf1 ip4:188.a.b.c ip4:xyz/22
ip4:xyz/24 ip4:xyz/21 ip4:xyz/24 ip4:xyz/24" "ip4:xyz ip4:xyz/22
ip4:xyz ip4:xyz/29 ip4:xyz/29 ip4:xyz/28" "ip4:xyz/24 ip4:xyz/24 a mx
?all"
Run Code Online (Sandbox Code Playgroud)
我有问题,这个SPF记录无法找到,我不知道为什么.根据RFC,建议将非常长的行拆分为多个字符串,以使所有子字符串保持小于255个字符.
我的域名是zwischengas.com,邮件服务器的IP是188.abc,有人知道吗?
我尝试了这些测试没有成功:
host -t txt zwischengas.com
spfquery -ip-address 188.a.b.c -m test@zwischengas.com -h zwischengas.com
Run Code Online (Sandbox Code Playgroud)
使用在线工具的测试也没有成功:
此外,Google Mail(gmail.com)无法检索我的SPF记录(根据原始邮件标题部分):
Received-SPF: neutral (google.com: 188.a.b.c is neither permitted
nor denied by best guess record for domain of
noreply1@zwischengas.com) client-ip=188.a.b.c;
Run Code Online (Sandbox Code Playgroud)
工作方案
您可以通过致电测试SPF记录的正确性
host -t txt myhost.com
Run Code Online (Sandbox Code Playgroud)
一个简单的SPF记录可能如下所示:
@ IN TXT "v=spf1 ip4:244.11.23.13 a mx ?all"
Run Code Online (Sandbox Code Playgroud)
如果一个接一个地添加IP,则最终会出现来自DNS服务器的错误消息,说明该字符串太长.
一个有效的解决方案是引入" "它.
而不是
@ IN TXT "v=spf1 ip4:244.11.23.13 ip4:144.21.23.13 ip4:222.11.11.13 ip4:244.182.23.191 ip4:203.101.22.13 a mx ?all"
Run Code Online (Sandbox Code Playgroud)
你会(一个例子):
@ IN TXT "v=spf1 ip4:244.11.23.13 ip4:144.21.23.13" " ip4:222.11.11.13 ip4:244.182.23.191" " ip4:203.101.22.13 a mx ?all"
Run Code Online (Sandbox Code Playgroud)
该" "选项在相应的RFC中描述,并被所有DNS服务器接受(实际发生的是," "删除并且子串连接).
但是如果你有20个IP怎么办?你最终得到一个远远超过允许的字符串.你能做什么?
对此的解决方案称为: include
一个例子:
@ IN TXT "v=spf1 include:_spf1.myhost.com include:_spf2.myhost.com a mx ?all"
_spf1 IN TXT "v=spf1 ip4:244.11.23.13 ip4:144.21.23.13 a mx ?all"
_spf2 IN TXT "v=spf1 ip4:222.11.11.13 ip4:244.182.23.191 ip4:203.101.22.13 a mx ?all"
Run Code Online (Sandbox Code Playgroud)
您可以使用N个层次结构扩展它.我希望这有帮助,因为我花了一些时间来找到它!