设置 SPF 记录的正确方法是什么?
使用 TXT 并添加以下内容?
v=spf1 a mx include:mydomain.tld ~all
更新:
使用以下内容后:
v=spf1 a mx ~all
我明白了:
Received-SPF: temperror (google.com: error in processing during lookup of [email protected]: DNS timeout) client-ip=x.x.218.7;
Authentication-Results: mx.google.com; spf=temperror (google.com: error in processing during lookup of [email protected]: DNS timeout) [email protected]
Received: from PHPUSERNAME by SERVER.MYDOMAIN.TLD with local (Exim 4.77)
(envelope-from <[email protected]>)
id xxxxxxxxxxxxxxxx
for [email protected];
答案1
如果你还没有找到www.open-spf.org,这是很棒的资源。请关注 SPF 与发件人 ID 主题。查看http://www.open-spf.org/SPF_Record_Syntax为卑鄙龌龊之人。
如果您托管自己的邮件服务器并且您的 MX 记录构成唯一的发送服务器,那么您只需使用“mx”机制即可。
如果您正在使用托管服务来处理电子邮件(例如 Google Apps),或者甚至将外发邮件从内部 SMTP 服务器转发到 SendGrid 之类的服务,请查阅这些服务以获取特定的 SPF 配置说明。
编辑以添加有关 SPF、机制和限定符的更好描述
当支持使用 SPF 的邮件交换收到电子邮件时,它会查看发件人的域名([电子邮件保护]) 和发送邮件的服务器的 IP 地址。问题是,该 IP 地址是否有权代表发件人的域 (sendingdomain.tld) 发送电子邮件?
为了回答这个问题,服务器从所谓的域(sendingdomain.tld)检索 SPF 记录(存储为 DNS TXT 记录),并根据该 SPF 记录检查发送服务器的 IP 地址。
SPF 使用机制来创建电子邮件的有效发送服务器列表。每个机制都可以用 +、-、~ 或 ? 前缀限定(此信息取自开放-spf.org):
'+' 表示通过(或有效) -注意:这是默认操作
'-' 表示失败(或无效)
'~' 表示软失败(许多服务器将其视为中立)
'?' 表示中立(既不确认也不否认有效性)
当评估一条记录时,它匹配第一个机制从左到右。如果没有匹配的机制,则默认结果是中性的。
一般来说,“全部”机制匹配所有内容,因此......
'+All' 机制意味着所有服务器都是该域的有效发送者(不要使用此选项)。
“-All”机制使所有发送服务器失败。在 SPF 记录的末尾使用此机制可覆盖中性的默认结果为失败结果。一些服务(如 Google)对此发出警告,但我尚未遇到任何问题。
“~All”和“?All”机制相当于说“如果发送服务器与列出的任何有效服务器都不匹配,那就不用担心”。仅使用这些来测试 SPF 记录。
有关机制的完整列表,请参阅open-spf.org 的记录语法页。
我想在这里讨论的另一种机制是“include:< domain >”。此机制指示解析 SPF 记录的服务器包含由 < domain > 托管的另一个 SPF 记录中指定的其他机制。
例子:
如果您的域使用相同的服务器(即相同的 IP 地址)进行发送和接收:
- v=spf1 mx –全部
- 以上相当于,v=spf1 +mx –all
如果您使用 Google Apps 托管邮件,但有时使用内部 SMTP 服务器来发送自动消息:
- v=spf1 ip:<内部服务器的 ip 地址> include:_spf.google.com -all
DKIM 完全是另一回事。如果您使用的是托管电子邮件服务,请向该服务咨询相关说明。如果您托管自己的邮件交换,请查阅服务器软件的文档以了解如何实施。这有点超出了这个问题的范围。