Пошта – Блог страуса https://ostrich.kyiv.ua Fri, 30 May 2025 09:59:55 +0000 uk hourly 1 https://wordpress.org/?v=6.8.3 https://ostrich.kyiv.ua/wp-content/uploads/2024/02/ostrich-150x150.png Пошта – Блог страуса https://ostrich.kyiv.ua 32 32 Налаштування email сповіщення в Zabbix https://ostrich.kyiv.ua/uk/2025/05/28/%d0%bd%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-email-%d1%81%d0%bf%d0%be%d0%b2%d1%96%d1%89%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b2-zabbix/ https://ostrich.kyiv.ua/uk/2025/05/28/%d0%bd%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-email-%d1%81%d0%bf%d0%be%d0%b2%d1%96%d1%89%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b2-zabbix/#respond Wed, 28 May 2025 19:29:39 +0000 https://ostrich.kyiv.ua/?p=1244 Вступ

Переглядаючи метрику в Zabbix, іноді недостатньо лише переглядати розділ Current problems на дашборді. В Zabbix є багато додаткових методів сповіщення адміністратора про певні події. Одна з них, яка мене цікавить – це налаштування SMTP для відправки пошти засобами самого Zabbix. Як зробити ці налаштування я опишу детально.

В дійсності таке важливе налаштування реалізовується в три етапи:

  • Налаштування пошти користувача
  • Налаштування SMTP
  • Налаштування сповіщень

По завершенню цих налаштувань необхідно буде перевірити коректність роботи.

Налаштування пошти користувача

Щоб користувач отримав пошту, її необхідно прописати в обліковому записі, для цього треба внести зміни в меню Users -> Users, вибрати із списку потрібного користувача та перейти на вкладку Media.

В розділі Media клацнути Add. Відкриється вікно Media в якому достатньо прописати емейл користувача, та клацнути Add. Також в цьому вікні можна налаштувати графік надсилання пошти та тип події при спрацюванні якої буде надіслана пошта. Тобто можна вважати ці налаштування доволі гнучкими.

Після збереження змін, до користувача буде прикріплена адреса поштової скриньки, і можна переходити до наступних налаштувань.

Налаштування SMTP

Основні налаштування знаходяться в меню Alerts -> Media types. В списку можливих варіантів вибираємо пункт Email. Спочатку необхідно заповнити значення в формі Media type, вкладки Message templates та Options можна буде налаштувати пізніше.

Для тестування я створив поштову скриньку спеціально для Заббікса. Від імені цього користувача будуть надсилатися емейли. Тепер необхідно використовуючи ці данні заповнити наступні поля:

Media type

  • Name – Email
  • Type – Email
  • Email provider – Generic SMTP
  • SMTP server – mail.yourdomain.com
  • SMTP server port – 465
  • Email[email protected]
  • SMTP helo – <mail.yourdomain.com>
  • Connection security – SSL/TLS
  • SSL verify peer – Checkbox
  • SSL verify host – Checkbox
  • Authentication – Username and password
  • Username[email protected]
  • Password – <password>
  • Message format – HTMLPlain text
  • Description – Postfix server для відправки сповіщень з Zabbix
  • Enabled – Checkbox

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

Після отримання тестового листа, можна переходити до наступного етапу – налаштування сповіщень.

Налаштування сповіщень

Налаштування сповіщень знаходяться в меню Alerts -> Actions -> Trigger actions. В цьому вікні вже буде список створених тригерів сповіщень, проте ми створимо ще один, клацнувши на кнопку Create action.

У вікні New action заповнимо наступні поля

На закладці Action

  • Name – Email notification
  • Conditions – Вибираємо потрібний тригер, наприклад тригер, який відповідає за температуру ЦП
  • Enabled – Checkbox

На закладці Operations я налаштував тільки Operations action, клацнувши в цьому блоці на кнопку Add. В цьому вікні достатньо змінити два поля:

  • Send to users – вибрати отримувача із списку
  • Send to media type – вибрати із списку раніше створений media typeemail

Користувач повинен мати принаймні права на «читання» для хоста, щоб отримати сповіщення.

Я вирішив прибрати чекбокси з наступних пунктів: Pause operations for symptom problems, Pause operations for suppressed problems, Notify about canceled escalations, під час тестування нотифікацій, при потребі можна буде їх поставити.

По завершенню треба зберегти налаштування та сповіщення.

Перегляд активності

Щоб подивитися активність відправки пошти, можна зайти в меню Reports -> Action log і там можна буде побачити всі успішні або неуспішні події які були виконані.

Висновки

Налаштування SMTP для надсилання сповіщень у Zabbix — це важливий крок для забезпечення оперативного реагування на події в системі моніторингу. Як видно з описаних кроків, процес не є складним, але потребує уважності на кожному етапі: від прив’язки поштової адреси до користувача, до правильного заповнення параметрів SMTP-сервера і створення тригерів для дій. Успішне тестування надсилання пошти підтверджує коректність конфігурації, а журнал подій дозволяє відслідковувати, чи доходять повідомлення до адресатів. Водночас, проблема з тим, що сповіщення отримує лише адміністратор, вказує на потребу додаткового вивчення прав доступу та налаштувань користувачів у Zabbix. Сподіваюся, ця інструкція допоможе вам швидко реалізувати сповіщення через email і зробити моніторинг ще ефективнішим.

]]>
https://ostrich.kyiv.ua/uk/2025/05/28/%d0%bd%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-email-%d1%81%d0%bf%d0%be%d0%b2%d1%96%d1%89%d0%b5%d0%bd%d0%bd%d1%8f-%d0%b2-zabbix/feed/ 0
Налаштування PostfixAdmin для керування поштовими скриньками https://ostrich.kyiv.ua/uk/2025/05/19/%d0%bd%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-postfixadmin-%d0%b4%d0%bb%d1%8f-%d0%ba%d0%b5%d1%80%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%bf%d0%be%d1%88%d1%82%d0%be%d0%b2/ https://ostrich.kyiv.ua/uk/2025/05/19/%d0%bd%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-postfixadmin-%d0%b4%d0%bb%d1%8f-%d0%ba%d0%b5%d1%80%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%bf%d0%be%d1%88%d1%82%d0%be%d0%b2/#respond Mon, 19 May 2025 19:48:15 +0000 https://ostrich.kyiv.ua/?p=1177 Вступ

Оскільки на моїй Raspberry Pi вже встановлено та налаштовано Postfix + Dovecot через підключення до БД, то виникає потреба адмініструвати поштові скриньки. Для зручності адміністрування реалізовано через веб інтерфейс сервісом PostfixAdmin. Як цей сервіс встановити та налаштувати, я покроково опишу в цьому дописі.

Вимоги для PostfixAdmin

Для установки PostfixAdmin мені майже нічого не потрібно додатково встановлювати, адже багато сервісів були встановлені на попередньому етапі – при встановленні Postfix та Zabbix. Проте не буде зайвим перевірити вже існуючі пакети та залежності. Надалі в цій статті я буду вважати, що у вас вже встановлені та налаштовані всі залежності, а саме:

  • PHP – php php-mbstring php-intl php-imap php-curl php-mysql php-xml php-sqlite3
  • Apache – apache2
  • СУБД MariaDB – mariadb-client mariadb-server
  • Супутні пакети – unzip git composer

Перед початком як завжди треба оновити пакети:

sudo apt update && sudo apt upgrade

Після перевірки та встановлення необхідних залежностей переходимо до встановлення PostfixAdmin

Встановлення PostfixAdmin

Завантаження PostfixAdmin відбувається через гіт репозиторій.

cd /var/www/html
sudo git clone https://github.com/postfixadmin/postfixadmin.git
sudo chown -R www-data:www-data postfixadmin
cd postfixadmin

Щоб оптимізувати процес встановлення, можна запустити файл install.sh, який встановить composer, PHP бібліотеки та директорію templates_c. В майбутньому це позбавить від помилок.

chmod +x install.sh
./install.sh

Після установки можна переходити до бази даних.

Створення БД для PostfixAdmin

Для цього потрібно підключитися до вже існуючої або щойно створеної БД:

sudo mysql -u root -p<password>

Створення БД та користувача, та надання доступу для цього користувача для взаємодії з БД:

CREATE DATABASE postfixadmin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'postfixuser'@'localhost' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON postfixadmin.* TO 'postfixuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Після того, як БД та користувач визначені переходимо до налаштування конфігурації PostfixAdmin

Редагування конфігурації

Основні файли вже знаходяться в директорії за адресою: /var/www/html/postfixadmin. В цій директорії замість того, щоб редагувати основний файл config.inc.php треба створити файл config.local.php та прописати там основні параметри конфігурації. В майбутньому при оновленні цей файл конфігурації не буде замінений чи пошкоджений.

sudo nano config.local.php

В ньому змінюємо або додаємно наступні рядки:

$CONF['configured'] = true;
$CONF['default_language'] = 'en';
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixudmin';
$CONF['database_password'] = 'твій_пароль';
$CONF['database_name'] = 'postfixadmin';
$CONF['encrypt'] = 'dovecot:SHA512-CRYPT';

Створення Apache-віртуального хоста

Оскільки Apache може мати багато віртуальних хостів, то треба створити ще один для PostfixAdmin.

sudo nano /etc/apache2/sites-available/postfixadmin.conf

З наступними параметрами:

<VirtualHost *:80>
    ServerAdmin admin@localhost
    DocumentRoot /var/www/html/postfixadmin/public
    ServerName postfixadmin.local

    <Directory /var/www/postfixadmin/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/postfixadmin_error.log
    CustomLog ${APACHE_LOG_DIR}/postfixadmin_access.log combined
</VirtualHost>

Але якщо ви хочете, щоб PostfixAdmin був доступним тільки з локальної мережі, замініть блок <Directory> із вказанням своєї підмережі на наступний:

<Directory /var/www/html/postfixadmin>
    Require ip 127.0.0.1
    Require ip 192.168.0.0/24
</Directory>

Для того, щоб зміни вступили в силу, необхідно активувати сайт:

sudo a2ensite postfixadmin.conf
sudo a2enmod rewrite
sudo systemctl reload apache2

Оскільки окрім сервера більше ніхто не знає про домен postfixadmin.local, щоб не прописувати на кожному хості цей домен окремо, я додав цей запис в налаштуваннях свого роутера UXG Lite: Settings -> Routing -> DNS -> Create Entry -> тип запису А. Такі налаштування застосовуються локально майже миттєво.

Після перезавантаження сервера апач, можна переходити до веб інтерфейсу за адресою: http://postfixadmin.local/setup.php

Конфігурація веб сервісу PostfixAdmin

Перше відвідування сторінки http://postfixadmin.local/setup.php запросить згенерувати хеш для щойно створеного паролю. Цей хеш необхідно вписати в файлі конфігурації config.inc.php

$CONF['setup_password'] = '$2y$10$.tW14352cmjVC3N07u9MQOphugNCl5tIOAdwhYLs21XT7/TwR7Lo.';

Здебільшого користувач може зіткнутися ще з помилками, які для подальшого конфігурування є фатальними. Тому, якщо при генеруванні хешу у вас помилки не виникло, то всі прапорці повинні бути зеленими:

Нажаль мене також спіткали помилки, які доволі жваво обговорюються в інтернеті, а саме:

  • Password Hashing – attempted to use configured encrypt backend (dovecot:SHA512-CRYPT) triggered an error: /usr/bin/doveadm pw failed, see error log for details
  • You will have problems logging into PostfixAdmin.
  • Check out our Dovecot documentation at https://github.com/postfixadmin/postfixadmin/blob/master/DOCUMENTS/DOVECOT.txt, specifically around ‘3. Permissions’.

Це означає, що PostfixAdmin не зміг виконати /usr/bin/doveadm pw, тобто не може генерувати паролі для Dovecot. Іншими словами – doveadm потребує доступ на dovecot.conf/сертифікати, яких немає у webserver-користувача www-data

Є багато методів вирішення проблеми із доступом, але я розгляну лише два з них:

Перший метод Небезпечний через долучення групи www-data до групи dovecot:

Необхідно створити новий конфігураційний файл для ключів SSL, скопіювати у цей файл тільки параметри ключів SSL, додати в кінець головного конфігураційного файлу dovecot посилання на допоміжний SSL файл, змінити права та власника для цього файлу та для застосування змін перезавантажити dovecot.

Цей метод мабуть один із найпростіших, проте небезпека полягає в тому, що припустимо якщо на сервері встановлено вордпрес та поштовий сервер, то зловмисник, який отримає несанкціонований доступ до користувача www-data зможе отримати доступ до всіх ресурсів які належать групі Dovecot, наприклад: сокетів, конфігів, кешів, логів з іменами користувачів. Я цей варіант випробував в учбових цілях, проте його не рекомендую, але поділюся налаштуваннями:

sudo nano /etc/dovecot/conf.d/ssl-keys.conf
# додати шлях до сертифікатів
ssl_cert = ...
ssl_key = ...

sudo nano /etc/dovecot/conf.d/10-ssl.conf
# видалити або закоментувати ці рядки
ssl_cert = ...
ssl_key = ...

sudo nano /etc/dovecot/dovecot.conf
# додати в кінці файлу посилання на новий файл
!include_try /etc/dovecot/conf.d/ssl-keys.conf

# змінити права та власника нового файлу додати www-data до групи dovecot 
sudo chown root:root /etc/dovecot/conf.d/ssl-keys.conf
sudo chmod 640 /etc/dovecot/conf.d/ssl-keys.conf
sudo usermod -aG dovecot www-data

# перезавантажити сервіси
sudo systemctl restart dovecot apache2

Другий метод налаштування доступу з пониженим ризиком:

Він передбачає ізоляцію між веб-сервером і поштовим сервером через надання дозволу користувачу www-data до сертифікатів, проте в мене такий метод не спрацював!

sudo setfacl -R -m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/
sudo setfacl -R -m u:www-data:rwx /var/run/dovecot/stats-reader /var/run/dovecot/stats-writer

Після внесення змін перезавантажити сторінку та знову ввести пароль суперадміністратора. Для мене рішення було дієвим, тому в мене помилки зникли.

Будемо рухатися далі, а саме створення суперкористувача! Для цього треба заповнити форму на 4 поля:

  • Setup password – ввести поточний пароль
  • Admin – email для входу суперадміністратора
  • Password – складний пароль
  • Password (again) – повторити складний пароль

Після цього натиснути на кнопку Add Admin.

Про успішне створення буде свідчити рядок:

Super admins – The following ‘super-admin‘ accounts have already been added to the database.

Після того, як суперкористувач створений, можна логінитись і надалі продовжувати налаштування Для цього переходимо на сторінку логіна http://postfixadmin.local/login.php

Вводимо дані суперадміністратора, які були створені на попередньому етапі та продовжуємо налаштування.

Так виглядає дашборд

Додаємо домен

На дашборді клацаємо кнопку “Overview“, і відкривається вікно де треба створити домен. Натискаємо кнопку Add Domain

У вікні Add a new domain буде декілька полів які треба заповнити:

  • Domain – мій домен для пошти як на цьому сайті – ostrich.kyiv.ua
  • Description – звичайний опис, поле не обов’язкове, але я його заповнив – Ostrich mail domain
  • Forwards – це кількість переадресацій поштових скриньок, я ввів 15 думаю достатньо
  • Mailboxes – це кількість поштових скриньок загалом які може бути створено в цьому поштовому сервері, я ввів 15 думаю достатньо
  • Mail server is backup MX – галочки не повинно бути, бо це основний сервер а не другорядний
  • Active – галочка повинна бути, щоб домен був активним
  • Add default mail aliases – якщо галочка встановлена то буде створено 4 аліаси: abuse, hostmaster, postmaster, webmaster

Додаємо поштову скриньку

На дашборді клацаємо кнопку “Add Mailboxes“, і відкривається вікно “Create a new mailbox for your domain.” де треба заповнити форму для нового користувача.

  • Username – назва користувача (поштової скриньки) для домену ostrich.kyiv.ua
  • Password – складний пароль
  • Password (again) – повторити складний пароль
  • Name – повне ім’я користувача
  • Quota – для тестового користувача встановив квоту на 10 мегабайт, проте якщо поле порожнє, тоді квота не застосовується
  • Active – поставив галочку щоб активувати цей емейл
  • Send Welcome mail – поставив галочку, щоб при тестуванні поштового клієнта отримати вітальний лист від сервера
  • Other e-mail – поштова скринька для відновлення пароля

Після заповнення форми клацаємо Add Mailbox і пошта миттєво створюється

Зміна конфігурації Postfix та Dovecot

В мене раніше було створено три файли конфігурації, їх треба змінити, а саме замінити ім’я користувача, пароль та назву БД для підключення, SQL запит залишається без змін. В мене ці файли знаходяться за базовою адресою: /etc/postfix/

  • mysql-virtual-mailbox-domains.cf
user = postfixuser
password = <password>
hosts = 127.0.0.1m
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' AND active = 1
  • mysql-virtual-mailbox-maps.cf
user = postfixuser
password = <password>
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
  • mysql-virtual-alias-maps.cf
user = postfixuser
password = <password>
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = 1

Конфігурація підключення до БД також повинна бути прописана в файлі dovecot-sql.conf.ext

driver = mysql
connect = host=127.0.0.1 dbname=postfixadmin user=postfixuser password=<password>
default_pass_scheme = SHA512-CRYPT
password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' AND active = 1

Більше ніякий змін в конфігурацію не повинно бути внесено, тому можна перезавантажувати сервіси і перевіряти роботу пошти

sudo systemctl restart postfix
sudo systemctl restart dovecot

Перевірка пошти

Якщо раніше був налаштований thunderbird то він продовжить працювати в штатному режимі, при умові, якщо пароль до поштової скриньки не було змінено. Так само вийшло і в мене, при відкритті поштового клієнта я отримав вітального листа від сервера, що свідчить про правильні налаштування.

Висновки

PostfixAdmin — потужний інструмент для адміністрування поштових скриньок через веб-інтерфейс. Його інтеграція з Dovecot дозволяє централізовано створювати, редагувати й видаляти поштові акаунти. Попри деякі труднощі з правами доступу, завдяки правильно підібраному рішенню ви отримаєте безпечне та стабільне середовище для керування поштою.

]]>
https://ostrich.kyiv.ua/uk/2025/05/19/%d0%bd%d0%b0%d0%bb%d0%b0%d1%88%d1%82%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-postfixadmin-%d0%b4%d0%bb%d1%8f-%d0%ba%d0%b5%d1%80%d1%83%d0%b2%d0%b0%d0%bd%d0%bd%d1%8f-%d0%bf%d0%be%d1%88%d1%82%d0%be%d0%b2/feed/ 0