簡體   English   中英

使用PHP發送郵件時,DKIM簽名無法驗證

[英]DKIM Signature not validating when sending mail with PHP

我的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

感謝您的幫助,我拼命想讓這個工作起來,並且已經在牆上撞了好幾個小時了。

我在這里給出了答案: 在基於PHP的SMTP客戶端中設置DomainKeys / DKIM

基本上您需要確保的是,您提供MTA添加到您的外發電子郵件中的所有標頭。 由於不同的系統配置不同,因此沒有一種尺寸適合所有解決方案。

查看簽名失敗的消息源(並給出消息已更改錯誤)以確定添加了哪些標頭。 通常,您的MTA將添加Message-IDDate標頭(如果缺少日期標題,也可能導致垃圾郵件刺客評分較低,因此您也可以包括它!)。

另一個常見的錯誤是您在簽署郵件后自己更改郵件,因此請確保在簽署郵件后未對代碼進行任何修改。

在確定添加了哪些標頭之后,您應該自己添加這些標頭(因此將其添加的MTA的默認行為覆蓋),然后再簽名。

我用dkim發現了php mail()+ postfix的奇怪行為:

如果你做

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

DKIM不正確,但如果你這樣做:

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

一切都好! 奇怪。 很奇怪。 也建議用戶使用

trim($emailContent) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM