我正在尝试设置一个非常基本的 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.ini
Windows 主机的默认文件会将设置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 对追踪此事的支持。