我在http://www.openspf.org/SPF_Record_Syntax上找到了对 SPF 的精彩解释, 并且我在我的旧设置中使用了它。
设置已更改,我发现自己再次陷入困境。
我有一个外部 DNS 服务。动态 IP 连接上的路由器。具有 10.0.1.3 内部 ip 的服务器。此服务器上的 DNS 记录表明 server.example.com 指向 10.0.1.3。我使用服务器 dns 来解析其自身和本地网络查询。如果路由器 ip 发生变化,我还安装了一个应用程序来发送我的外部 DNS 服务更新。
到目前为止我发现的是,在这种特殊情况下,我可能能够按照以下方式成功使用 TXT 记录
“v=spf1a:server.example.com-all”
这行得通吗?假设在发送电子邮件时 ip 并没有完全改变......设置它的最佳方法是什么?
谢谢!
附言。据我所知,我可以使用“v=spf1 mx -all”并将我的 server.example.com 作为 mx 记录,然后 server.example.com 在它更改时动态更新到我的 ip。这样,当某些接收者收到来自我的 ip 的电子邮件时...这会检查 MX 记录以查看该 ip 是否在该列表中,然后它获取 server.example.com 作为响应,而响应又总是解析为我最新的动态 ip .
SPF 依赖于 DNS。
DNS 系统使用生存时间来减少 DNS 服务器上的请求负载。这意味着 DNS 的更改不会立即传播到整个互联网。
因此,只要您的邮件服务器的公共 IP 可以突然更改,就不可能使您计划的配置完全失效。
您的第一个选择应该是尝试获取静态 IP。一些 ISP 将此作为附加服务提供。
如果这不可行,我建议您通过另一台具有静态 IP 的邮件服务器发送邮件。这将允许您在 SPF 记录中指定此服务器并使其更加可靠。
您可以将 OS X 服务器设置为通过指定服务器中继所有外发邮件。为了始终有效,中继服务器必须配置为识别并信任您的服务器,即使您的服务器更改 IP 地址也是如此。我在一家提供此类邮件中继服务的 ISP 工作,我相信其他人也这样做。
PS:在 DNS 中依赖非常低的 TTL 是不明智的。首先,许多 DNS 管理员将他们的 DNS 解析器配置为忽略低 TTL。其次,无论您将 TTL 设置得多么低,任何依赖于正确 DNS 数据的服务总会有一个失败窗口。最好的办法是设置您的服务,使 DNS 更改很少发生。
按照您的描述使用 a 或 mx 条目,如果您直接更新 DNS,它将起作用。通过添加与您当前 IP 相对应的附加“a”条目,最容易解决反向查找问题。
比如我的边缘ip是172.16.1.1 - host37.ispname.somecom。我没有使用“myname.mycom”,而是在我的域中放置了一个指向 ISP FQDN 的 CNAME。这种前进和后退的方式最终会得到检验。我认为 SPF 没有任何限制指向 CNAME(然后指向 ISP FQDN)。或者,更简单地,只需更新 SPF 而不是“a”以对应于真实的 FQDN。
如果这是你的住所,我不会推荐这个。对于任何拥有您的电子邮件地址的人,您可能会通过将您当前的 IP 向上推送到 DNS 来暴露位置信息。
老实说,我不会被 SPF 记录所困扰,它们的使用非常不一致。根据我的经验,许多接收邮件服务器不使用 SPF 检查,如果他们使用,他们大多会为您的垃圾邮件分数加分。
但是,如果您确实想继续将 SPF 记录与您的动态 IP 地址结合使用,请确保该 DNS 记录上的 TTL 尽可能低。并让您的 SPF 记录以 ~all 而不是 -all 结尾(~all 是我经验中最常用的机制)
笔记
如果指定了 -all,而您的 IP 不匹配,则服务器应该拒绝该消息。
如果指定了 ~all,并且您的 IP 不匹配,则服务器应该接受该消息但对其进行标记。
(来源:http ://www.openspf.org/SPF_Record_Syntax )