6

サーバーからの電子メールをスパムとしてフィルタリングする gmail/hotmail に問題がありました。Spam Assassin のスコアが非常に低いので、私の IP がブラックリストなどに載っていないことはわかっています。つまり、gmail/hotmail が使用するフィルタリングによって、メールの受信が阻止されているということです。

いくつかの調査を行ったところ、DKIM を使用すると問題が解決する可能性があることがわかりました。サーバーでDKIMを有効にしました。メール クライアントを使用してメールを送信すると、ここ ( http://www.brandonchecketts.com/emailtest.php ) にあるツールで DKIM 署名が有効であると報告されます。

次のステップは、DKIM 署名を PHP メールに実装することでした。そこで、PHPMailer のスピンオフである、ここ ( http://sourceforge.net/projects/dkim-class-php/ )にあるこの DKIM クラスを使用しました。

ただし、今メールを送信すると、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 が送信メールに追加するすべてのヘッダーを提供することです。システムが異なれば構成も異なるため、万能のソリューションはありません。

署名に失敗した (そしてMessage Alteredエラーが発生している) メッセージ ソースを調べて、どのヘッダーが追加されたかを確認します。通常、MTA はMessage-IDDateヘッダーを追加します (Date ヘッダーが欠落している場合、スパム アサシン スコアが低くなる可能性があるため、含めたほうがよいでしょう!)。

もう 1 つのよくある間違いは、メッセージに署名した後に自分でメッセージを変更することです。そのため、メッセージに署名した後にコードを変更しないようにしてください。

どのヘッダーが追加されたかを判断したら、署名する前に、それらのヘッダーを自分で追加する必要があります (したがって、それらを追加する MTA の既定の動作をオーバーライドします)。

于 2012-10-23T03:21:39.810 に答える
0

dkim での php mail() + postfix の奇妙な動作を見つけました:

あなたが作るなら

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

DKIM は正しくありませんが、そうすると:

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

大丈夫!変。非常に奇妙な。また、ユーザーが作成することをお勧めします

trim($emailContent) 
于 2016-02-09T19:22:51.177 に答える