Mail

Налагодження пошти на Ubuntu Server 24.04 можна виконати різними способами, залежно від твоїх цілей: чи це тільки надсилання листів із сайту, чи повноцінний поштовий сервер для прийому/відправки пошти (SMTP, IMAP/POP3), з вебінтерфейсом, захистом, DNS-записами тощо.

Я розділю на два основні сценарії:


1. Тільки надсилання пошти (наприклад, з сайту):

Мінімально необхідне:

  • Встановити Postfix в режимі "Internet Site"

  • Указати правильний домен

  • Додати SPF, DKIM, DMARC записи у DNS

  • Можливо, використовувати SMTP-реле (SendGrid, Mailgun, Gmail SMTP, тощо)

Приклад:

sudo apt update
sudo apt install postfix mailutils -y

При установці вибери: "Internet Site", а як "System mail name" — твій домен (напр., example.com)

Після цього можна перевірити надсилання:

echo "Test message" | mail -s "Test subject" you@example.com

2. Повноцінний поштовий сервер (вхідна та вихідна пошта):

Це складніший сценарій. Потрібні наступні компоненти:

Основні пакети:

  • postfix — SMTP сервер для відправки/прийому пошти

  • dovecot — IMAP/POP3 сервер (щоб читати пошту)

  • spamassassin + clamav — захист від спаму/вірусів

  • opendkim — підпис DKIM

  • certbot — SSL (обов'язково!)

  • вебінтерфейс (optional): Roundcube, RainLoop, Mailcow (Docker), тощо


Кроки налагодження вручну (Postfix + Dovecot):

1. Postfix:

Обрати "Internet Site", mail name = твій домен (наприклад, mail.example.com)

Після встановлення, редагуй конфіг:

Перевір, щоб були такі рядки:

2. Dovecot:

Найпростіше використовувати пошту у форматі Maildir у домашній папці:

Знайди та встанови:

Увімкни ім'я користувача/пароль:

Убери # з:

Увімкни IMAP/POP3 протоколи:

Додай:


3. Сертифікат SSL (через Let's Encrypt):

УВАГА!

Не створюй сертифікат зі "--standalone":

Тому що потім будуть проблеми з автоматичним оновленням сертифікату!

Після отримання сертифікату, додай його в конфіги Postfix та Dovecot (приклад вище).


4. DNS-записи (на твоєму DNS-хостингу):

A-запис:

MX-запис:

SPF:

DKIM + DMARC:

Потрібно налаштовувати додатково через opendkim та створити відповідні TXT записи.


5. Перевірка роботи:

Після перезапуску сервісів:

Перевірка портів:


Альтернатива — Готові рішення:

Якщо не хочеш морочитися з конфігами вручну:

  • Mailcow (на Docker) — повноцінний поштовий сервер з сучасним інтерфейсом

  • iRedMail — встановлює одразу все (Postfix, Dovecot, SpamAssassin, вебінтерфейс і панель)


Уявімо, я все необхідне зробив вручну. Як додати користувача (поштову скриньку)?

Добре! Якщо ти налаштував поштовий сервер вручну (Postfix + Dovecot), і використовуєш системні акаунти з поштою у форматі Maildir, то створення нової поштової скриньки — це фактично створення системного користувача, а пошта буде зберігатися у ~/Maildir.


✅ Як додати поштову скриньку (системного користувача):

1. Створи користувача:

Приклад:

Це створить:

  • користувача alice

  • домашню директорію /home/alice

  • пароль для входу (використовується також для пошти, якщо Dovecot аутентифікує через PAM)


2. Створи структуру Maildir (якщо ще нема):

Або просто авторизуйся IMAP-клієнтом (наприклад, Thunderbird), і Dovecot сам створить Maildir.


3. Перевір:

  • Вхідна пошта має зберігатися у /home/alice/Maildir/new

  • IMAP/POP3 клієнт може підключитися до сервера з логіном alice і встановленим паролем


📥 Приклади адреси:

  • Якщо в тебе домен example.com, то пошта буде: alice@example.com

У цьому випадку Postfix автоматично обробляє адресу alice@example.com як локального користувача alice.


🛠 Якщо хочеш створити скриньку не як системного користувача, а віртуального:

Це вже складніше:

  • потрібно налаштовувати віртуальні домени/користувачі в Postfix і Dovecot

  • зберігати користувачів у MySQL, або у файлах

  • налаштовувати virtual_mailbox_domains, virtual_mailbox_maps, virtual_uid_maps, virtual_gid_maps, тощо

Але для простого сервера з кількома ящиками достатньо системних користувачів.


Хочеш, щоб я показала також приклад конфігурації з віртуальними поштовими скриньками — без створення системних юзерів?

Не треба, це, мабуть значно складніше.

Так, правильно — віртуальні скриньки дають більше гнучкості (наприклад, десятки доменів без окремих системних юзерів), але ціна — складність: потрібно заводити MySQL або файли-карти, писати virtual_alias_maps, virtual_mailbox_maps, UID/GID вручну тощо.

Для домашнього сервера або простої корпоративної пошти на кілька користувачів — системні обліковки + Maildir повністю достатньо й надійно.

Якщо буде потрібно:

  • веб-інтерфейс (наприклад, Roundcube)

  • фільтрація пошти

  • або прийом пошти з alias-адрес (наприклад, info@example.com → real_user) — усе це можна поступово додавати на існуючу базу.

Можу допомогти з наступними кроками, якщо захочеш:

  • дозвіл IMAP через клієнт (Thunderbird, K-9 Mail, etc.)

  • налаштування SPF/DKIM/DMARC у DNS

  • налаштування TLS на портах 587 і 993

  • встановлення вебінтерфейсу (Roundcube)

Пиши, куди далі рухаємося.

я правильно розумію, що якщо треба два поштових домена, то це вже через віртуальні скриньки?

Так, ти правильно розумієш: якщо ти хочеш обслуговувати два або більше поштових доменів (наприклад, @example.com і @second.org) на одному сервері, то стандартна система з локальними (системними) користувачами вже не підходить.


Чому?

Postfix (і Dovecot), коли працюють з системними користувачами, не знають нічого про домени — для них user це просто ім’я локального облікового запису. Тобто:

  • alice@example.com і alice@second.org → для системи це один і той самий alice

Відповідно:

  • не можна створити двох різних користувачів alice у двох доменах.

  • не можна мати bob@example.com і bob@second.org, якщо потрібно, щоб це були різні скриньки


Тому у випадку кількох доменів — потрібно:

❗ Використовувати віртуальні домени та віртуальні скриньки

Тоді:

  • користувачі й домени зберігаються в okремому джерелі (файл, база MySQL, LDAP)

  • пошта кожного користувача зберігається у визначеній структурі (наприклад, /var/vmail/second.org/bob/Maildir/)

  • немає потреби створювати системного юзера


Альтернатива: окремі системи або ізоляція

Теоретично, можна:

  • створити віртуальні машини або контейнери для кожного домену (наприклад, example.com на одному LXC, second.org на іншому)

  • або використовувати Docker і той самий Mailcow, де мультидомен підтримується "з коробки"


Якщо дуже хочеться уникнути віртуальних скриньок...

...і кількість користувачів мала — можна змоделювати мультидоменність вручну, наприклад:

  • створити системного користувача alice_example, alice_second

  • прописати в virtual_alias_maps перенаправлення:

Але це костиль, який не масштабується і ускладнює все далі.


Підсумок

Завдання
Рішення

Один домен

Системні користувачі

Багато доменів

Віртуальні скриньки

Потрібно гнучке управління

Віртуальні скриньки + MySQL

Автоматизація, web UI

Mailcow / iRedMail / Modoboa

Якщо хочеш — можу показати приклад базової конфігурації Postfix із віртуальними скриньками, або порадити готовий стек з мультидоменністю.

Розкажи про Віртуальні скриньки + MySQL

Добре, поясню детально й поступово.


📬 Віртуальні скриньки + MySQL у Postfix/Dovecot

Цей підхід дозволяє:

  • обслуговувати декілька доменів

  • створювати поштові адреси без системних обліковок

  • зберігати паролі та поштові адреси в базі MySQL

  • масштабувати сервер і керувати ним централізовано


📌 Основна ідея

1. Postfix:

  • приймає пошту

  • перевіряє, чи існує адреса у базі (MySQL)

  • віддає її віртуальному користувачу

2. Dovecot:

  • дозволяє клієнтам (Thunderbird, Roundcube, K-9 тощо) підключитися до скриньки

  • аутентифікує користувача за паролем з MySQL

  • надає доступ до Maildir (наприклад, /var/vmail/example.com/alice/)


📦 Компоненти, які потрібні


📁 Структура директорій (приклад)


🧩 База MySQL

Приклад бази mailserver із трьома таблицями:

Таблиця virtual_domains:

Таблиця virtual_users:

Таблиця virtual_aliases:


🔐 Додавання користувача (приклад)

Паролі бажано зберігати у вигляді SHA512-CRYPT або bcrypt, не ENCRYPT.


⚙️ Конфігурація Postfix

У main.cf додати:

UID/GID — створюєш користувача vmail:

Файл /etc/postfix/mysql-virtual-domains.cf:

І подібні — для users та aliases.


⚙️ Конфігурація Dovecot

У dovecot.conf:

У 10-mail.conf:

У 10-auth.conf:

У auth-sql.conf.ext:

І dovecot-sql.conf.ext:


✅ Готово! Перевір:

  1. Додай користувача до бази

  2. Створи йому каталог:

  1. Перезапусти:

  1. Підключися через IMAP (993) Thunderbird чи будь-яким клієнтом


Last updated