【问题标题】:body has been altered failure on DKIM validation身体已被更改 DKIM 验证失败
【发布时间】:2019-04-16 17:56:00
【问题描述】:

我正在使用 PHPMailer 发送邮件,并喜欢在邮件中附加 DKIM 签名。我在申请this patch 之前遇到了问题。现在我可以向 isnotspam.com 发送成功签名的消息。

我已成功签署正文中少于 1500 个字符的消息。如果增加字符数(即使是简单的a)签名失败。

我已正确设置 TXT 域记录。

我猜这是因为电子邮件正文的原因,如果我使用this service,我总是会收到“错误的正文哈希”错误。

电子邮件标题中的签名如下所示:

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=

【问题讨论】:

    标签: phpmailer dkim


    【解决方案1】:

    我在这里遇到了同样的问题,Perl 脚本和错误的正文哈希。

    我使用\n 换行(例如标题行的结尾)。 但是你必须使用\r\n。这为我解决了!

    编辑: 感谢 ArtemGr 对以下信息的评论和 url(从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 样式的 &lt;LF&gt; [line-feed] 行结尾。 它还将接受以&lt;CR&gt;&lt;LF&gt; [carriage-return line-feed] 结尾的行,但您不能使用 同一条消息中的混合行尾样式。

    等等。如果您想确保 DKIM 签名继续存在,您 需要发送符合 RFC 5322 或 RFC 5321 协议规范的电子邮件;

    【讨论】:

    【解决方案2】:

    我的案例是 unicode 撇号和连字符字符。将它们替换为 ascii 后,DKIM 验证通过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多