SPF 一直困扰着我,为什么它不验证 From 标头?
据我了解,SMTP 服务器将 SPF 验证 MAIL FROM 或 ENVELOPE FROM SMTP 命令期间提供的主机名(我的示例是从 telnet'ing 到 gmail-smtp-in.l.google.com:
MAIL FROM:<matt@example.com>
然后,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.
检查来自 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;
查看 Sparrow 中的消息:
我认为 SPF 的目的是帮助保护我的域(作为发件人)免受欺骗?但是,如果发件人正确配置了 SPF(不是很难或做起来很昂贵——我只是用上面的免费微型 ec2 实例做到了),那么它似乎不适用?
我确实注意到 Gmail 在我执行的 5 次测试中有 4 次将我的邮件放入垃圾邮件中,但我认为这是因为 EC2 IP 的声誉?还是我缺少关于 Gmail 正在接受的 SPF 的一些东西?
我错过了什么?