Назад | Перейти на главную страницу

postfix + opendkim: поля «Sender:» и «Message-Id» не включаются в подпись

У меня работает postfix и opendkim. postfix общается с opendkim через сокеты unix. Все это работает до тех пор, пока я не добавляю какие-то специальные поля заголовка письма в список полей, которые должен подписывать opendkim.

конфигурация постфикса:

main.cf:

...
smtpd_milters = unix:/var/spool/postfix/milter/opendkim

non_smtpd_milters = unix:/var/spool/postfix/milter/opendkim
...

В моем opendkim.conf есть такая запись:

...
AlwaysSignHeaders      To,Subject,MIME-Version,Content-Type,Sender,From,Message-Id,Date,Reply-To,List-Unsubscribe
...

Если я отправлю электронное письмо с такой командой postfix sendmail

sendmail -f myenvelopefrom@mydomain.com -i -t <<EOF
From: me@mydomain.com
Sender: postmaster@mydomain.com
To: testaccount@gmail.com
Subject: Test

Test
EOF

Gmail сообщит мне:

dkim=hardfail

Используя

Diagnostics true

запись в opendkim.conf показала через запись заголовка отладочной почты "z = ...", что opendkim не включил поля "Message-Id" и "Sender" в подпись, но сообщил о включении с

h=From:To:Subject:Date:MIME-Version:Content-Type:Sender:Reply-To:List-Unsubscribe;

запись в заголовке письма.

Вникнув в это, я обнаружил, что когда я удаляю поля Message-Id и Sender из записи «AlwaysSignHeaders» в opendkim.conf, Gmail снова счастлив.

Поскольку я отправляю почту с помощью команды sendmail, я могу быть уверен, что по крайней мере поле «Отправитель:» должно быть доступно для postfix и opendkim с самого начала.

Итак, если opendkim будет использовать все поля заголовка, которые он получает, это означает, что postfix не предоставляет opendkim все поля заголовка. Я попытался проверить это, включив подробное ведение журнала для процессов «очистки» и «тривиальной перезаписи» постфикса, но должен признать, что не вижу ничего полезного в журналах, особенно я не могу извлечь информацию какие поля заголовка почты postfix предоставляет opendkim. Если кто-то может использовать это, я могу разместить эти журналы здесь ...

У меня заканчиваются идеи, поэтому я надеюсь, что кто-нибудь может дать мне несколько полезных советов ...

Я выяснил причину (с помощью добрых ребят из списка рассылки opendkim):

В моем файле opendkim.conf у меня было только поле

AlwaysSignHeaders       From,Sender,To,CC,Subject,Message-Id,Date

указано. Оказалось, что нужно добавить и поле SignHeaders, теперь конфиг выглядит так:

...
SignHeaders             From,Sender,To,CC,Subject,Message-Id,Date
AlwaysSignHeaders       From,Sender,To,CC,Subject,Message-Id,Date
...

Это оно.

Редактировать:

Ребята из opendkim отметили, что AlwaysSignHeaders устарела, Заголовки следует использовать вместо этого.

Вы пробовали подписать тестовое сообщение с помощью обе Заголовки Message-ID: и Sender: присутствуют?

Ваша проблема может быть вызвана тем, что milter получает версию сообщения перед posstfix / MTA добавил вышеупомянутые заголовки (я уверен, что любой хороший MTA исправляет отсутствующий заголовок Message-Id:).

http://www.elandsys.com/resources/sendmail/dkim.html : DKIM использует заголовки и текст сообщения электронной почты для создания подписи. Если заголовки переписываются или текст добавляется к телу сообщения после его подписания, проверка dkim не выполняется.

P.S. IMHO opendkim должен предоставить возможность генерировать отсутствующий идентификатор сообщения:


Добавлено для будущих читателей: OpenDKIM предоставляет возможности для отладки проблем с измененными заголовками: KeepTemporaryFiles и TemporaryDirectory

http://www.opendkim.org/opendkim.conf.5.html