DKIM + Postfix + многострочные письма

M
На сайте с 22.02.2007
Offline
161
1107

Не получается завести нормально DKIM.

Кодирую письмо (заголовки и тело) base64.

Если тело письма однострочное, то проверка на валидность письмо успешно проходит. Но вот если попробовать отправить 2 и более строки, то проверка DKIM подписи проваливается.

Форматирую тело письма согласно RFC 2045:

$message->body = chunk_split(base64_encode($message->body));

Вот так выглядят заголовки письма:


Received: from mxfront7o.mail.yandex.net ([127.0.0.1])
by mxfront7o.mail.yandex.net with LMTP id wTEi0pkb
for <maxttor@ya.ru>; Thu, 12 Jun 2014 21:58:29 +0400
Received: from smartprogres.net (smartprogres.net [178.162.193.146])
by mxfront7o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id LPLB4AJr7k-wT2uroQj;
Thu, 12 Jun 2014 21:58:29 +0400
X-Yandex-Front: mxfront7o.mail.yandex.net
X-Yandex-TimeMark: 1402595909
X-Yandex-Uniq: ba1f812d-8da8-4843-9b1e-80be82eb33eb
Authentication-Results: mxfront7o.mail.yandex.net; spf=pass (mxfront7o.mail.yandex.net: domain of smartprogres.net designates 178.162.193.146 as permitted sender) smtp.mail=noreply@smartprogres.net; dkim=fail header.i=@smartprogres.net
X-Yandex-Spam: 1
Received: by smartprogres.net (Postfix, from userid 0)
id B184774053F; Thu, 12 Jun 2014 18:01:12 +0200 (CEST)
DKIM-Filter: OpenDKIM Filter v2.9.0 smartprogres.net B184774053F
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=smartprogres.net;
s=mail; t=1402588872;
bh=e0d2967WruruLuqMY9Cd+LjFFkYPnCTFztMpLM7nCzw=;
h=To:Subject:From:Date;
b=OtSpEy6etCWR+562vDFgjQdy9uRMzuRIN1Y7NU7tv1MUZc16u0mEHqccF1GLMOR3d
demD60EQ4LA0HgLOtoLRWghn249CbcjNLeBrgqWSbr2jiH18sSfnPMZBGKrjz3dPml
Z+GsCotleBncmaN0fb+3f6Y50HToUIvDPZIWs1KA=
To: maxttor@ya.ru
Subject: =?utf-8?b?0KHQtdGA0LLQuNGBIFNtYXJ0UHJvZ3Jlc3Mg0LfQsCAyINCz0L7QtNCwINC+0LHRitC10LTQtdC90LjQuyA0MC4wMDAg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lk=?=
X-PHP-Originating-Script: 0:YiiMail.php
From: =?utf-8?b?U21hcnRQcm9ncmVzcw==?= <noreply@smartprogres.net>
MIME-Version: 1.0
Content-type: text/html; charset=utf-8
Content-Transfer-Encoding: BASE64
Message-Id: <20140612160112.B184774053F@smartprogres.net>
Date: Thu, 12 Jun 2014 18:01:12 +0200 (CEST)
Return-Path: noreply@smartprogres.net
X-Yandex-Forward: 83584dbe56845a25e0ace21794cc419e

aHRtbGhlYWRoZWFkYm9keXN0eWxlbWFyZ2luMHBhZGRpbmcwYmFja2dyb2h0bWxoZWFkaGVhZGJv
ZHlzdHlsZW1hcmdpbjBwYWRkaW5nMGJhY2tncm9odG1saGVhZGhlYWRib2R5c3R5bGVtYXJnaW4w
cGFkZGluZzBiYWNrZ3JvaHRtbGhlYWRoZWFkYm9keXN0eWxlbWFyZ2luMHBhZGRpbmcwYmFja2dy
bw==

В какую сторону копать?

Торрент Трекер Катушка - скачать фильмы (http://katushka.net) | SmartProgress - достижение целей (https://smartprogress.do/) Партнерская программа SmartProgress (https://smartprogress.do/affiliate)
Andreyka
На сайте с 19.02.2005
Offline
822
#1

Так как подпись письма идет в этапе его прохождения в MTA, то содержимое на подпись не виляет

Смотрите настройки своего DKIM и postfix. Включайте отладочный лог.

Не стоит плодить сущности без необходимости
M
На сайте с 22.02.2007
Offline
161
#2

Проблема заключалась в том, что postfix к символу переноса строки (\n) дописывал еще и символ возврат коретки (\r)... хотя кто его просил об этом...

Так вот, нужно при формировании тела письма в качестве разрыва строк использовать только символ \n:

$message->body = chunk_split(base64_encode($message->body), 76, "\n");

Спасибо, Andreyka, за помощь.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий