[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: