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

Другие вопросы по тегам