有什么东西总是让我对SPF感到困扰,为什么它不验证From头?
据我了解,SMTP服务器将SPF验证MAIL FROM或ENVELOPE FROM SMTP命令期间提供的主机名(我的示例是从telnet'ing到gmail-smtp-in.l.google.com:
MAIL FROM:<matt@example.com>
Run Code Online (Sandbox Code Playgroud)
Gmail然后做了它的事情,确保我的example.com的SPF记录允许我的IP发送.但是这里它似乎倒下了,我不能只注册一个域,为我的IP正确设置我的TXT和SPF记录,然后发送?完整示例:
$ telnet gmail-smtp-in.l.google.com 25
Trying 173.194.68.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP m6si2285029qao.20 - gsmtp
HELO ec2-23-22-210-XXX.compute-1.amazonaws.com
250 mx.google.com at your service
MAIL FROM:<matt@ec2-23-22-210-XXX.compute-1.amazonaws.com>
250 2.1.0 OK m6si2285029qao.20 - gsmtp
RCPT TO:<(a real gmail address)@gmail.com>
250 2.1.5 OK m6si2285029qao.20 - gsmtp
DATA
354 Go ahead m6si2285029qao.20 - gsmtp
From: "Litmus" <hello@litmus.com>
To: <anybody@example.com>
Subject: Welcome to Litmus!
Date: Thu, 27 June 2013 16:24:30 -0500
Welcome!
.
250 2.0.0 OK 1372363723 m6si2285029qao.20 - gsmtp
QUIT
221 2.0.0 closing connection m6si2285029qao.20 - gsmtp
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)
检查来自Gmail的标头显示:
Received-SPF: pass (google.com: best guess record for domain of matt@ec2-23-22-210-XXX.compute-1.amazonaws.com designates 23.22.210.XXX as permitted sender) client-ip=23.22.210.XXX;
Run Code Online (Sandbox Code Playgroud)
看着麻雀的消息:

我认为SPF的目的是帮助保护我的域名(作为发送者)免受欺骗?但是如果发送者已经正确配置了SPF(不是很难或者做起来很昂贵 - 我只是使用上面的免费微型ec2实例),那么它似乎不适用?
我注意到Gmail在我执行的5项测试中有4项将垃圾邮件发送到垃圾邮件中,但我认为这是因为EC2 IP的声誉?或者是否有一些我对SPF正在接受的SPF缺失的东西?
我错过了什么?
这听起来可能是循环往复。这是因为 From 标头无法按照您描述的方式进行验证。
SPF 并非旨在以这种方式验证标题行。
您必须接受“发件人:”行的本来面目,这取决于电子邮件撰写者的突发奇想。
请记住,即使电子邮件地址本身是可信的,许多客户端也只显示引号中的内容。在这两种情况下,他们会很容易地展示作曲家想要什么:
From: "night" <day@example.com>
From: "day" <day@example.com>
Run Code Online (Sandbox Code Playgroud)
我觉得这太自由了吗?是的。SPF 有什么办法可以解决这个问题吗?不。
DKIM 可能就是您正在寻找的,它专注于标头验证。