Как установить и настроить сервер Dovecot с Sieve и виртуальными пользователями
Важно: инструкции предполагают работу под root или с sudo. Проверьте пути и UID/GID в конфигурации перед запуском в продакшн.
Краткое содержание
- Получение исходников
- Сборка и установка Dovecot и Sieve
- Базовая конфигурация с виртуальными пользователями
- Запуск и тестирование (telnet)
- Примеры правил Sieve
- Диагностика, частые ошибки и чек-листы
1. Получение исходников
Загрузите стабильные релизы Dovecot и плагина Sieve с официального сайта. В примере использовались версии 1.0.x:
wget -c http://dovecot.org/releases/1.0/dovecot-1.0.13.tar.gzwget -c http://dovecot.org/releases/sieve/dovecot-sieve-1.0.2.tar.gzЕсли у вас другой дистрибутив или вы предпочитаете пакетный менеджер, используйте соответствующие пакеты (apt/yum/pacman) — в разделе «Альтернативы» описано подробнее.
2. Установка Dovecot и плагина Sieve
Распакуйте, соберите и установите Dovecot:
tar zxfv dovecot-1.0.13.tar.gz
cd dovecot-1.0.13
./configure
make
make installЗатем установите плагин Sieve, указывая путь к исходникам Dovecot:
tar zxfv dovecot-sieve-1.0.2.tar.gz
cd dovecot-sieve-1.0.2
./configure --with-dovecot=../dovecot-1.0.13
make
make installПримечание: при отсутствии необходимых библиотек configure выдаст ошибки. Установите dev-пакеты в вашей системе (openssl-dev, zlib-dev и т. п.).
3. Конфигурация
Скопируйте пример конфигурации и адаптируйте его под систему:
cp -pi /usr/local/etc/dovecot-example.conf /usr/local/etc/dovecot.confНиже приведён пример минимальной /usr/local/etc/dovecot.conf с комментариями. Он включает IMAP, LDA с плагином Sieve и виртуальных пользователей из файла.
# Dovecot configuration file
base_dir=/usr/local/var/run/
protocols = imap
listen = *:143
# We can use plain text passwords
disable_plaintext_auth = no
# Logging
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot.info.log
log_timestamp = "%b %d %H:%M:%S "
# SSL settings
# Without ssl
ssl_disable = yes
# Login processes
login_user = dovecot
login_greeting = Hi buddy, have an account ?
login_log_format = %$: %s
# Mailbox locations and namespaces
mail_extra_groups = mail
# Mailbox locations and namespaces
# Clients Inbox at /var/mail, Clients Folders at /var/mail/folders/username/
mail_location = mbox:/var/mail/folders/%u/:INBOX=/var/mail/%u
# Mail processes
mail_debug = yes
mail_log_prefix = "%Us(%u): "
verbose_proctitle = yes
first_valid_uid = 1000
last_valid_uid = 5000
max_mail_processes = 2048
# mbox-specific settings
mbox_read_locks = dotlock fcntl
mbox_write_locks = dotlock fcntl
# IMAP specific settings
protocol imap {
}
# LDA specific settings
protocol lda {
postmaster_address = [email protected]
hostname = mydomain.org
# Sieve plugin for local delivery agent
mail_plugins = cmusieve
log_path = /var/log/dovecot-local-deliver.log
auth_socket_path = /usr/local/var/run/dovecot-auth-master
}
# Authentication processes
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
mechanisms = plain
passdb passwd-file {
# Virtual Users from file
args = /usr/local/etc/dovecot.passdb
}
userdb passwd-file {
# Virtual Users from file
args = /usr/local/etc/dovecot.passdb
}
user = root
# It's possible to export the authentication interface to other programs:
# For example getmail with MDA external
socket listen {
master {
path = /usr/local/var/run/dovecot-auth-master
mode = 0660
user = dovecot
group = mail
}
}
}Создайте файл с виртуальными пользователями, который указывает логин, пароль, UID/GID и путь почтовой директории:
/usr/local/etc/dovecot.passdbПример содержимого:
user1:{PLAIN}pass1:1001:1001:User 1 Name:/var/mail/folders/user1:: mail_plugins=cmusieve
user2:{PLAIN}pass2:1002:1002:User 2 Name:/var/mail/folders/user2:: mail_plugins=cmusieve
user3:{PLAIN}pass3:1003:1003:User 3 Name:/var/mail/folders/user3:: mail_plugins=cmusieve
user4:{PLAIN}pass4:1004:1004:User 4 Name:/var/mail/folders/user4:: mail_plugins=cmusieveСовет по безопасности: хранение паролей в виде {PLAIN} пригодно для тестов. Для продакшна используйте хеши ({SHA512-CRYPT} и т. п.) и включите SSL/TLS.
4. Запуск и тестирование Dovecot
Запустите сервер:
/usr/local/sbin/dovecotПроверьте, что процесс запущен:
ps -ef | grep dovecotДля отслеживания логов используйте:
tail -f /usr/local/dovecot*Для валидации текущей конфигурации запущенного процесса:
/usr/local/sbin/dovecot -nПример ожидаемого вывода показывает основные параметры и socket для аутентификации.
Тест через telnet
Проверка IMAP через telnet помогает убедиться, что протокол отвечает и аутентификация работает:
# telnet localhost 143Команды IMAP (ввод в одну строку):
1 login user1 pass1
2 select inboxОжидаемые ответы содержат приветствие, подтверждение логина и список флагов/сообщений. В примере конфигурации вы увидите строки вроде “OK Hi buddy, have an account ?” и информацию о существующих письмах.
Примечание: при включённом ssl_disable = yes используйте порт 143. Для TLS используйте порт 993 и настройте ssl_cert и ssl_key.
5. Использование Sieve
Sieve — язык фильтрации почты (RFC 3028). Dovecot читает файл .dovecot.sieve в папке пользователя. В нашем примере mail_location указывает на /var/mail/folders/%u.
Создайте файл для пользователя:
touch /var/mail/folders/user1/.dovecot.sieveПростой пример правила Sieve, которое перемещает письма с «SPAM» в теме в папку Trash:
require "fileinto";
if header :comparator "i;ascii-casemap" :contains "Subject" "SPAM" {
fileinto "Trash";
stop;
}Для валидации Sieve-скриптов можно использовать libsieve-php или другие валидаторы. Если вы внедряете веб-интерфейс, рассмотрите связку с Horde или Roundcube (плагин Sieve).
6. Полезные ссылки
- http://dovecot.org — официальный сайт Dovecot
- RFC 3028 — описание Sieve
- http://libsieve-php.sourceforge.net/ — валидатор/библиотека
- Horde Groupware Webmail Edition — веб-клиент
- My wiki for dovecot — дополнительные заметки автора
Диагностика и распространённые ошибки
Проблема: Dovecot не стартует.
- Проверка: /usr/local/sbin/dovecot -n и системный лог.
- Частая причина: отсутствующие директории (base_dir) или неверные права на socket.
Проблема: автентификация не работает.
- Проверка: убедитесь, что путь к /usr/local/etc/dovecot.passdb совпадает с args.
- Проверьте формат строк в passdb и корректность UID/GID.
Проблема: письма не доставляются через LDA.
- Проверка: в конфигурации protocol lda указан mail_plugins = cmusieve и корректный auth_socket_path.
Полезные команды для отладки:
/usr/local/sbin/dovecot -n # показать текущую конфигурацию
tail -F /var/log/dovecot.log # смотреть логи в реальном времени
strace -f -e trace=network dovecot # при проблемах с сетью (использовать осторожно)Чек-лист перед запуском в продакшн
- Установлены SSL сертификаты и включён TLS
- Пароли пользователей хешированы (не {PLAIN})
- Проверены права на директории почты и сокеты
- Настроен ротационный лог (logrotate)
- Ограничены привилегии процессов (user dovecot)
Критерии приёмки
- Сервер принимает IMAP-подключения и отвечает на базовые команды (LOGIN, SELECT) для всех виртуальных пользователей.
- LDA доставляет почту в соответствующую директорию и применяет правила Sieve.
- Логи не содержат критических ошибок при нормальной нагрузке.
Альтернативы и подходы
- Пакетная установка через apt/yum/portage — проще для быстрого развёртывания и автоматических обновлений.
- Использование Postfix (MTA) + Dovecot (LDA/IMAP) — стандартная связка для приёма и доставки почты.
- Облачные почтовые решения — если не хотите управлять инфраструктурой.
1-строчный глоссарий
- Dovecot — IMAP/POP3 сервер и LDA.
- Sieve — декларативный язык фильтрации почты.
- LDA — Local Delivery Agent, локальный агент доставки.
- passdb/userdb — механизмы хранения информации об учетных записях.
Короткое объявление (100–200 слов)
Новый пост: Подробная инструкция по установке Dovecot 1.0.x из исходников с плагином Sieve и виртуальными пользователями. Руководство охватывает загрузку исходников, сборку, пример конфигурации с mail_location и passwd-file, тестирование через telnet, примеры Sieve-правил и раздел по отладке. Подходит для администраторов, которые хотят автономно управлять IMAP-сервером и обеспечить фильтрацию сообщений на стороне LDA.
Краткое резюме
- Установка из исходников даёт контроль над параметрами сборки.
- Для продакшна обязательно включите TLS и используйте хеши паролей.
- Sieve позволяет гибко фильтровать почту для каждого пользователя.
Похожие материалы
Как удалить аккаунт Revolut — полное руководство
3D‑текст в CorelDRAW с Extrude
Как включить авто‑субтитры в TikTok
Higan для SNES на Ubuntu — точная эмуляция
Winget: как использовать Windows Package Manager