DKIMで「body hash did not verify」というエラーが出る。

DKIMで「body hash did not verify」というエラーが出る。

Centos6.6、postfix2.6.6、opendkimの環境で、phpからメール送信している際に、dkimの署名に失敗している場合があることに気がつきました。失敗している際のメールヘッダは以下のようになっています。

dkim=neutral (body hash did not verify) header.i=@

いろいろ調べてみると、改行コードが「\n」でなく「\r\n」になっていると、このエラーになるらしい。
で、メール本文を作成しているスクリプトを確認してみると、

$contents = chunk_split(base64_encode$contents));

となっており、chunk_splitの引数に問題があることがわかりました。
(デフォルトの行末の区切り文字は「\r\n」)

$contents = chunk_split(base64_encode$contents), 75 , "\n");

のようにすると問題は解消しました。

なお、今回は、postfix2.6.6だったので、スクリプトを修正しましたが、postfix2.9以降であれば、sendmail_fix_line_endingsの設定で回避できたんじゃないかと思います。