6

我在 gmail/hotmail 将来自我的服务器的电子邮件过滤为垃圾邮件时遇到问题。Spam Assassin 分数很低,所以我知道我的 IP 不在任何黑名单之类的名单上,这意味着 gmail/hotmail 使用过滤器阻止电子邮件通过。

我做了一些研究并阅读到使用 DKIM 可能会解决我遇到的问题。我继续在我的服务器上启用了 DKIM。现在,当我使用我的电子邮件客户端发送电子邮件时,位于此处的工具 ( http://www.brandonchecketts.com/emailtest.php ) 报告 DKIM 签名有效。

下一步是在我的 PHP 邮件中实现 DKIM 签名。所以我继续使用这个位于此处 ( http://sourceforge.net/projects/dkim-class-php/ ) 的 DKIM 类,它是 PHPMailer 的衍生产品。

但是,当我现在发送电子邮件时,尽管包含 DKIM 签名,但我从验证工具中收到了一个奇怪的错误。

result = fail
Details: message has been altered

您可以在此处查看完整报告:http ://www.brandonchecketts.com/emailtest.php?email=K86KTXpMbl%40www.brandonchecketts.com

感谢您的帮助,我正在拼命地尝试使这项工作正常进行,并且已经将我的头撞在墙上几个小时了。

4

2 回答 2

4

我在这里给出了答案:在基于 PHP 的 SMTP 客户端中设置 DomainKeys/DKIM

基本上,您需要确保提供 MTA 添加到外发电子邮件的所有标题。因为不同的系统配置不同,所以没有一种适合所有的解决方案。

查看签名失败的消息源(并给出消息更改错误)以确定添加了哪些标头。通常,您的 MTA 将添加Message-IDDate标头(如果缺少 Date 标头,它也可能导致垃圾邮件刺客得分较低,因此您也可以包含它!)。

另一个常见的错误是您在对消息签名后自己更改了消息,因此请确保在您签署消息后不对您的代码进行任何修改。

在确定添加了哪些标头之后,您应该在签名之前自己将这些标头添加到电子邮件中(并因此覆盖添加它们的 MTA 的默认行为)。

于 2012-10-23T03:21:39.810 回答
0

我发现 php mail() + postfix 与 dkim 的奇怪行为:

如果你做

$headers .= "From: USER <$from_email>\n";

DKIM 将不正确,但如果您这样做:

$headers .= "From: USER <" . $from_email . ">\n";

一切都好!奇怪的。很奇怪。还建议用户制作

trim($emailContent) 
于 2016-02-09T19:22:51.177 回答