如何设置正确的 SPF 记录

如何设置正确的 SPF 记录

我正在尝试设置一个非常基本的 SPF 记录。我的网站托管在 GoDaddy 上,并使用 GoDaddy 的电子邮件服务器。我正在使用 php mail() 调用(我知道,我读过很多使用 PHP Mailer 或其他工具的地方,但我选择使用默认的 mail() 函数,这不是我真正的问题)。现在,电子邮件中的 spf 记录返回如下neutral几行:

Delivered-To: [email protected]
Received: by 10.52.171.166 with SMTP id av6csp133324vdc;
        Tue, 16 Jul 2013 07:43:23 -0700 (PDT)
X-Received: by 10.49.104.180 with SMTP id gf20mr2338989qeb.59.1373985802775;
        Tue, 16 Jul 2013 07:43:22 -0700 (PDT)
Return-Path: <[email protected]>
Received: from p3nlsmtp14.shr.prod.phx3.secureserver.net (p3nlsmtp14.shr.prod.phx3.secureserver.net. [72.167.234.239])
        by mx.google.com with ESMTP id d19si710455qey.143.2013.07.16.07.43.22
        for <[email protected]>;
        Tue, 16 Jul 2013 07:43:22 -0700 (PDT)
Received-SPF: neutral (google.com: 72.167.234.239 is neither permitted nor denied by best guess record for domain of [email protected]) client-ip=72.167.234.239;
Authentication-Results: mx.google.com;
       spf=neutral (google.com: 72.167.234.239 is neither permitted nor denied by best guess record for domain of [email protected]) [email protected]
Received: from P3NW8SHG339 ([184.168.27.44])
    by p3nlsmtp14.shr.prod.phx3.secureserver.net with 
    id 12jN1m0080x5yNo012jNyX; Tue, 16 Jul 2013 07:43:22 -0700
Date: Tue, 16 Jul 2013 07:43:21 -0700
Subject: Little Jaws Big Smiles Registration Confirmation
X-PHP-Originating-Id: [10610735]
To: "Person" <[email protected]>
From: "Little Jaws Big Smiles" <[email protected]>
Reply-To: "Little Jaws Big Smiles" <[email protected]>
Return-Path: "Little Jaws Big Smiles" <[email protected]>
Message-ID: <[email protected]>
X-Mailer: PHP/5.2.17
MIME-Version: 1.0
Content-type: text/html; charset=ISO-8859-1
Organization: Little Jaws Big Smiles

该 IP72.167.234.239对应的是p3nlsmtp14.shr.prod.phx3.secureserver.net,我猜测这是实际发送我的电子邮件的邮件服务器。

  • 我有一个 A(主机)记录设置,其中包含我的域名的实际 IP 地址。
  • 我有提供的默认 CNAME(别名)列表
  • 我有两个 MX(邮件交换器记录)
    • mailstore1.secureserver.net
    • smtp.secure服务器
  • 有两个默认名称服务器设置
    • ns45.domaincontrol.com
    • ns46.domaincontrol.com
  • 我已经按照以下方式设置了 TXT SPF 记录(没有引号,因为这是 godaddy 让您输入的方式):
    • v=spf1 a mx ptr ip4:72.167.234.245 -all

然而,这仍然会导致中性 SPF 结果。我已经等待了 48 小时,等待记录采取行动。我还阅读了SPF Syntax我认为我已经正确设置了它(但我以前从未这样做过,所以我可能完全误解了这一点)

我也尝试过基特曼斯验证脚本结果如下:

Found v=spf1 record for littlejawsbigsmiles.com: v=spf1 a mx ptr ip4:72.167.234.245 -all    
evaluating... SPF record passed validation test with pySPF (Python SPF library)!

是否有人发现我的记录定义有问题或者我遗漏了其他内容?

我正在尝试发送邮件[电子邮件保护]

如果我需要提供任何其他信息,请告诉我。

更新根据@TheCleaner的要求,我按照Godaddy的网站创建 SPF 记录。以下是我选择的步骤和选项以及选择它们的原因。

在下面添加 SPF 记录

  • 第 4 步:我选择GoDaddy.com, LLC only
    • 我只使用他们的服务器发送电子邮件
  • 第 5 步:我选择All Inbound Servers May Send Mail
    • 我不确定这是否适用于我,但我选择了它,以防万一
  • 第六步:我没有选择出站记录。
    • 我的域名不是邮件服务器
  • 第 7 步:我没有选择 PTR
    • 我的域名不是邮件服务器
  • 第 8 步:我添加了,72.167.234.0/24因为这似乎是 GoDaddy 用来发送电子邮件的邮件服务器
  • 我还选择了Exclude all hosts not specified here添加-all

结果 SPF 记录如下。我会尝试此方法,如果解决了我的问题,我会回复。如果我对上述步骤的假设不正确,请告诉我。

v=spf1 mx include:72.167.234.0/24 -all

答案1

您在 SPF 记录中输入了错误的 IP 地址。

这是当前记录:

littlejawsbigsmiles.com. 3600   IN      TXT     "v=spf1 a mx ptr ip4:72.167.234.245 -all"

这是您发送邮件的 IP:

72.167.234.239

这显然与不同72.167.234.245

修复记录,以便其中没有错误并且一切都正常运行。

要包含整个地址范围,请使用:

"v=spf1 mx ip4:72.167.234.0/24 -all"

顺便说一句,GoDaddy 提供了一篇有关如何设置 SPF 记录的知识库文章: http://support.godaddy.com/help/article/7926/adding-or-editing-spf-records

答案2

所以我最终找到了问题所在(GoDaddy 技术支持说他们无法帮助解决“脚本”问题)。结果发现他们的 SPF 记录确实存在问题:

显然,当您设置新的托管帐户时,C:\php5\php.iniWindows 主机的默认文件会将设置sendmail_from[email protected],这是我使用 php 的 mail() 函数发送电子邮件的实际发送地址。我将其更改为[email protected],离解决问题更近了一步。

现在来看看我遇到的第二个问题,它导致 SPF 仍然失败。事实证明,使用 GoDaddy 默认设置创建的 SPF 记录include:spf.secureserver.net包含太多查询。您可以使用以下方法验证这一点这个 SPF 解析器并输入spf.secureserver.net。您将看到查找次数远超最大查找次数 10 次。

使用基特曼验证脚本,如果您输入spf.secureserver.net,则可以看到它显示错误PermError SPF Permanent Error: Too many DNS lookups。这是 GoDaddy 需要在全球范围内解决的问题(不仅仅是针对我的网站)。该问题记录在他们的网站。我确实收到了他们的回复,表示这不是他们的问题:

尽管我们提供了创建 SPF 记录的能力,但管理和设置的责任完全由客户承担。

我可以通过检查电子邮件标题并查找发送邮件的服务器(范围似乎是72.167.234.236-245)来解决这个问题。使用上面链接的 SPF 解析器,我能够确定我的网站似乎正在使用spf102.secureserver.net。我不确定这是否会改变我的网站,Godaddy 还没有告诉我答案。我将我的 SPF 记录更改为包含spf102.secureserver.net,这样就不会出现 的问题Too many DNS lookups,但如果电子邮件可以更改并发送出去,那么这可能是一个问题spf101.secureserver.net

最终的工作记录将基于用于发送电子邮件的服务器,但如果您托管并使用 GoDaddy 的服务器,它应该看起来像这样:

v=spf1 mx include:spf102.secureserver.net -all

通过这两个更新,我能够向 google 和 hotmail 电子邮件帐户发送邮件,而且它们不再进入垃圾邮件/垃圾文件夹(耶!)

感谢@MadHatter、@gparent 和@TheCleaner 对追踪此事的支持。

相关内容