Вступ
Після установки та налаштування поштового серверу Postfix, виникла необхідність відстежувати різні метрики цього сервера за допомогою Zabbix та відображати діаграму для візуального моніторингу.

Визначення типу відстеження
Для початку необхідно визначити що саме необхідно відстежувати, який стан відстеження вважається нормою, а який вже відхиленням. Мені цікаві дві метрики – статистика черги листів та моніторинг кількості процесів, про які поговоримо детальніше.
Статистика черги листів
Коли поштовий сервер працює коректно, то зазвичай листи обробляються миттєво, і черга не створюється, або це миттєвий процес, проте якщо сервер стає недоступним, то черга накопичується, і це є ознакою проблеми в роботі поштового сервера. При коректній роботі сервера це значення дорівнює нулю, якщо значення більше нуля, то на це вже потрібно звернути увагу.
Моніторинг кількості процесів
при коректній роботі в режимі простою сервера зазвичай запущено 5 процесів:
- master – головний процес Postfix (управляє всіма іншими процесами).
- qmgr – керує поштовою чергою, відповідає за доставку листів.
- tlsmgr – керує TLS-сесіями для шифрування (якщо використовується).
- pickup – обробляє нові повідомлення, що надходять до черги.
- showq – показує стан поштової черги.
Під час аутентифікації, відправки або надсилання пошти кількість процесів збільшується до 9 або 10. Таким чином, якщо відбувається аутентифікація, навіть хибна, то це фіксується, і адміністратор може прийняти рішення щодо подальших дій щодо усунення атаки на сервер.ses to 9 or 10.
Підключення Postfix до Zabbix
Оскільки на сервері вже встановлено Zabbix Agent, то налаштування будуть простими, через файл конфігурації. Для цього необхідно в файлі конфігурації Zabbix Agent прописати параметри користувача для наших метрик.
Відкрити файл конфігурації, який зазвичай знаходиться за наступним шляхом:
sudo nano /etc/zabbix/zabbix_agentd.conf
Додати наступні рядки в кінець файлу:
# Settings for Postfix:
UserParameter=postfix.queue_size,postqueue -p | tail -n 1 | awk '{print ($5+0)}'
UserParameter=postfix.active_processes,ps aux | grep "[p]ostfix" | wc -l
Перезавантажити zabbix-agent:
sudo systemctl restart zabbix-agent
Створення Items у Zabbix
В меню Data Collection, вибрати підменю Hosts і в списку хостів клацнути на Items, а вже у вікні списку Items натиснути на кнопку Create item.
Для відстеження активних процесів Postfix (postfix.active_processes)
На вкладці Items:
- Name: Postfix Active Processes
- Type: Zabbix Agent
- Key: postfix.active_processes
- Type of Information: Numeric (unsigned)
- Host interface: 127.0.0.1:10050
- Update interval: 1m
- Description: Postfix Active Processes
- Enabled: checkbox

На вкладці Tags:
- Name: Mail
- Value: Postfix

Для перевірки коректності роботи айтемса необхідно протестувати його роботу та отримати бажане значення. Для цього натиснути кнопку TEST та GET VALUE як зображено на скріншоті

Так само створюємо другий айтемс для відстеження черги листів (postfix.queue_size), різниця буде виключно в ключі Key: postfix.queue_size, так само необхідно протестувати створений айтемс і отримати очікуваний результат – 0.
Перевірка збору даних
Через 1 хвилину Postfix починає збирати дані. Для того, щоб переглянути їх, необхідно перейти в меню Monitoring та вибрати Latest data. В фільтрі name вписати Postfix Active Processes. На сторінці Latest data буде колонка Last check, в ній повинно бути очікуване значення, в моєму випадку 5.

Створення графіку на робочому столі
Щоб графік відображався на дашборді, необхідно клацнути на кнопку ADD, автоматично відкриється вікно створення нового віджету, де необхідно заповнити наступні поля такими значеннями:
- Type: Graph
- Name: Mail
- Refresh interval: Default 1m
- Data set: select the host and items

Інші характеристики вкладки Data set, такі як колір, прозорість налаштовуються на ваш розсуд.
Визначення атаки на сервер та її усунення
Я регулярно стежу за активністю поштового сервера, і на дашборді, на графіку побачив доволі високу активність. Збільшивши діапазон дати до 2-х днів, я визначив дату та час початку такої атаки:

Подивившись логи Postfix за два останні дні, я визначив, що зловмисник брутфорсом підбирає логін для аутентифікації на моєму поштовому сервері, звісно це завершується із невдачею, проте на це витрачаються ресурси сервера:
sudo tail -f /var/log/mail.log
Mar 30 13:31:51 mail postfix/smtpd[1230298]: connect from unknown[196.251.92.50]
Mar 30 13:31:55 mail postfix/smtpd[1230298]: warning: unknown[196.251.92.50]: SASL LOGIN authentication failed: (reason unavailable), sasl_username=admin2
Mar 30 13:31:55 mail postfix/smtpd[1230298]: disconnect from unknown[196.251.92.50] ehlo=1 auth=0/1 quit=1 commands=2/3
Mar 30 13:35:13 mail postfix/smtpd[1230766]: connect from unknown[196.251.92.50]
Mar 30 13:35:17 mail postfix/smtpd[1230766]: warning: unknown[196.251.92.50]: SASL LOGIN authentication failed: (reason unavailable), sasl_username=back-up
Mar 30 13:35:17 mail postfix/smtpd[1230766]: disconnect from unknown[196.251.92.50] ehlo=1 auth=0/1 rset=1 quit=1 commands=3/4
Для усунення цього інциденту я в налаштуваннях файерволу роутера заблокував вказану адресу і застосував правило. Після цього активність сервера повернулася в нормальний режим:

Висновки
Моніторинг активності Postfix за допомогою Zabbix дозволяє своєчасно виявляти проблеми в роботі поштового сервера, такі як накопичення черги листів або підозріла активність. Завдяки налаштуванню метрик для контролю черги та кількості активних процесів, адміністратор отримує можливість швидко реагувати на потенційні загрози та збої у роботі системи.
У процесі експлуатації сервера моніторинг також дозволяє виявляти спроби несанкціонованого доступу, як-от атаки методом перебору паролів. Використовуючи аналітику графіків і логи системи, можна оперативно вживати заходи для захисту сервера, такі як блокування зловмисних IP-адрес. Це значно підвищує рівень безпеки поштової інфраструктури та забезпечує стабільну роботу сервісу.