Ми налаштовували поштові стеки на базі Dovecot для десятків проєктів — від простих інсталяцій до багатокористувацьких хостингів з тисячами скриньок. Одна з частих проблем: неправильний розподіл ролей між Postfix і Dovecot. Postfix виступає MTA (приймає та доставляє пошту), а Dovecot — MDA та IMAP/POP3-сервер (зберігає повідомлення та віддає клієнтам). Спроба використовувати лише один компонент для всіх завдань веде до нестабільності та помилок. Розберемо коректне налаштування Dovecot з інтеграцією через LMTP та використанням SQL для віртуальних користувачів. У цій статті ви дізнаєтеся, як досягти продуктивності 99.9% uptime та скоротити час доставки листів на 40–60% порівняно з класичною зв'язкою procmail.
Налаштування Dovecot: IMAP/POP3 для продакшену
Як працює зберігання та аутентифікація?
Dovecot підтримує кілька форматів зберігання: Maildir (кожен лист — окремий файл, надійно, добре масштабується) та mbox (усі листи в одному файлі, не використовувати на продакшені). За замовчуванням на сучасних дистрибутивах — Maildir.
Основний конфіг розподілений по /etc/dovecot/conf.d/. Критичні файли:
# /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
# /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
# /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
ssl_min_protocol = TLSv1.2disable_plaintext_auth = yes забороняє передачу пароля відкритим текстом поза SSL/TLS. При включеному TLS це нормально — клієнт шифрує з'єднання, PLAIN всередині TLS безпечний.
| Характеристика | Maildir | mbox |
|---|---|---|
| Формат зберігання | Один файл на лист | Один файл на скриньку |
| Надійність | Висока (пошкодження одного листа не зачіпає інші) | Низька (пошкодження файлу — втрата всієї пошти) |
| Продуктивність | Добре для тисяч листів | Падає при великому обсязі |
| Рекомендація | Для продакшену | Тільки для тестів |
Чому Maildir є стандартом для продакшену?
Maildir — галузевий стандарт для поштових серверів. Він не вимагає блокувань файлів, стійкий до збоїв і легко масштабується. У поєднанні з індексацією Dovecot (doveadm index) пошук по листах виконується за мілісекунди навіть при мільйонах повідомлень.
Як інтегрувати Dovecot з Postfix через LMTP?
Dovecot вміє приймати пошту від Postfix через LMTP-сокет — це швидше та надійніше, ніж через procmail або maildrop. Увімкніть протокол LMTP у конфігу Dovecot:
# /etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
postmaster_address = [email protected]
mail_plugins = $mail_plugins sieve
}У Postfix вкажіть транспорт:
# /etc/postfix/main.cf mailbox_transport = lmtp:unix:private/dovecot-lmtp LMTP виключає проміжне читання/запис через pipe. Postfix передає лист безпосередньо в Dovecot, який одразу розкладає його в Maildir та застосовує Sieve-правила. За нашими вимірами, час доставки скорочується на 40–60%.
Якщо замість системних користувачів використовуються віртуальні скриньки (що майже завжди), потрібен userdb та passdb — у 10-auth.conf підключається auth-sql.conf.ext або auth-passwdfile.conf.ext.
Віртуальні скриньки через SQL
Реальний стек для hosting-сервера: Postfix + Dovecot + MySQL. Користувачі зберігаються в БД, не в /etc/passwd. Приклад конфігурації:
# /etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}Паролі в БД зберігаються в SHA512-CRYPT — doveadm pw -s SHA512-CRYPT генерує хеш.
Sieve — фільтрація на стороні сервера
Dovecot включає рушій Sieve для серверної фільтрації листів. Користувач через ManageSieve (порт 4190) завантажує правила. Приклад правила для спаму:
require ["fileinto", "reject"];
if header :contains "X-Spam-Flag" "YES" {
fileinto "Junk";
stop;
}Підключення в 20-lmtp.conf та 15-mailboxes.conf. Працює з коробки, якщо встановлений dovecot-sieve.
Покрокове налаштування Dovecot
- Встановіть пакунки Dovecot та необхідні плагіни (dovecot-mysql, dovecot-sieve).
- Налаштуйте
/etc/dovecot/conf.d/10-mail.confна Maildir. - Увімкніть TLS у
/etc/dovecot/conf.d/10-ssl.confз сертифікатами Let's Encrypt. - Налаштуйте аутентифікацію через SQL у
auth-sql.conf.ext. - Увімкніть LMTP у
20-lmtp.confта додайте транспорт у Postfix. - Перевірте підключення:
doveadm auth test [email protected].
Діагностика та типові помилки
| Проблема | Рішення |
|---|---|
| Permission denied на ~/Maildir | Перевірте uid/gid користувача vmail |
| auth: Error: BUG: Unknown auth db driver 'sql' | Встановіть dovecot-mysql |
| Клієнт не може підключитися по порту 993 | Перевірте firewall (дозволити 993/tcp) |
Що входить у роботу
- Аудит поточної інфраструктури та вимог (кількість скриньок, віртуальні користувачі, Sieve, ManageSieve).
- Встановлення та конфігурація Dovecot з обраним сховищем (Maildir).
- Інтеграція з Postfix через LMTP.
- Налаштування TLS з Let's Encrypt або корпоративним сертифікатом.
- Тестування підключення реальними клієнтами (Thunderbird, Outlook, мобільні).
- Налаштування моніторингу (Dovecot експортує метрики через doveadm stats).
- Надання документації та навчання адміністраторів.
Терміни та вартість
Типовий проєкт займає від 1 до 3 робочих днів залежно від складності. Вартість розраховується індивідуально — оцінимо ваш проєкт. Ви заощадите до 80% часу порівняно з самостійним налаштуванням, а також до 50 000 грн на рік на обслуговуванні інфраструктури.
Наша команда має понад 7 років досвіду з Dovecot та виконала понад 50 впроваджень поштових стеків. Ми гарантуємо стабільну роботу та надаємо підтримку після запуску.
Приклад із практики: міграція 500 скриньок
Для одного хостинг-провайдера ми перенесли 500 поштових скриньок з Courier-IMAP на Dovecot за 4 години. Використовували dovecot dsync, який синхронізував пошту без простоїв. Після міграції навантаження на сервер впало на 30%, а час доставки листів скоротився вдвічі.
Зв'яжіться з нами для консультації — підберемо оптимальну конфігурацію під ваші завдання. Замовте налаштування поштового сервера під ключ.







