Гид по технологиям

Как установить и настроить сервер Dovecot с Sieve и виртуальными пользователями

4 min read Mail Server Обновлено 28 Nov 2025
Установка Dovecot с Sieve и виртуальными пользователями
Установка 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.gz
wget -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 позволяет гибко фильтровать почту для каждого пользователя.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как удалить аккаунт Revolut — полное руководство
Финансы

Как удалить аккаунт Revolut — полное руководство

3D‑текст в CorelDRAW с Extrude
Графический Дизайн

3D‑текст в CorelDRAW с Extrude

Как включить авто‑субтитры в TikTok
Социальные сети

Как включить авто‑субтитры в TikTok

Higan для SNES на Ubuntu — точная эмуляция
Эмуляция

Higan для SNES на Ubuntu — точная эмуляция

Winget: как использовать Windows Package Manager
Инструменты

Winget: как использовать Windows Package Manager

Установка и настройка тем в Windows
Windows

Установка и настройка тем в Windows