2016-10-12 13 views
0

У меня есть небольшая программа, предназначенная для проверки наличия этих трех почтовых записей для противодействия спуфированию. Кажется, что это работает на конкретных доменах, однако они, похоже, настраиваются в каждом конкретном случае. Мой вопрос - это более надежный способ проверить эти записи. код здесь: 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 делает

Благодаря

ответ

1

Селектор DKIM не обязательно называются dkim. В примере Ryanair селектор является довольно случайным 15below (из пункта s= в заголовке подписи DKIM), поэтому вам нужно будет найти 15below._domainkey.ryanair.com.

+0

Спасибо за ваш ответ. Это стандарт? Например, из одного почтового устройства я вижу, что существует 'd =', который содержит домен, в котором хранится ключ 'dkim'. Пример ryanair просто имеет домен, хранящийся в поле 'd =', и вам нужно добавить '15below._domainkey.' к нему. Существует ли стандартный набор правил для поиска домена, в котором хранится ключ? – amlwwalker

+0

Yep - это правильно [здесь, в RFC] (http://dkim.org/specs/rfc4871-dkimbase.html#dkim-sig-hdr). Если вы собираетесь разбирать заголовки DKIM, вы ** действительно ** должны прочитать спецификацию! – Synchro