【问题标题】:Have I set up server emails correctly with Google SPF?我是否使用 Google SPF 正确设置了服务器电子邮件?
【发布时间】:2018-05-18 09:29:02
【问题描述】:

早安 当通过 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 失败...

非常感谢任何帮助。

【问题讨论】:

    标签: wordpress ubuntu spf


    【解决方案1】:

    这就是问题所在:

    Return-Path: <www-data@ubuntu>
    

    return-path 标头由接收服务器 (google) 添加,您不应将其设置为发件人。接收服务器从 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,这是直接的问题。

    【讨论】:

    • 感谢您的帮助,但不幸的是,这并没有解决问题。返回路径仍然是 www-data@ubuntu 当我运行主机名命令时,它没有给我 ubuntu 而是我的服务器名。我运行了你提供的命令并更新了它
    • 您可能需要重新启动 PHP 或您的 Web 服务器以使其接收更改。您可以通过在 PHP 中运行var_dump($_SERVER); 来检查它的服务器环境。
    • 我也面临这个问题,我的总是返回路径: 而我有 SPF:PASS , DKIM:PASS, DMARC:'PASS' 并且仍然结束在垃圾!任何人都请帮忙。
    • 未能通过通常意味着您最终会进入垃圾文件夹,但是,让它们全部通过并不意味着您不会。还有许多其他因素会影响收件箱的放置,其中大多数是未知的并且超出您的控制范围。您可以尝试阅读the PHPMailer docs on deliverability
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2013-12-24
    • 2011-05-25
    • 2016-01-13
    • 2011-03-08
    • 1970-01-01
    • 2017-11-26
    相关资源
    最近更新 更多