早上好 当通过Wordpress上的Contact Form 7发送电子邮件时,我在邮件标题上收到SPF Pass时遇到了一些麻烦。
通过Contact From 7发送的邮件经常被发送到垃圾邮件,当查看邮件源标题时,我可以看到网站IP没有被指定为允许的发件人。
ARC-Authentication-Results: i=1; mx.google.com;
spf=neutral (google.com: *serverIP* is neither permitted nor denied by
best guess record for domain of www-data@ubuntu) smtp.mailfrom=www-data@ubuntu;
dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=*domain*
Return-Path: <www-data@ubuntu>
Received: from ubuntu (*domain*. [*serverIP*])
by mx.google.com with ESMTP id 91-v6si4638670wre.46.2018.05.17.07.10.20;
Thu, 17 May 2018 07:10:20 -0700 (PDT)
Received-SPF: neutral (google.com: *serverIP* is neither permitted nor
denied by best guess record for domain of www-data@ubuntu) client-
ip=*ServerIP*;
Authentication-Results: mx.google.com;
spf=neutral (google.com: *ServerIP* is neither permitted nor denied by
best guess record for domain of www-data@ubuntu) smtp.mailfrom=www-
data@ubuntu;
dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=*Domain*
Received: by ubuntu (Postfix, from userid 33)
id 036C93F7D3; Thu, 17 May 2018 14:10:20 +0000 (UTC)
SPF记录已全部在DNS设置中设置,并且在Google的SPF测试工具检查后正确无误 我们正在使用Google商家应用。 DKIM,DMARC和SPF一切都很好,所以不确定为什么说SPF Neutral和DMARC失败......
非常感谢任何帮助。
答案 0 :(得分:3)
这是问题所在:
Return-Path: <www-data@ubuntu>
接收服务器(谷歌)添加了返回路径标头,而不应将其设置为发件人。接收服务器从SMTP MAIL FROM
地址设置它,也称为“信封发件人”。此地址也是应该发送退回的地址,而不是在消息中指定的地址或回复地址。
这里的问题是,如果没有明确设置的信封发件人,PHP会尝试通过查找正在运行提交过程的当前用户和主机名来猜测一个。这就是您的信封发件人www-data
(用户名)@ ubuntu
(服务器的主机名)的原因。 ubuntu
不是可解析的主机名,因此Google无法查找SPF记录以进行检查,因此它会回退到默认的“中性”SPF判决,这就是您所看到的。
有几种方法可以解决这个问题。首先,您应该设置服务器的主机名,以便它知道自己调用什么 - PHP将看到该信息并使用它来设置回退地址。如果您运行hostname
命令,则可能会获得ubuntu
,因此请运行以下命令(立即和永久)进行修复:
sudo hostname myhostname.example.com
echo "myhostname.example.com" | sudo tee /etc/hostname
当然替换你的真实主机和域名。
设置用户名是比较棘手的,但实际上并不需要获取SPF通行证,因为这只会查看域名,因此www-data@myhostname.example.com
可以正常工作,但如果你想处理它可能会遇到问题正确反弹。
设置信封发件人最实用的方法是将其从邮件的“发件人”地址复制或明确设置,这应该由您的联系表单PHP代码完成。如果可以说服Contact Form 7使用PHPMailer,它将自动发生。如果它直接通过邮件功能或WordPress的一个包装器发送它可能会更棘手,你必须进一步调查。
无论如何,只需修复主机名即可获得SPF pass
,这是当前的问题。