C# - Как вы находите записи почты DMARC и DOMAIN KEYS (DKIM) домена, используя C#?
Я создаю консольное приложение C# в VS, которое просит пользователя ввести домен, например, example.net и возвращает все почтовые записи (A, MX, SPF, DMARC, DKIM, CNAME)
Я использовал приведенный ниже пример, который возвращает строку записей SPF TXT, но не возвращает записи DMARC и DKIM TXT. Странно? - Или нет?
Я после _domainkey.example.net
а также k1._domainkey.example.net
(DKIM).
Я после _dmarc.example.net
(DMARC).
private static IList<string> GetTxtRecords(string hostname)
{
IList<string> txtRecords = new List<string>();
string output;
string pattern = string.Format(@"{0}\s*text =\s*""([\w\-\=]*)""", hostname);
var startInfo = new ProcessStartInfo("nslookup");
startInfo.Arguments = string.Format("-type=TXT {0}", hostname);
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
using (var cmd = Process.Start(startInfo))
{
output = cmd.StandardOutput.ReadToEnd();
}
MatchCollection matches = Regex.Matches(output, pattern, RegexOptions.IgnoreCase);
foreach (Match match in matches)
{
if (match.Success)
txtRecords.Add(match.Groups[1].Value);
}
return txtRecords;
}
Как получить почтовые записи DMARC и DOMAIN KEY (DKIM)?
2 ответа
Я бы использовал такую утилиту, как ARSoft Tools for DNS, чтобы указать текстовые записи.
Во-вторых, сообщение, которое содержит подписанный заголовок DKIM, также включает в себя "селектор", как он называется, для субдомена: mail._domainkey.msn.com. Где субдомен "почта" является селектором.
В заголовок подписи DKIM включены заголовки, которые скомпрометируют подпись. Они понадобятся вам для проверки подлинности сообщения.
Каждый ключ DKIM имеет свою собственную текстовую запись DNS под своим поддоменом с шаблоном *._domainkey.example.net
Большинство DNS-серверов не позволяют перечислять все записи или все записи определенного типа. Это предотвращает получение злоумышленниками знаний об услугах, размещенных в домене, а также предотвращает атаки в стиле отражения. Найти все ключи DKIM было бы в равной степени невозможно найти список всех поддоменов, работающих на stackru.com.
Чтобы найти определенный ключ домена, имя которого вы знаете, просто запустите DNS-запрос для его имени хоста. В вашем примере это было бы так же, как вызов этой функции с именем хоста k1._domainkey.example.net
, Вам нужно будет написать другое регулярное выражение для извлечения желаемых значений из записи ключа домена.