Мониторинг DNS записей почтового домена в Zabbix: готовый шаблон
Содержание
Зачем мониторить DNS-записи почтового домена
Мониторинг DNS записей почтового домена Zabbix — это способ узнать о проблемах с почтовой инфраструктурой до того, как клиенты перестанут получать ваши письма. DNS-записи (MX, SPF, DKIM, DMARC, PTR) — фундамент доставляемости, и любое изменение может привести к попаданию в спам.
Типичные сценарии, которые ловит мониторинг:
- Хостер случайно удалил TXT-запись при миграции DNS-зоны
- Коллега обновил SPF и превысил лимит 10 DNS-lookup
- Истёк срок DKIM-ключа, и подпись стала невалидной
- IP-адрес сервера попал в черный список DNSBL
- DMARC-политика понижена с
rejectдоnone
Мы создали open-source шаблон zabbix-mail-dns-audit для Zabbix 7.0+, который автоматизирует все эти проверки. В этой статье — полная документация: что проверяет шаблон, как установить и настроить, какие триггеры срабатывают.
Подробнее — в нашей статье корпоративная почта попадает в спам.
Что проверяет шаблон Mail DNS Audit
Шаблон для мониторинга DNS записей почтового домена Zabbix выполняет комплексную проверку по 15+ параметрам. Внешний Python-скрипт опрашивает DNS и возвращает структурированный JSON, который Zabbix разбирает на зависимые элементы данных.
Базовые DNS-проверки:
- MX-записи: наличие, резолвинг, отсутствие CNAME (RFC 5321 §5)
- NS-консистентность: SOA serial совпадает на всех nameserver
Аутентификация отправителя:
- SPF: валидность записи, количество DNS-lookup (≤10), отсутствие дубликатов
- DKIM: наличие селектора, размер ключа (warning при 1024, OK при 2048 бит)
- DMARC: наличие записи, политика (alert при
p=none)
Обратный DNS и репутация:
- PTR-записи для всех IP из MX
- FCrDNS (Forward-confirmed reverse DNS)
- DNSBL-проверка по Spamhaus ZEN, SpamCop и настраиваемым зонам
Каждая проверка из нашего чек-листа доставляемости (пункты 1-11) автоматизирована в этом шаблоне. Подробная настройка SPF DKIM DMARC описана в отдельной статье.
Установка и настройка
Установка шаблона занимает 5-10 минут. Требования: Zabbix Server 7.0+, Python 3.8+ с библиотекой dnspython на хосте с Zabbix Agent или Zabbix Proxy.
Шаг 1: Скопируйте скрипт
# Клонирование репозитория и установка скрипта
git clone https://github.com/IT-for-Prof/zabbix-mail-dns-audit.git
cp zabbix-mail-dns-audit/mail_dns_audit.py /usr/lib/zabbix/externalscripts/
chmod +x /usr/lib/zabbix/externalscripts/mail_dns_audit.py
# Установка зависимости
pip3 install dnspython
# Проверка работоспособности
/usr/lib/zabbix/externalscripts/mail_dns_audit.py --domain example.com --json
# Импорт шаблона в Zabbix
# Configuration → Templates → Import → выберите mail_dns_audit_template.yaml
# Создание хоста для мониторинга
# Configuration → Hosts → Create Host
# - Host name: mail-dns-example.com
# - Groups: Mail DNS Audit (создайте группу)
# - Templates: Mail DNS Audit (привяжите импортированный шаблон)
# Настройка макросов хоста:
# {$MAIL_DOMAIN} = example.com
# {$DKIM_SELECTOR} = mail (ваш DKIM-селектор)
# {$DNSBL_ZONES} = zen.spamhaus.org,bl.spamcop.net (через запятую)
# {$CHECK_INTERVAL} = 1h (интервал проверки)
Мониторинг DNS записей почтового домена Zabbix: что видит админ
После настройки мониторинг DNS записей почтового домена Zabbix отображает результаты на дашборде и генерирует триггеры при обнаружении проблем.
Элементы данных (Items):
mail.dns.mx.status— статус MX-записей (OK / MISSING / CNAME_FOUND)mail.dns.spf.status— статус SPF (OK / MISSING / PERMERROR / LOOKUP_EXCEEDED)mail.dns.spf.lookups— количество DNS-lookup в SPF (число)mail.dns.dkim.status— статус DKIM (OK / MISSING / KEY_TOO_SHORT)mail.dns.dkim.keysize— размер DKIM-ключа в битахmail.dns.dmarc.status— статус DMARC (OK / MISSING / POLICY_NONE)mail.dns.dmarc.policy— текущая DMARC-политика (none / quarantine / reject)mail.dns.ptr.status— статус PTR для каждого MX IPmail.dns.dnsbl.status— результат проверки DNSBL (CLEAN / LISTED)mail.dns.ns.consistent— консистентность SOA serial (true / false)
Триггеры (Triggers):
- High: MX отсутствует, IP в DNSBL, SPF PermError
- Average: DMARC p=none, DKIM ключ 1024 бит, SPF lookup > 8
- Warning: PTR отсутствует, NS inconsistency, DNSBL check failed
- Information: DMARC rua не настроен, SPF ~all (soft fail)
При администрировании серверов мы подключаем этот мониторинг к каждому почтовому домену клиента. Время реагирования на инцидент — 10-15 минут.
# Пример вывода скрипта (JSON)
{
"mx": {"status": "OK", "records": ["mail.example.com"]},
"spf": {"status": "OK", "record": "v=spf1 ip4:1.2.3.4 -all", "lookups": 3},
"dkim": {"status": "OK", "keysize": 2048, "selector": "mail"},
"dmarc": {"status": "OK", "policy": "reject", "rua": "dmarc@example.com"},
"ptr": {"status": "OK", "records": {"1.2.3.4": "mail.example.com"}},
"dnsbl": {"status": "CLEAN", "zones_checked": 5, "listed_in": []},
"ns": {"consistent": true, "soa_serial": "2026031301"}
}
# Настройка оповещений в Zabbix
# Configuration → Actions → Trigger actions → Create action
# Условие: триггер severity >= High И хост в группе "Mail DNS Audit"
# Операция: отправить уведомление в Telegram / Email / PagerDuty
# Пример сообщения:
# [HIGH] {HOST.NAME}: {TRIGGER.NAME}
# Домен: {$MAIL_DOMAIN}
# Текущий статус: {ITEM.LASTVALUE}
# Предыдущий статус: {ITEM.PREVVALUE}
# Время обнаружения: {EVENT.DATE} {EVENT.TIME}
# Интеграция с Grafana (опционально)
# Zabbix → Grafana через Zabbix datasource plugin
# Dashboard: Mail DNS Audit Overview
# Панели:
# - Статус всех проверок (таблица)
# - История DNSBL (график)
# - SPF lookup count (gauge, threshold 10)
# - DKIM key size (gauge, threshold 2048)
# Автоматическое восстановление (Zabbix Remote Commands)
# Для некоторых инцидентов можно настроить автоматические действия:
# - При DNSBL LISTED: автоматический запрос делистинга через API
# - При PTR MISSING: уведомление хостинг-провайдера через API
# - При SPF LOOKUP_EXCEEDED: отправка отчёта администратору DNS
Шаблон для мониторинга DNS записей почтового домена Zabbix обнаруживает не только текущие проблемы, но и изменения в записях. Zabbix сравнивает текущее значение с предыдущим и генерирует событие при расхождении.
Примеры инцидентов, которые ловит шаблон:
Сценарий 1: Удалена SPF-запись. mail.dns.spf.status меняется с OK на MISSING → триггер High → оповещение в Telegram/email/PagerDuty. Действие: восстановить SPF-запись в DNS-зоне.
Сценарий 2: Превышен лимит SPF lookup. mail.dns.spf.lookups становится > 10 → триггер Average. Частая причина: добавили новый include: в SPF без учёта рекурсивных lookup. Действие: оптимизировать SPF (заменить include на ip4/ip6).
Сценарий 3: IP попал в Spamhaus. mail.dns.dnsbl.status меняется на LISTED → триггер High. Действие: следовать инструкции по делистингу.
Сценарий 4: DMARC понижен. mail.dns.dmarc.policy меняется с reject на none → триггер Average. Возможная причина: кто-то изменил запись для отладки и забыл вернуть.
Интеграция с Zabbix-инфраструктурой
Шаблон интегрируется со стандартной Zabbix-инфраструктурой. Раскройте каждый пункт для подробностей.
Для каждого почтового домена создайте отдельный хост в Zabbix с привязанным шаблоном Mail DNS Audit. Макрос {$MAIL_DOMAIN} уникален для каждого хоста. При 50+ доменах используйте LLD (Low-Level Discovery) с файлом доменов или API.
Шаблон совместим со стандартной инфраструктурой Zabbix: действия (Actions), эскалации, макросы, дашборды. Триггеры используют стандартные severity уровни и корректно агрегируются в Problems view. Интеграция с Grafana — через стандартный Zabbix datasource.
По умолчанию проверка выполняется каждый час ({$CHECK_INTERVAL} = 1h). Для критичных доменов установите 15-30 минут. Для некритичных — 4-6 часов. DNSBL-проверки рекомендуется выполнять не чаще 1 раза в час — частые запросы могут привести к rate limiting со стороны DNSBL-провайдеров.
Шаблон развивается — новые проверки добавляются в каждом релизе. Обновление: загрузите новую версию YAML из GitHub, импортируйте в Zabbix с опцией «Update existing». Существующие хосты автоматически получат новые элементы данных и триггеры. Скрипт обновляется отдельно (cp поверх старого файла).
Мониторинг — последняя линия защиты
Мониторинг DNS записей почтового домена Zabbix — это последняя линия защиты между вашей почтовой инфраструктурой и попаданием в спам. Даже если SPF, DKIM и DMARC настроены идеально, случайное изменение может всё сломать.
Что даёт шаблон zabbix-mail-dns-audit:
- Автоматическая проверка 15+ параметров каждый час
- Мгновенные оповещения при обнаружении проблем
- История изменений для расследования инцидентов
- Полная совместимость с Zabbix 7.0+ инфраструктурой
Установите шаблон прямо сейчас: github.com/IT-for-Prof/zabbix-mail-dns-audit. Шаблон бесплатный и открытый.
Хотите, чтобы мы настроили мониторинг за вас? При настройке корпоративной почты под ключ мониторинг DNS включён в стоимость — мы следим за вашими записями 24/7.
Мы настроим мониторинг DNS записей вашего почтового домена и подключим оповещения — бесплатно в рамках аудита почтовой инфраструктуры.
Часто задаваемые вопросы
Ответы на вопросы о мониторинге DNS записей почтового домена Zabbix и шаблоне zabbix-mail-dns-audit.
Шаблон разработан для Zabbix 7.0+ и использует YAML-формат шаблонов. Для Zabbix 6.x потребуется ручная адаптация зависимых элементов данных. Zabbix 5.x и старше не поддерживаются.
Нет. Скрипт выполняет DNS-запросы к публичным DNS-серверам. Его достаточно разместить на Zabbix Server, Proxy или любом хосте с Zabbix Agent. Доступ к почтовому серверу не требуется.
Макрос {$DKIM_SELECTOR} принимает один селектор. Для нескольких селекторов (например, mail и google) создайте дополнительные элементы данных или используйте LLD с массивом селекторов в конфигурации.
По умолчанию: Spamhaus ZEN (zen.spamhaus.org) и SpamCop (bl.spamcop.net). Дополнительные зоны добавляются через макрос {$DNSBL_ZONES}. Рекомендуем добавить Barracuda BRBL (b.barracudacentral.org).
Да. Шаблон zabbix-mail-dns-audit распространяется под лицензией MIT — бесплатно для коммерческого и некоммерческого использования. Zabbix Server также имеет бесплатную open-source версию. Единственные затраты — сервер для Zabbix и время на настройку.




