Что за инструмент и что делает 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
Логика работы простая. Пользователь передаёт домен в команду 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 – не универсальный комбайн, а сфокусированный утилитарный инструмент, который хорошо закрывает свой узкий класс задач.