>>>>> Artem Chuprina <r...@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

Ответить