Как проверить DNS и почтовую аутентификацию домена с помощью dnsight

Как проверить DNS и почтовую аутентификацию домена с помощью dnsight
dnsight – open source-инструмент на Python, который объединяет CLI и SDK для проверки настроек DNS домена, а также связанных почтовых механизмов защиты: SPF, DKIM, DMARC, DNSSEC, MX, CAA и части HTTP-заголовков. По своей роли dnsight ближе не к универсальному сканеру инфраструктуры, а к специализированному аудитору конфигурации домена и почтовой доставки. Такой фокус полезен в ситуациях, когда нужно быстро понять, почему домен проходит или не проходит базовые проверки почтовой безопасности, какие записи отсутствуют и где конфигурация выглядит неполной или противоречивой.

Что за инструмент и что делает dnsight

Очередность аудита dnsight в процессе разработки приложения.

dnsight поставляется как один пакет, который после установки даёт две модели работы. Первая модель – командная строка, где можно запускать аудит домена, отдельные проверки и генерацию некоторых записей. Вторая модель – импортируемый Python API, который позволяет встроить проверки в собственные утилиты, пайплайны или внутренние скрипты. Для редакционной, инженерной или DevSecOps-практики такой подход удобен тем, что одна и та же логика доступна и для ручного запуска, и для автоматизации.

Проект строится вокруг нескольких тематических групп проверок. В CLI есть команды audit, config, version и docs, а также отдельные группы caa, dkim, dmarc, dnssec, headers, mx и spf. Часть групп поддерживает подкоманду generate, то есть dnsight умеет не только проверять записи, но и формировать заготовки для некоторых конфигураций. Вывод можно получать в нескольких форматах, включая rich, json, sarif и markdown, а значит результаты реально встроить и в ручной разбор, и в CI-процессы, и в обмен отчётами между командами.

Коротко: dnsight полезнее всего там, где нужен узкий, повторяемый и формализованный аудит домена и почтовой аутентификации без разворачивания тяжёлой платформы.

dnsight распространяется по лицензии MIT. Для практики использования такая лицензия удобна: код можно брать в коммерческие и внутренние проекты, модифицировать и распространять дальше при сохранении текста лицензии. Для корпоративной среды такой режим обычно проще, чем копилефт-лицензии с более жёсткими требованиями.

Функции инструмента

Основная функция dnsight – аудит домена по нескольким связанным направлениям. Ниже – сжатая карта возможностей.

Блок Что проверяет или делает Практический смысл
audit Комплексный запуск проверок по домену Быстрый общий снимок состояния DNS и почтовой аутентификации
spf Проверка SPF-записей и связанные проблемы Помогает понять, кто имеет право отправлять почту от имени домена
dkim Проверка DKIM-сигналов Показывает, есть ли криптографическое подтверждение подлинности писем
dmarc Проверка DMARC и генерация записей Нужен для политики обработки почты и отчётности
mx Проверка MX-записей Помогает увидеть, куда фактически направляется почта домена
dnssec Проверка DNSSEC Показывает, защищена ли DNS-цепочка от подмены
caa Проверка CAA Позволяет оценить ограничения на выпуск сертификатов
headers Проверка и генерация некоторых защитных заголовков Частично выходит за рамки DNS и помогает с базовой веб-гигиеной
config Пример конфигурации, миграция и валидация Удобно для повторяемых запусков и режима manifest/config

Плюс dnsight поддерживает shell completion через Typer и умеет писать вывод в файл. Для командных сценариев полезно и поведение логирования. Диагностика уходит в stderr, а результаты проверки в stdout. Из-за такой развязки инструмент проще встраивать в shell-цепочки и автоматизацию, не смешивая служебные сообщения с машинно читаемым выводом.

Как работает dnsight

Схема работы dnsight.

Логика работы простая. Пользователь передаёт домен в команду audit или в одну из специализированных групп. Дальше dnsight делает набор DNS-проверок, интерпретирует полученные записи и возвращает результат в человекочитаемом или машинно читаемом виде. Для базового сценария хватает нескольких команд:

dnsight --help
 dnsight audit example.com
 dnsight config example > dnsight.yaml
 dnsight dmarc generate

Если нужен программный вызов, библиотеку можно импортировать в Python и выполнять синхронные проверки через run_domain_sync() и run_check_sync(). Такой режим подходит, когда аудит домена надо встроить в существующий сервис, бот, тестовую обвязку или CI-job.

from dnsight import run_check_sync, run_domain_sync
  
 audit = run_domain_sync("example.com")
 print(audit.critical_count, audit.partial)
  
 dmarc = run_check_sync("dmarc", "example.com")
 print(dmarc.passed, len(dmarc.issues))

Отдельно полезны форматы вывода. Rich по умолчанию подходит для живой работы в терминале. JSON нужен для последующей обработки. SARIF пригодится для интеграции в security- и code-scanning-процессы. Markdown уместен, когда нужен простой текстовый отчёт для документации, тикета или внутренней вики.

Для кого подходит инструмент

dnsight выглядит уместным для нескольких категорий пользователей. Во-первых, для системных администраторов и инженеров инфраструктуры, которые отвечают за домены, почтовые записи и доставляемость писем. Во-вторых, для DevSecOps- и AppSec-команд, которым нужен автоматизируемый способ проверять домены в пайплайнах. В-третьих, для консультантов, пентестеров и исследователей, которые часто делают первичный аудит внешнего контура и хотят быстро собрать картину по DNS и email auth. Наконец, dnsight может пригодиться разработчикам внутренних платформ, потому что SDK позволяет завернуть проверки в собственные сервисы.

При этом dnsight не выглядит инструментом для полной инвентаризации почтовой инфраструктуры, анализа содержимого DMARC-репортов или глубокой проверки SMTP-сервера. У dnsight более узкая задача: проверить сигналы и конфигурации вокруг домена.

Как установить и запустить

Для установки нужен Python 3.11 или новее. В проектной документации отдельно сказано, что сопровождающие используют Python 3.14 как повседневный вариант для локальной работы и CI, но официальный порог совместимости начинается с 3.11. Установить пакет можно несколькими способами.

pip install dnsight
 uv add dnsight
 uv tool install dnsight
 pipx install dnsight

После установки доступны и CLI-команда dnsight, и импортируемый API. Для первого запуска достаточно проверить справку и выполнить аудит тестового домена.

dnsight --help
 dnsight audit example.com

Если нужен конфиг-файл для повторяемых проверок, можно сгенерировать пример и сохранить его в dnsight.yaml. Для локальной разработки самого проекта сопровождающие рекомендуют uv и just, а также команды just install, just pre-install, just check и just test. Документация собирается через MkDocs, локальный просмотр запускается через just docs-serve.

Сильные стороны и ограничения

Плюсы Минусы
Объединяет CLI и Python API в одном пакете Проект молодой и пока не выглядит де-факто стандартом для своей ниши
Покрывает не только SPF, DKIM и DMARC, но и MX, CAA, DNSSEC и заголовки Из официальных материалов пока не видно большого числа внешних интеграций или широкого сообщества
Поддерживает пригодные для автоматизации форматы JSON, Markdown и SARIF Для оценки глубины отдельных проверок всё равно нужно смотреть документацию по каждой группе команд
Разделяет результат и диагностику по stdout/stderr Проект рассчитан на Python 3.11+, что может быть лишним ограничением для старых внутренних сред
Имеет документацию, автодополнение оболочки и отдельные команды генерации Снаружи проект пока выглядит как инструмент для технически подготовленной аудитории, а не для начинающих администраторов

Заключение

dnsight производит впечатление аккуратного специализированного инструмента для аудита домена и почтовой аутентификации. Главная ценность dnsight не в широте охвата, а в сочетании трёх свойств: узкая предметная специализация, наличие CLI и SDK в одном пакете, а также пригодность для автоматизации за счёт форматов вывода и конфигурации. Для команд, которым регулярно приходится проверять SPF, DKIM, DMARC, MX, DNSSEC и соседние сигналы, dnsight выглядит практичным рабочим вариантом.

У dnsight есть и ограничения. Инструмент не заменяет полноценную платформу анализа почтовых инцидентов, не решает задачи долговременного мониторинга и требует от пользователя понимания контекста DNS и email auth. Но как лёгкий, воспроизводимый и технически прозрачный аудитор домена dnsight выглядит уместно. Поэтому итоговая оценка такая: dnsight – не универсальный комбайн, а сфокусированный утилитарный инструмент, который хорошо закрывает свой узкий класс задач.

Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
М
Кибердом × VolgaBlob
VB-Trend 2026 МАЯК
Конференция про Observability и мониторинг как антикризисную ясность. Презентация Smart Monitor 6.0, дискуссии, демозоны и нетворкинг.
17 апреля в Кибердоме Зарегистрируйтесь сейчас →
Реклама. 18+. АО «Кибердом», ИНН 7720858860

Комнатный Блогер

Объясняю новую цифровую реальность