Мониторинг DNS записей почтового домена Zabbix: готовый шаблон

мониторинг DNS записей почтового домена Zabbix — дашборд с индикаторами SPF DKIM DMARC

Мониторинг 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 IP
  • mail.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 и время на настройку.