Настройка почтовых уведомлений в Proxmox VE
Пошаговая настройка SMTP target и matcher в Proxmox VE для получения уведомлений о резервном копировании, ошибках и системных событиях.
Proxmox VE может отправлять уведомления о резервном копировании, ошибках репликации, состоянии хранилищ и других системных событиях.
Современная система уведомлений Proxmox VE разделяет настройку на две части:
- target определяет, куда отправлять сообщение;
- matcher определяет, какие события направлять в выбранный target.
В этой инструкции рассматривается только отправка уведомлений через внешний SMTP-сервер.
Подходит для: Proxmox VE 8 и 9
Уровень сложности: средний
Время выполнения: около 15–20 минут
Требуемый доступ: права управления уведомлениями Datacenter и данные SMTP-сервера
Что будет настроено
После выполнения инструкции:
- будет создан SMTP target;
- будут указаны отправитель и получатель;
- будет проверена отправка тестового сообщения;
- будет создан matcher;
- будут выбраны уровни важности событий;
- будет проверено получение реального уведомления;
- будут разобраны основные ошибки SMTP.
Что потребуется
Подготовьте:
SMTP server
SMTP port
SMTP username
SMTP password
Sender address
Recipient address
TLS mode
Пример:
SMTP server: smtp.example.com
Port: 587
Username: alerts@example.com
Sender: alerts@example.com
Recipient: admin@example.com
TLS: STARTTLS
Используйте параметры своего почтового провайдера.
Проверка DNS и времени
На узле Proxmox VE проверьте DNS:
getent hosts smtp.example.com
Проверьте время:
timedatectl
Корректное время важно для проверки TLS-сертификата SMTP-сервера.
Проверка доступности SMTP-порта
Для порта 587:
nc -zv smtp.example.com 587
Для SMTPS на порту 465:
nc -zv smtp.example.com 465
Если nc отсутствует:
apt update
apt install -y netcat-openbsd
Успешное TCP-соединение не гарантирует правильную аутентификацию, но подтверждает сетевую доступность сервера.
Проверка TLS
Для STARTTLS на порту 587:
openssl s_client -starttls smtp -connect smtp.example.com:587 -servername smtp.example.com </dev/null
Для SMTPS на порту 465:
openssl s_client -connect smtp.example.com:465 -servername smtp.example.com </dev/null
Проверьте:
Verify return code: 0 (ok)
Открытие раздела уведомлений
В веб-интерфейсе откройте:
Datacenter → Notifications
Основные вкладки:
Targets
Matchers
Сначала создаётся target, затем matcher.
Создание SMTP target
Откройте:
Datacenter → Notifications → Targets
Нажмите:
Add → SMTP
Укажите понятное имя.
Пример:
smtp-admin
Имя target должно позволять понять его назначение.
Настройка SMTP-сервера
Заполните:
Server: smtp.example.com
Port: 587
Не используйте IP-адрес вместо имени без необходимости: TLS-сертификат обычно выпущен на DNS-имя сервера.
Выбор режима шифрования
Типичные варианты:
STARTTLS
TLS
None
STARTTLS
Обычно используется с портом:
587
Сначала устанавливается обычное SMTP-соединение, затем включается TLS.
TLS
Обычно используется для SMTPS на порту:
465
TLS устанавливается сразу после подключения.
None
Передаёт SMTP-трафик без шифрования.
Не используйте этот режим через недоверенную сеть.
Настройка аутентификации
Укажите:
Username: alerts@example.com
Password: SMTP_PASSWORD
Некоторые провайдеры требуют отдельный пароль приложения вместо основного пароля почтового ящика.
Не сохраняйте SMTP-пароль в публичной документации и Git-репозитории.
Настройка отправителя
Поле From:
alerts@example.com
Адрес отправителя должен быть разрешён SMTP-сервером.
Некоторые провайдеры разрешают отправку только от имени аутентифицированного пользователя.
Настройка получателя
В поле получателя укажите:
admin@example.com
При необходимости можно добавить несколько адресов.
Для первого теста лучше использовать один контролируемый почтовый ящик.
Комментарий target
Добавьте описание:
Основные уведомления администратору
Это упрощает сопровождение нескольких каналов уведомлений.
Сохранение target
Нажмите:
Add
Target появится в списке.
Пока события автоматически в него не направляются: для этого нужен matcher.
Отправка тестового сообщения
Выберите созданный target:
smtp-admin
Нажмите:
Test
После успешной отправки Proxmox VE покажет завершённую задачу без ошибки.
Проверьте:
- папку «Входящие»;
- папку «Спам»;
- журнал почтового сервера при наличии доступа;
- корректность адресов From и To.
Проверка конфигурации через CLI
Покажите targets:
pvesh get /cluster/notifications/targets
Покажите конкретный target:
pvesh get /cluster/notifications/targets/smtp/smtp-admin
Доступные API-пути могут незначительно различаться между версиями. Проверить их можно через:
pvesh usage /cluster/notifications
Создание matcher
Откройте:
Datacenter → Notifications → Matchers
Нажмите:
Add
Укажите имя:
important-events
Назначение target
В matcher выберите target:
smtp-admin
Один matcher может направлять события в один или несколько targets.
Фильтрация по уровню важности
Типичные уровни:
info
notice
warning
error
unknown
Для первого рабочего правила разумно отправлять:
warning
error
unknown
Это уменьшает количество информационных сообщений.
Если требуется полный аудит уведомлений, добавьте info и notice.
Фильтрация по типу события
Matcher может учитывать метаданные события.
Практические варианты:
- все события с уровнем
error; - результаты backup;
- ошибки replication;
- события storage;
- определённый узел;
- конкретная VM или LXC;
- конкретное задание.
Набор доступных полей зависит от события.
Базовый matcher для важных событий
Создайте правило:
Name: important-events
Severity: warning, error, unknown
Target: smtp-admin
Mode: any
Такой matcher подходит для первичной проверки системы уведомлений.
Порядок matchers
Несколько matchers могут совпасть с одним событием.
В зависимости от конфигурации уведомление может быть направлено в несколько targets.
Избегайте дублирующих matcher-правил с одинаковыми условиями и получателями.
Проверка matchers через CLI
pvesh get /cluster/notifications/matchers
Для просмотра API:
pvesh usage /cluster/notifications/matchers
Проверка реального события
Тест target проверяет SMTP, но не проверяет matcher.
Для полной проверки нужно получить реальное уведомление.
Безопасные варианты:
- запустить тестовый backup небольшой VM;
- временно создать matcher для
info; - выполнить штатную задачу, которая генерирует уведомление;
- проверить системный тест уведомлений, если он доступен в интерфейсе.
Не создавайте искусственный отказ production-сервиса только ради теста.
Проверка уведомления о backup
Запустите резервное копирование тестовой VM:
vzdump VM_ID --storage BACKUP_STORAGE --mode snapshot --compress zstd
После завершения проверьте почту.
Если matcher настроен только на warning и error, успешный backup может не создать письмо.
Для теста можно временно добавить уровень:
info
После проверки верните рабочую фильтрацию.
Отдельный matcher для backup
Можно создать matcher:
Name: backup-events
Target: smtp-admin
И ограничить его событиями резервного копирования.
Так уведомления backup не будут смешиваться с остальными системными событиями.
Отдельные получатели
Практичная схема:
critical-admins — error и unknown
operations — warning
backup-report — результаты backup
security — события безопасности
Для каждой группы можно создать отдельный target и matcher.
Отключение matcher
Если правило временно не требуется, отключите его в интерфейсе.
Это безопаснее, чем удалять рабочую конфигурацию.
После изменений повторно выполните тест.
Проверка системного журнала
Сообщения служб Proxmox VE:
journalctl -u pvedaemon -u pveproxy -u pvescheduler --since today --no-pager
Поиск уведомлений:
journalctl --since today |
grep -iE 'notification|smtp|mail'
Проверка очереди задач
В веб-интерфейсе:
Datacenter → Tasks
Найдите задачу отправки тестового уведомления.
Откройте её журнал.
Первая SMTP-ошибка обычно содержит наиболее полезную диагностическую информацию.
Типичные SMTP-порты
25 — SMTP relay
465 — SMTP over TLS
587 — SMTP submission с STARTTLS
Для внешнего авторизованного SMTP чаще используется:
587
или:
465
Порт 25 может блокироваться провайдером VPS.
Ошибка authentication failed
Проверьте:
- username;
- password;
- пароль приложения;
- разрешение SMTP AUTH;
- адрес отправителя;
- ограничения провайдера;
- блокировку входа по географии или IP.
Попробуйте войти в почтовый аккаунт через его штатный интерфейс и проверить журнал безопасности.
Ошибка connection timed out
Проверьте:
getent hosts smtp.example.com
nc -zv smtp.example.com 587
Причины:
- firewall;
- блокировка исходящего порта;
- неверный порт;
- недоступность SMTP-сервера;
- проблема маршрутизации;
- фильтрация провайдера.
Ошибка certificate verify failed
Проверьте время:
timedatectl
Проверьте сертификат:
openssl s_client -starttls smtp -connect smtp.example.com:587 -servername smtp.example.com </dev/null
Не отключайте проверку сертификата без крайней необходимости.
Ошибка sender rejected
SMTP-сервер не разрешает указанный адрес From.
Установите From равным:
SMTP_USERNAME
или используйте разрешённый alias.
Письмо принято, но не доставлено
Проверьте:
- папку «Спам»;
- карантин;
- SPF;
- DKIM;
- DMARC;
- журнал SMTP-сервера;
- ограничения получателя.
Proxmox VE отвечает только за передачу сообщения SMTP-серверу.
Уведомления приходят несколько раз
Проверьте matchers:
Datacenter → Notifications → Matchers
Одно событие может соответствовать нескольким правилам.
Также проверьте, не указан ли один получатель в нескольких targets.
Уведомления не приходят при ошибке backup
Проверьте:
- включён ли matcher;
- выбран ли target;
- совпадает ли severity;
- соответствует ли событие фильтру;
- не используется ли устаревшее поле email в backup job вместо notification system;
- успешно ли работает тест target.
Изменение SMTP-пароля
Откройте target:
Datacenter → Notifications → Targets
Измените пароль.
После сохранения обязательно нажмите:
Test
Не ждите следующего аварийного события для проверки нового пароля.
Ротация API-пароля приложения
Если SMTP-провайдер поддерживает пароли приложений:
- Создайте новый пароль.
- Обновите target.
- Выполните Test.
- Проверьте письмо.
- Отзовите старый пароль.
Такой порядок исключает перерыв в уведомлениях.
Защита SMTP-учётной записи
Для почтового ящика уведомлений рекомендуется:
- отдельная учётная запись;
- запрет обычного интерактивного использования;
- отдельный пароль приложения;
- отсутствие доступа к важной переписке;
- ограничение разрешённого From;
- периодическая ротация пароля;
- контроль неудачных входов.
Резервный канал уведомлений
Почта может быть недоступна одновременно с основной инфраструктурой.
Для критичных событий полезен второй target:
- другой SMTP-провайдер;
- Gotify;
- webhook;
- отдельная система мониторинга.
Эта статья рассматривает только SMTP target.
Резервная копия конфигурации
Создайте защищённую копию конфигурации Proxmox VE:
mkdir -p /root/proxmox-notification-backup
cp -a /etc/pve/notifications.cfg /root/proxmox-notification-backup/notifications.cfg-$(date +%F-%H%M%S) 2>/dev/null
Секреты могут храниться отдельно в защищённой части конфигурации.
Не публикуйте файлы уведомлений без проверки их содержимого.
Удаление target
Перед удалением:
- Проверьте matchers.
- Переназначьте их на другой target.
- Выполните тест нового target.
- Только затем удалите старый.
Иначе события будут совпадать с matcher, но не иметь рабочего канала доставки.
Безопасный порядок настройки
- Проверить DNS и время.
- Проверить SMTP-порт.
- Проверить TLS через
openssl. - Создать SMTP target.
- Выполнить Test.
- Создать matcher.
- Временно разрешить
infoдля проверки. - Запустить безопасное тестовое событие.
- Проверить письмо.
- Оставить только нужные severity.
- Настроить резервный канал при необходимости.
Быстрый набор проверок
DNS:
getent hosts smtp.example.com
SMTP-порт:
nc -zv smtp.example.com 587
TLS:
openssl s_client -starttls smtp -connect smtp.example.com:587 -servername smtp.example.com </dev/null
Targets:
pvesh get /cluster/notifications/targets
Matchers:
pvesh get /cluster/notifications/matchers
Журнал:
journalctl --since today |
grep -iE 'notification|smtp|mail'
Итог
После выполнения инструкции:
- создан SMTP target;
- настроены сервер, порт, TLS и авторизация;
- выполнена тестовая отправка;
- создан matcher;
- настроена фильтрация по severity;
- проверено реальное событие;
- разобраны основные ошибки доставки.
Система уведомлений считается настроенной только после проверки не только тестового письма, но и реального события, прошедшего через matcher.