Настройка почтовых уведомлений в 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-провайдер поддерживает пароли приложений:

  1. Создайте новый пароль.
  2. Обновите target.
  3. Выполните Test.
  4. Проверьте письмо.
  5. Отзовите старый пароль.

Такой порядок исключает перерыв в уведомлениях.

Защита 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

Перед удалением:

  1. Проверьте matchers.
  2. Переназначьте их на другой target.
  3. Выполните тест нового target.
  4. Только затем удалите старый.

Иначе события будут совпадать с matcher, но не иметь рабочего канала доставки.

Безопасный порядок настройки

  1. Проверить DNS и время.
  2. Проверить SMTP-порт.
  3. Проверить TLS через openssl.
  4. Создать SMTP target.
  5. Выполнить Test.
  6. Создать matcher.
  7. Временно разрешить info для проверки.
  8. Запустить безопасное тестовое событие.
  9. Проверить письмо.
  10. Оставить только нужные severity.
  11. Настроить резервный канал при необходимости.

Быстрый набор проверок

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.

← Предыдущая статья Импорт существующего диска qcow2 или VMDK в Proxmox VE Следующая статья → Создание кластера Proxmox VE