Re: DKIM и списки рассылки
>>>>> Artem Chuprina <ran@lasgalen.net> writes:
>>>>> Ivan Shmakov -> debian-russian@ @ Fri, 06 Oct 2017 20:20:26 +0000:
[…]
>>> Прибить DKIM я могу. Но From: (не envelope from) хотелось оставить
>>> прежним. А он, зараза, из домена, которому положен DKIM, и его
>>> считают спамом.
>>> Подписать у себя не пробовал, но логично предположить, что это тоже
>>> не вариант, поскольку подпись будет ключом не того домена, что во
>>> From.
>> На этот случай раздел B.2.3 RFC 6376 как будто бы предлагает
>> использовать Sender:.
> О, вот это интересно. В смысле, подписать своим ключом, а при
> проверке сравнят мой домен с Sender, если он есть?
Именно. Хотя есть оговорка: вне приложений, RFC 6376 нигде не
упоминает Sender: явно. Впрочем, 1.2 содержит следующее:
INFORMATIVE RATIONALE: The signing identity specified by a DKIM
signature is not required to match an address in any particular
header field because of the broad methods of interpretation by
recipient mail systems, including MUAs.
Фактически, такого рода письма проходят проверку DKIM; e. g.:
DKIM check details:
----------------------------------------------------------
Result: pass (matches Sender: ivan(at)siamics(dot)net)
ID(s) verified: header.d=siamics.net
Authentication-Results: mx.google.com;
dkim=pass header.i=(at)siamics(dot)net header.s=a2013295 header.b=SSHFcuvC;
spf=pass (google.com: domain of ivan(at)siamics(dot)net designates XXX as permitted sender) smtp.mailfrom=ivan(at)siamics(dot)net;
dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=a.dmarc.test.iadu.net
С другой стороны… я ведь уже упоминал DMARC? При выполнении
аутентикации сообщения, RFC 7489 предполагает использование
/исключительно/ From:. Доводы в пользу такого подхода можно
найти в разделе A.3; первый же из них — «пользователь, как
правило, не видит Sender:».
Чтобы прояснить ситуацию, провел следующий опыт. Во-первых,
создал три новых почтовых домена, с поддержкой SPF, DKIM, и
тремя различными политиками DMARC: none, quarantine, reject:
$ dig +noall +answer txt {,_dmarc.}{a,b,c}.dmarc.test.iadu.net \
| sed -e 's/\.dmarc\.test\.iadu\.net\.\s/\t/'
a 300 IN TXT "v=spf1 ?all"
b 300 IN TXT "v=spf1 ?all"
c 300 IN TXT "v=spf1 ?all"
_dmarc.a 300 IN TXT "v=DMARC1; p=none; rua=mailto:ivan+dmarc-a(at)siamics(dot)net; ruf=mailto:ivan+dmarc-f(at)siamics(dot)net"
_dmarc.b 300 IN TXT "v=DMARC1; p=quarantine; rua=mailto:ivan+dmarc-a(at)siamics(dot)net; ruf=mailto:ivan+dmarc-f(at)siamics(dot)net"
_dmarc.c 300 IN TXT "v=DMARC1; p=reject; rua=mailto:ivan+dmarc-a(at)siamics(dot)net; ruf=mailto:ivan+dmarc-f(at)siamics(dot)net"
$
Записи проверил через Proofpoint DMARC check:
https://stopemailfraud.proofpoint.com/dmarc/?lookup=a.dmarc.test.iadu.net
Затем, отправил себе на Gmail письма с соответствующими адресами
во From: (но основным адресом в MAIL FROM:, Sender: и, на всякий
случай, — Reply-To:):
$ swaks --server=ip6-localhost \
--from=ivan(at)siamics(dot)net \
--header={Sender,Reply-To}:\ ivan(at)siamics(dot)net \
--header=From:\ j.random.user(at)a(dot)dmarc(dot)test(dot)iadu(dot)net \
[…] --to=XXX,YYY(at)gmail(dot)com,\
check-auth(at)verifier(dot)port25(dot)com
В итоге, письмо с адреса @a попало в Inbox; с @b — в Spam; с @c
— было возвращено. (Пример Authentication-Results: см. выше.)
Мне, возможно, следует повторить опыт «вчистую», но первые
письма, отправленные до добавления _dmarc-записей, все ушли в
Spam.
[…]
>>> Т. е. SPF только .forward ломал, а DKIM еще и рассылки. Или нет?
>> Статистики на этот счет не имею, но есть подозрение, что в
>> большинстве случаев DKIM ломает рассылки, правящие Subject:,
>> Reply-To:, или тело — и не добавляющие при этом свои Sender: и
>> DKIM-подпись.
> Ну, при таком условии нормально. Спасибо.
С учетом того, что DMARC, похоже, все же «ломает» классические
рассылки (кроме политики «none») — вроде как не за что.
FTR:
$ dig +noall +answer txt _dmarc.{gmail.com,{yandex,mail}.ru}
_dmarc.gmail.com. 600 IN TXT "v=DMARC1; p=none; rua=mailto:mailauth-reports(at)google.com"
_dmarc.yandex.ru. 3600 IN TXT "v=DMARC1; p=none; fo=1; rua=mailto:dmarc_agg(at)auth.returnpath.net,mailto:dmarc-rua(at)yandex.ru; ruf=mailto:dmarc_afrf(at)auth.returnpath.net"
_dmarc.mail.ru. 600 IN TXT "v=DMARC1;p=reject;rua=mailto:d(at)rua.agari.com,m" "ailto:dmarc_rua(at)corp.mail.ru;ruf=mailto:d(at)ruf.a" "gari.com;fo=1;"
$
Делаем выводы.
--
FSF associate member #7257 http://am-1.org/~ivan/ 7D17 4A59 6A21 3D97 6DDB
Reply to: