SPF(发件人策略框架)似乎是打击垃圾邮件发送者/欺骗的好方法。
但是,尽管读了几遍解释,我仍然不太明白如何正确配置它。
假设我的服务器位于a.x.com
主机www.x.com
和b.x.com
等c.x.com
上。
我还有a.co.uk
b.net
c.info
等等,每个都有各种子域名,全部托管在x.com
对于所有这些域和子域,我希望允许从a.x.com
我还希望他们能够允许从 Gmail 向所有这些域发送邮件。
如何使用 SPF 进行设置?
x.com
我可以为(或)设置一条 SPF 记录a.x.com
,然后对于其他所有内容仅设置一个简单的包含/指向的x.com
记录,还是需要以不同的方式完成?
有人可以为上述示例提供一些 SPF 记录吗?
笔记:我的问题的第二部分已经得到解答(使用“ v=spf1 include:x.com -all
”来包含/指向的x.com
记录),但设置什么的关键部分x.com
仍然没有得到解答......
答案1
redirect
您无法避免必须更改 x.com 以外的域的区域文件,但您可以通过定义托管在一个域上的通用策略并在其他域上使用 SPF 关键字来省去很多麻烦。示例:
- 在域的区域文件中
x.com
:
_policy1 IN TXT“v = spf1 a:axcom -all” _policy2 IN TXT“v=spf1 包括:_spf.google.com a:axcom -all”
_spf.google.com
是保存 Gmail SPF 记录的记录。不确定是否有记录。理论上你应该include:gmail.com
这样做,但这是一个重定向_spf.google.com
,并且至少有一个广泛使用的 qmail SPF 补丁没有正确遵循它(已于 2008 年 8 月修复,但可能仍在部署。)当然,这两个策略只是示例 - 在调试时,拥有多个具有不同严格程度的策略非常有用,因为您只需更改目标域中的短名称,而不是容易出错的复制粘贴。
- 在其他域的区域文件中:
@ IN TXT“v = spf1 重定向 = _policy1.x.com”
或者
@ IN TXT“v = spf1 重定向 = _policy2.x.com”
等等。我使用的是redirect
,而不是include
,以使 SPF 检查将当前评估的记录完全替换为我要重定向到的记录。include
不会这样做 - 例如,-all
末尾的include
不会导致评估停止(include
这是一个很大的误称。)当您想要从另一个域“别名”SPF 记录时,应该避免使用include
,因为它非常脆弱 - 如果您不小心忘记了尾随的 -all 可能会导致该域上的整个 SPF 无效。
编辑:不过请注意,如果您想允许 Gmail 的服务器作为发件人,您需要保持警惕。Gmail chaptcha 已被破解,这意味着可以自动完成帐户注册,这意味着 Gmail 可以(间接地)用作开放中继(我每周都会收到数十个垃圾邮件机器人注册请求,这些请求都来自我公司的讨论论坛,所有请求都使用 gmail.com 电子邮件地址 - 而且这些地址都是实时的,我允许其中几个进行检查。)此外,如果熟悉您域中电子邮件地址的 uwsername 部分,任何拥有 Gmail 帐户的人都可以绕过 SPF 检查。
答案2
是的,您可以将其中一个域的配置包含在所有其他域的 SPF 记录中。将其他域的 SPF 记录设置为以下内容应该可以解决问题:
v=spf1 include:x.com -all
答案3
您是否尝试过使用以下网络工具:http://www.openspf.org/?这可能会让您更容易处理这个问题……
只需在右上角的框中输入您的域名,然后单击“开始”按钮即可。从这里,您应该能够快速完成设置。
答案4
是的,您需要为每个域单独添加特定的 SPF 记录。
原因是 DNS 中唯一 (有用的) 别名类型记录是记录CNAME
。然而,CNAME
记录会导致别名发生全部RRset 中的 RRtypes - 没有办法说“CNAME
SPF 记录,但不是MX
记录“