我创建了一个自动脚本,可以在 PHP 中使用
PHPMailer
生成自定义 HTML 电子邮件,并将其从我的自定义域电子邮件帐户发送给任何收件人。
这些电子邮件都经过了试金石测试,并在所有客户端中完美呈现,没有任何评论,没有看似垃圾邮件的字符串,一切都很好。我的域名也不在任何黑名单等中
对于每个收件人来说,电子邮件首先几乎都会被放入垃圾邮件中。
然后我回到我的托管服务,他们建议我在我的电子邮件域的 DNS 区域中创建 SPF 记录。
这极大地提高了我的电子邮件的非垃圾邮件发送率。
尽管如此,一些客户仍然在垃圾文件夹中收到我们公司的电子邮件。我在 ACID 上使用电子邮件运行了垃圾邮件测试,所有测试都通过了,包括 SPF - 记录验证等。 出现的唯一警告是,猜猜看,对于 Outlook.com 和 gmail.com,电子邮件最终会落入垃圾邮件文件夹(没有说明原因),这显然是一个大问题。
事实上,唯一仍在抱怨垃圾邮件问题的客户确实主要是 Gmail 用户。
然后我遇到了这个非常有趣的帖子,并了解到谷歌推荐所有的设置,SPF,DKIM和DMARC。
我首先将
include:_spf.google.com
部分包含在我的SPF记录中,但是当谈到DKIM时,我陷入困境。
我很困惑,要拥有一个有效的 DKIM - 在您所在域的 DNS 内注册,您是否真的需要拥有一个 Google Workspace 帐户?因为显然您只能在该 Workspace 帐户中创建 DKIM 密钥,而且我担心这可能会在我的 Workspace 帐户的 14 个试用期后过期,从而进一步损害我的电子邮件域声誉而不是真正改善它。
或者我是否误解了事情,有一种不同的解决方案可以为给定的邮件客户端(例如域的 gmail)设置 DKIM(然后还有 DMARC)?我这么问是因为我没有任何设置 DKIM 的经验。
为了从管理控制台设置 DKIM,您肯定需要拥有一个 Google Workspace 帐号。使用Cloud Identity 免费订阅将不起作用,因为您将无法访问 Gmail 等服务。
要简单地从管理控制台生成密钥,您需要具有 Gmail 访问权限的正确订阅,该订阅仅在 Google Workspace 订阅中可用。
它很可能会在您的订阅到期后停止工作,因为它是从生成它的 Google Workspace 帐号链接到管理控制台的,一旦订阅暂停,一切都会停止工作。
DKIM 的原理是您(通过 DNS)发布加密密钥的一半,并使用另一半(秘密的、私有的)在您发出的邮件的标头中创建和提供签名。这不是静态字符串;它是该消息的一些其他标头的哈希值。
接收邮件服务器会进行加密检查以查看两半是否匹配。 (注意:这是该过程的一个大大简化的视图)。
通过 Google Workspace 设置 DKIM 意味着您在 DNS 中放置特定密钥,并且 Workspace 知道如何创建相应的签名。
因此,即使拥有 Workspace 帐户并设置 DKIM 也无法解决您的问题,因为您的 PHPMailer 脚本不会生成 DKIM 签名,即使生成了,也不会使用秘密私钥。
您也许能够找到一个可以实现 DKIM 的 PHP 库。这似乎是实现 DKIM 合规性的唯一可行途径。
谷歌和微软在合规性方面变得更加严格;首先使用 SPF,现在使用 DKIM 将垃圾邮件与合法邮件进行分类。
另一种方法可能是设置邮件服务器(不是 Google 的)、实施 DKIM 并将其用作 SMTP 网关。
关于 SPF 的注意事项:如果您正确设置了邮件并且让脚本从另一个域和/或 IP 地址发送电子邮件,您仍然会遇到失败。您需要包含(IP 地址或域名)所有外发邮件的来源。因此,SPF 记录可以保存多个源。
最后一点:设置 DMARC,让邮件服务器向您发送上门投递成功和失败的报告。