3

PHPMailer を使用してメールを送信し、メールに DKIM 署名を追加したいと考えています。このパッチを適用する前に問題がありました。これで、署名付きメッセージを isnotspam.com に送信できるようになりました。

本文が 1500 文字未満のメッセージの署名に成功しました。文字数を増やすと (単純な a であっても) 署名は失敗します。

TXT ドメイン レコードを正しく設定しました。

このサービスを使用すると、メールの本文が原因で、常に「間違った本文ハッシュ」エラーが発生するためだと思います。

電子メール ヘッダーの署名は次のようになります。

DKIM-Signature: v=1; a=rsa-sha1; q=dns/txt; l=641; s=mymail;
    t=1354285494; c=relaxed/simple;
    h=From:To:Subject;
    d=revaxarts.com;
    z=From:=20"WP=203.4"=20<info@rvaxarts.com>
    |To:=test@rvaxarts.com
    |Subject:=20DKIM=20Test;
    bh=Sx1Rj3c65v2Hk0fmg2j5XNIDi14=;
    b=n4OGAwl3i[...]AOkfUglp6iiYZ6B2M3ZKlGW5gDfE=
4

2 に答える 2

4

ここでは、Perl スクリプトと間違ったボディ ハッシュで同じ問題が発生しました。

\n改行に使用しました(例ではヘッダー行の終わり)。しかし、使用する必要があります\r\n。これで解決しました!

編集: コメントと次の情報への URL について ArtemGr に感謝します (リンクの腐敗を防ぐためにhttp://permalink.gmane.org/gmane.mail.postfix.user/223780からコピー):

破損の原因として考えられるのは、送信アプリケーションが RFC 5322 または RFC 5321 と何らかの点で互換性のない電子メールを生成することです。

  • 990 を超える行。

    Postfix SMTP クライアントは行の長さを SMTP プロトコルの制限である 1000 バイト以下に保ちます。この変更は署名後に行われるため、DKIM 署名が確実に壊れます。

    長い行が途切れる問題を避けるために、メールは quoted-printable または base64 エンコーディングで、最大 80 文字の長さの行で送信してください。

  • 行末の形式が正しくありません。

    SMTP では行末が必要であり、その他のコンテキストでは文字または文字を許可しません。

    Postfix sendmail コマンドは、UNIX スタイルの<LF>[改行] 行末を想定しています。[carriage-return line-feed]で終わる行も受け入れ<CR><LF>ますが、同じメッセージで行末スタイルを混在させることはできません。

等々。DKIM 署名が存続することを確認したい場合は、RFC 5322 または RFC 5321 のプロトコル仕様内にある電子メールを送信する必要があります。

于 2013-02-26T21:44:51.400 に答える