У меня есть небольшая программа, предназначенная для проверки наличия этих трех почтовых записей для противодействия спуфированию. Кажется, что это работает на конкретных доменах, однако они, похоже, настраиваются в каждом конкретном случае. Мой вопрос - это более надежный способ проверить эти записи. код здесь: https://gist.github.com/amlwwalker/f445932d2fdb0f9f9a5e457c1894bf7d Примеры:Проверка программного обеспечения SPF, DKIM, DMARC
Ryanair.com:
result: v=spf1 a mx include:mail1.ryanair.com include:mail2.ryanair.com ~all
err: lookup _dmarc.ryanair.com on 172.16.4.1:53: no such host
err: lookup dkim._domainkey.ryanair.com on 172.16.4.1:53: no such host
Ryanair Email заголовок:
Authentication-Results: mx.google.com;
dkim=pass [email protected];
spf=pass (google.com: domain of [email protected] designates 209.235.250.215 as permitted sender) [email protected]
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=15below; d=care.ryanair.com; h=MIME-Version:From:To:Date:Subject:Message-ID:Content-Type; [email protected]; bh=MCorT6FfWGOmISJQSzdv4YLmKfg=; b=eXcQvy0odmzIAYy11bfM8OsoiXziin5E1hbWHvxlY6Q+KSpZr6/5OiUZ4EiNoCpNwFrciKB9Yj8G
wmZOZwxQd3PW05+2bnu+8oKMPij/AyAEAi2tJ0TBEZxM7BOsno84L3eZ0BQFZvog6bW9UQE1fJCQ
aoQYXPgsHV6dzWjmHYo=
Так мне, что выглядит она DKIM и SPF. Однако код не находит запись DKIM.
marvelapp.com
result: v=spf1 include:mailgun.org include:spf.mandrillapp.com include:spf1 include:mail.zendesk.com include:spf.mail.intercom.io -all
err: lookup _dmarc.marvelapp.com on 172.16.4.1:53: no such host
err: lookup dkim._domainkey.marvelapp.com on 172.16.4.1:53: no such host
Marvelapp Email Заголовок:
Received-SPF: pass (google.com: domain of [email protected] designates 31.193.196.244 as permitted sender) client-ip=31.193.196.244;
Authentication-Results: mx.google.com;
dkim=pass [email protected];
spf=pass (google.com: domain of [email protected] designates 31.193.196.244 as permitted sender) [email protected]
Так что я не понимаю, почему в некоторых случаях dkim._domainkey.domain.TLD правильный способ найти ключ dkim, а иногда и его явно нет (google, похоже, находит его, но как? Каков наилучший способ поиска ключа dkim?
Я хочу, чтобы этот фрагмент кода возвращал тот же результат как переход на «Показать оригинал» в Gmail делает
Благодаря
Спасибо за ваш ответ. Это стандарт? Например, из одного почтового устройства я вижу, что существует 'd =', который содержит домен, в котором хранится ключ 'dkim'. Пример ryanair просто имеет домен, хранящийся в поле 'd =', и вам нужно добавить '15below._domainkey.' к нему. Существует ли стандартный набор правил для поиска домена, в котором хранится ключ? – amlwwalker
Yep - это правильно [здесь, в RFC] (http://dkim.org/specs/rfc4871-dkimbase.html#dkim-sig-hdr). Если вы собираетесь разбирать заголовки DKIM, вы ** действительно ** должны прочитать спецификацию! – Synchro