如何为服务器上的多个域配置SPF?(还允许gmail作为发件人)


9

SPF(发件人策略框架)似乎是打击垃圾邮件发送者/欺骗的好方法。

但是,尽管多次阅读了说明,但我不太了解如何正确配置它。


比方说,我有我的服务器在a.x.com哪些主机www.x.comb.x.comc.x.com等。

我也有a.co.uk b.net c.info,依此类推,每一个都包含各种子域,所有子域都托管在x.com

对于所有这些域和子域,我希望允许从以下位置发送邮件 a.x.com

我也希望他们都允许从Gmail发送的所有这些域的邮件。

如何使用SPF进行设置?

我可以为x.com(或a.x.com)设置一个SPF记录,然后为其他所有记录设置一个简单的include / pointer指针x.com,还是需要以其他方式进行处理?

任何人都可以为上述示例提供一些SPF记录吗?


注意:我问题的第二部分已得到回答(使用“ v=spf1 include:x.com -all”包括/指向x.com的记录),但是设置内容的关键部分x.com仍未得到回答...


实际上,事实证明,减少垃圾邮件是一种毫无希望的无效方法。实际上,可以说,它实际上仅是为了解决发件人地址的欺骗。
Christopher Edwards,2009年

2
“这实际上只是为了解决发件人地址的欺骗”-确切地说,是要阻止垃圾邮件发送者发送看似来自他人域的邮件。
彼得·布顿

Answers:


7

您无法避免必须更改x.com以外的其他域的区域文件,但可以通过定义一个域上托管的通用策略并redirect在其他域上使用SPF关键字来避免麻烦。例:

  • x.com域的区域文件中:
_policy1 IN TXT“ v = spf1 a:axcom -all”
_policy2 IN TXT“ v = spf1 include:_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 redirect = _policy1.x.com”

要么

@ IN TXT“ v = spf1 redirect = _policy2.x.com”

等等。我使用redirect,而不是include,使SPF检查用我重定向到的记录完全替换了当前评估的记录。include不会这样做-例如,-all在结尾的an include不会导致评估停止(这include是一个错误的称呼。)include当您要“别名”来自另一个域的SPF记录时,您应该避免使用它,因为它非常脆弱-如果您不小心忘记了结尾-所有这些都可能会使该域上的整个SPF失效。

编辑:不过请注意,如果要允许Gmail的服务器作为发件人,则需要保持警惕。Gmail验证码已被破解,这意味着可以自动执行帐户注册,这意味着Gmail可以(间接)用作开放中继(我每周在公司讨论论坛上收到数十个spambot注册请求,所有这些都使用gmail.com电子邮件地址-这些地址是实时的,我已经允许其中一些地址进行检查。)此外,拥有Gmail帐户的任何人都可以绕过SPF检查,如果您熟悉域中电子邮件地址的uwsername部分。


谢谢,这是一个有用的答案。上次检查时,Gmail需要先进行电子邮件验证,然后才能从其他地址发送电子邮件-因此,一旦该地址的收件箱安全了,一切就好了吗?象bortzmeyer的回答一样,也没有“ www”行是多么重要?
彼得·布顿

1
是的,但是一旦在基座上出现裂缝,我敢肯定有人会找到一种方法来挤过一半的河水。被利用,即请不要无限期放弃对Gmail的授权。我对他们的信任远胜于对在线实体的信任,但这只是一点点信任,而一点都不信任。
MihaiLimbăşan,2009年

我不知道为什么bortzmeyer包含www条目。除非您实际从@ www.x.com发送邮件,否则它们完全没有用处(除了不被大量使用之外)看起来很古怪,并且比不精通技术的人引起混乱。
MihaiLimbăşan,2009年

2
此外,我不会使用SPF记录类型。我建议您坚持使用TXT。SPF记录类型仅受BIND 9.4及更高版本支持,根据RFC,您还必须维护TXT记录的副本,即,您必须复制粘贴内容(不良),并且必须保持同步(困难)。由于TXT在可预见的将来将是主要的SPF交付机制,因此没有收益可言,quoth openspf.org。
MihaiLimbăşan,2009年

1
@Mihai Limbasan:很好的答案,谢谢分享。如果你认为这是需要更新你的答案,谷歌似乎更喜欢v=spf1 include:_spf.google.com ~all到位的-all,假设我正确理解,参考。google.com/support/a/bin/answer.py?answer=178723
Marco Demaio 2011年

4

是的,您可以将一个域中的配置包括在所有其他域的SPF记录中。将其他域的SPF记录设置为以下应该可以解决问题:

v=spf1 include:x.com -all

这将“正常工作”,还是需要_spf子域或类似的域?
彼得·布顿

我非常确定,如果您最初在x.com上直接定义了SPF记录,那么其他域的包含内容也可以直接指向x.com。如果您在_spf.x.com路由中定义了SPF记录,那么是的,您还需要更改include一点以指向该FQDN。
womble

2

您是否尝试过使用http://www.openspf.org/上的网络工具?这可能会使您更轻松地处理此问题...

只需在右上角的框中输入您的域,然后单击“执行”按钮。从那里,您应该能够迅速进行设置。


1
我已经尝试过使用该工具多次,但解释不够清楚。
彼得•布顿

2

RFC 4408标准提供了一些与您想要的非常接近的示例。这是x.com的zonefile的摘录:

@ IN TXT“ v = spf1 a:axcom -all”
      在SPF中“ v = spf1 a:axcom -all”

www输入TXT“ v = spf1 a:axcom -all”
      在SPF中“ v = spf1 a:axcom -all”

笔记:

  • 我不添加Gmail电子邮件服务器,因为我不知道这些服务器,请问Gmail人员
  • “ a”代表“地址”(不是 DNS A记录,它包含IPv6)
  • 我根据RFC添加了SPF记录,尽管几乎所有实现都仅使用TXT记录

1

是的,您需要将特定的SPF记录分别添加到每个域。

原因是DNS中唯一(有用的)别名类型记录是该CNAME记录。但是,该CNAME记录会导致RRset中所有 RR类型的别名发生-无法说“ CNAMESPF记录,而不是MX记录


我知道我必须为每个域添加一个 SPF记录,但是我希望仅存储指向主域的简单指针,然后可以在其中存储所有更复杂的命令。Womble建议我可以为此使用include:{domain},但是我仍然不清楚这是否只是在其他域的SPF记录中包含/指向该点,或者是否需要托管_spf.x.com子域?
彼得·布顿

是的,见旺布尔的答案
参宿
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.