【问题标题】:PHP Mail() Function on Cpanel Hosts Going to SPAM [duplicate]Cpanel主机上的PHP Mail()函数转到垃圾邮件[重复]
【发布时间】:2021-01-09 23:20:16
【问题描述】:

从托管在 Cpanel 帐户上的 PHP mail() 函数发送的电子邮件经常以垃圾邮件告终(@outlook.com 一直如此,@gmail.com 有时也如此)

我确定这不是由于邮件的内容,而是由于标题中的某些内容。我最好的猜测是,要么是因为有一个标头字段指示电子邮件是由 PHP 脚本发送的,要么是因为无论您是否将 From: Reply-To: 和 Return-Path: 设置为相同的电子邮件地址, SMTP 服务器始终显示电子邮件是从 {cpanel account username}@servername.serverdomain.com 发送的,这与 From/Reply-To 地址不匹配,并且它似乎覆盖了我用于 {cpanel 的任何返回路径地址帐号用户名}@servername.serverdomain.com

如您所知,Web 应用程序可以代表用户发送电子邮件,但该用户的电子邮件地址与应用程序运行所在的域不同。所以服务器可能是 serverdomain.com 而用户的电子邮件可能是 something@someotherdomain.com

检查测试脚本的标头或发送的电子邮件,SMTP 服务器始终显示电子邮件是从 cpanel-account-username@server1.serverdomain.com 发送到 Gmail 后的部分标头显示:

Return-Path: <cpanel-account-username@server1.serverdomain.com>
Received: from server1.serverdomain.com (server1.serverdomain.com. [XXX.XXX.XXX.XXX])
    by mx.google.com with ESMTPS id w7si15164878pgi.491.2020.09.22.16.51.14
    for <testto@gmail.com>
    (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
    Tue, 22 Sep 2020 16:51:14 -0700 (PDT)
Received-SPF: pass (google.com: domain of cpanel-account-username@server1.serverdomain.com designates XXX.XXX.XXX.XXX as permitted sender) client-ip=XXX.XXX.XXX.XXX;
Authentication-Results: mx.google.com;
   spf=pass (google.com: domain of cpanel-account-username@server1.serverdomain.com designates XXX.XXX.XXX.XXX as permitted sender) smtp.mailfrom=cpanel-account-username@server1.serverdomain.com
Received: from cpanel-account-username by server1.serverdomain.com with local (Exim 4.93) (envelope-from <cpanel-account-username@server1.serverdomain.com>) id 1kKs41-00014X-4u for test@gmail.com; Tue, 22 Sep 2020 16:51:13 -0700
To: testto@gmail.com
Subject: Something
X-PHP-Script: suitecpanelhostdomain.com/cms/index.php for XXX.XXX.XXX.XXX
X-PHP-Originating-Script: 1006:test_script.php
From: From Name <something@someotherdomain.com>
Reply-To: something@someotherdomain.com
MIME-Version: 1.0
Content-Type: text/html; charset=ISO-8859-1
X-Priority: 3
X-Mailer: PHP7.3.22

如果我能够更改标头,使其认为电子邮件是从 something@someotherdomain.com 而不是 cpanel-account-username@server1.serverdomain.com 发送的,我认为这不会作为 server1.serverdomain .com 的 IP 地址与 someotherdomain.com 的 MX 或 SPF 记录不匹配,因为 cpanel 帐户的域不处理该应用程序用户的电子邮件地址域的电子邮件。

一般来说,一些在 CPanel 上运行 PHP(或使用 PHP mail())的编码人员之前肯定遇到过这种情况,想知道是否有人找到任何解决方案?我应该切换到 PhpMailer 以获得更好的标题控制,如果是,我应该改变什么?

【问题讨论】:

标签: php email phpmailer cpanel


【解决方案1】:

如您所知,Web 应用程序可以代表用户发送电子邮件,但该用户的电子邮件地址与应用程序运行所在的域不同。所以服务器可能是 serverdomain.com 而用户的电子邮件可能是 something@someotherdomain.com

您可以尝试这样做,但一般来说它不会起作用,您不应该尝试。这是伪造的,只会导致您被列入黑名单或被阻止。只是不要。

许多服务只允许您从您的帐户地址发送,而忽略任何其他地址。 Gmail 允许您预先配置其他别名,但您不能从任意地址发送,主要是因为它通常是伪造的。

实施 SPF、DKIM(最好在您的本地邮件服务器中而不是在 PHP 中)和 DMARC 以您可以接受的最严格的设置,确保您的反向 IP 与您的转发名称匹配。为您的信封发件人使用 VERP 寻址,以便您可以识别来自行为不端的邮件服务器的退回邮件。

我建议不要使用 PHP 的 mail() 函数(它很慢、不安全且不灵活)——而是通过 SMTP 发送到 localhost。也不要构建自己的消息 - 使用库(例如您标记此问题的 PHPMailer),因为您遇到编码和其他问题。

Gmail 的垃圾邮件过滤非常多变,但查看收到的邮件的标题会告诉您为什么它对您的邮件不满意。

an article about these kind of deliverability issues in the PHPMailer wiki

【讨论】:

    【解决方案2】:

    如果您启动 PHP 邮件功能,默认情况下 X-PHP-Script 和 X-PHP-Originating-Script 会固定在电子邮件上 - 许多人使用它可以毫无问题地向 Gmail 和 Hotmail 发送电子邮件,所以我怀疑它与标题无关。

    垃圾邮件过滤既是一门艺术,也是一门科学。通常,一封电子邮件以 0 分开始,经过 100 次测试,最后获得分数,如果达到阈值,则将其放入垃圾邮件文件夹。

    有时这不在你的控制范围内。

    如果它是一个共享托管服务器,上面有 100 个甚至 1000 个站点,服务器上的另一个网站可能会被入侵,发送垃圾邮件,服务器 IP 可能会被列入已知的黑名单。

    您可以使用 MX Toolbox 进行检查:https://mxtoolbox.com/blacklists.aspx

    Gmail 和 Hotmail 等公共服务提供商也运行自己的内部黑名单 - 它们将识别自己的用户是否报告来自特定 IP 的垃圾邮件,并采取适当的措施全面保护其用户。

    也可能是因为反向 DNS。 server1.serverdomain.com 解析为 XXX.XXX.XXX.XXX 但 XXX.XXX.XXX.XXX 是否解析为 server1.serverdomain.com?

    如果没有,这可能会在垃圾邮件过滤器对电子邮件进行评分时添加负分。

    MX 工具箱也可以在这里提供帮助:https://mxtoolbox.com/ReverseLookup.aspx

    此外,有时如果发件人域 (server1.serverdomain.com) 没有指定 A 记录和 MX 记录,它会导致垃圾邮件过滤器为电子邮件添加分数。在某些情况下,共享主机使用 A 记录而不是 MX 记录设置服务器。

    我将对上述 3 个选项进行检查,如果有任何失败,请联系您的托管服务提供商并要求他们进行调查。我按严重程度写了它们。

    SPF 在这个实例中传递,所以看起来不是问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 2012-12-30
      • 2012-08-24
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      相关资源
      最近更新 更多