Мы настраивали почтовые стеки на базе 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% времени по сравнению с самостоятельной настройкой, а также до $450–650 в год на обслуживании инфраструктуры.
Наша команда имеет более 7 лет опыта с Dovecot и выполнила более 50 внедрений почтовых стеков. Мы гарантируем стабильную работу и предоставляем поддержку после запуска.
Пример из практики: миграция 500 ящиков
Для одного хостинг-провайдера мы перенесли 500 почтовых ящиков с Courier-IMAP на Dovecot за 4 часа. Использовали dovecot dsync, который синхронизировал почту без простоев. После миграции нагрузка на сервер упала на 30%, а время доставки писем сократилось вдвое.
Свяжитесь с нами для консультации — подберём оптимальную конфигурацию под ваши задачи. Закажите настройку почтового сервера под ключ.







