我的gmail / hotmail过滤来自我服务器的垃圾邮件问题。垃圾邮件刺客分数很低,所以我知道我的IP不在任何黑名单上,或者这意味着它是gmail / hotmail用来阻止电子邮件通过的过滤。
我做了一些研究并读到使用DKIM可能会解决我遇到的问题。我继续在我的服务器上启用DKIM。现在,当我使用我的电子邮件客户端发送电子邮件时,位于此处的工具(http://www.brandonchecketts.com/emailtest.php)会将DKIM签名报告为有效。
下一步是在我的PHP邮件中实现DKIM签名。所以我继续使用这个位于此处的DKIM类( http://sourceforge.net/projects/dkim-class-php/ ),这是PHPMailer的衍生产品。
但是,当我现在发送电子邮件时,尽管包含DKIM签名,但我从验证工具中收到了一个奇怪的错误。
result = fail
Details: message has been altered
您可以在此处查看完整报告:http://www.brandonchecketts.com/emailtest.php?email=K86KTXpMbl%40www.brandonchecketts.com
感谢您的帮助,我拼命想让这个工作起来,并且已经把我的头撞在墙上好几个小时了。
答案 0 :(得分:3)
我在这里给出了答案:Setting up DomainKeys/DKIM in a PHP-based SMTP client
您需要确保的是,您需要提供MTA添加到您外发电子邮件中的所有标头。由于不同的系统配置不同,因此没有一种尺寸适合所有解决方案。
查看签名失败的消息来源(并提供 消息已更改 错误)以确定添加了哪些标头。通常,您的MTA会添加 消息ID 和 日期 标头(日期标头也可能会导致垃圾邮件不足assasin得分,如果它丢失,所以你也可以包括它!)。
另一个常见错误是您在签署邮件后自己更改了邮件,因此请确保在您签署邮件后未对代码进行任何修改。
在确定添加了哪些标题后,您应该在签名之前自己添加这些标题(因此将MTA的默认行为覆盖它们)添加到电子邮件中。
答案 1 :(得分:0)
我发现php mail()+ postfix与dkim的奇怪行为:
如果你做
$headers .= "From: USER <$from_email>\n";
DKIM不正确,但如果你这样做:
$headers .= "From: USER <" . $from_email . ">\n";
一切都好! 奇怪。很奇怪。也建议用户使用
trim($emailContent)