Почтовый сервер Dovecot#
Dovecot — почтовый сервер, реализующий протоколы IMAP и POP3, предназначенный для получения электронной почты с почтового ящика на сервере.
Dovecot поддерживает как простую аутентификацию, так и расширенные механизмы, включая SSL/TLS. Может использоваться в связке с MTA (Mail Transfer Agent), такими как Postfix, для полного цикла обработки электронной почты.
Предоставляет следующие ключевые функции:
Поддержка протоколов IMAP и POP3.
Поддержка системных пользователей (PAM), виртуальных пользователей (через LDAP, passwd-файлы).
Поддержка SASL (
Simple Authentication and Security Layer) для интеграции с внешними MTA.Механизмы LDA (
Local Delivery Agent) и LMTP для доставки входящей почты в почтовые ящики.Поддержка различных форматов хранения почты: mbox, Maildir, dbox, imapc, pop3c.
Поддержка шифрования соединений (SSL/TLS).
Поддержка ACL (Access Control Lists) для совместного доступа к папкам.
Интеграция с Sieve для фильтрации входящей почты на стороне сервера.
Архитектура процессов Dovecot#
Архитектура Dovecot построена на принципе модульности и разделения процессов. Dovecot использует многопроцессную модель. Все процессы изолированы друг от друга и запускаются с минимальными привилегиями.
Основные процессы:
мастер-процесс (
dovecot);процесс логирования (
log);конфигурационный процесс (
config);аутентификационный процесс (
auth);логин-процессы (
imap-login,pop3-login);почтовые процессы (
imap,pop3).

Чтобы увидеть все запущенные процессы, выполните:
ps auxw|grep "dovecot"
Пример вывода:
root 7245 0.1 0.1 2308 1096 pts/0 S+ 19:53 0:00 dovecot
dovecot 7246 0.0 0.0 2084 824 pts/0 S+ 19:53 0:00 dovecot/anvil
root 7247 0.0 0.0 2044 908 pts/0 S+ 19:53 0:00 dovecot/log
root 7250 0.0 0.3 4988 3740 pts/0 S+ 19:53 0:00 dovecot/config
root 7251 0.0 0.2 10024 2672 pts/0 S+ 19:53 0:00 dovecot/auth
vmail 7252 0.0 0.1 3180 1264 pts/0 S+ 19:53 0:00 dovecot/imap
vmail 7255 0.0 0.1 3228 1596 pts/0 S+ 19:54 0:00 dovecot/pop3
dovenull 7260 0.0 0.1 4028 1940 pts/0 S+ 19:54 0:00 dovecot/imap-login
dovenull 7262 0.0 0.1 4016 1916 pts/0 S+ 19:54 0:00 dovecot/pop3-login
Мастер-процесс#
dovecot - мастер-процесс (Master process), запускаемый при старте службы.
Играет роль «оркестратора», управляя жизненным циклом всех остальных процессов почтового сервера.
Не обрабатывает почтовые сессии напрямую, а отвечает исключительно за инициализацию, мониторинг и перезапуск дочерних процессов.
Процесс логирования#
dovecot/log - процесс логирования (Log process), отвечающий за централизованную обработку и запись сообщений от всех дочерних процессов.
Его основная цель — обеспечить запись логов без дублирования и конфликтов между параллельно работающими процессами.
Конфигурационный процесс#
dovecot/config - конфигурационный процесс (Config process), отвечающий за валидацию и кеширование конфигурационных файлов.
Служит централизованным источником конфигурационных данных для всех дочерних процессов сервера.
Основная задача — избежать дублирования чтения и разбора конфигурации каждым отдельным процессом. Каждый процесс запрашивает только необходимые параметры.
Конфигурация инициализируется один раз при запуске Dovecot и хранится в памяти.
При перезагрузке конфигурации мастер-процесс уведомляет конфигурационный процесс, который повторно читает файлы и обновляет кеш.
Аутентификационный процесс#
dovecot/auth - аутентификационный процесс (Authentication process), отвечающий за централизованную проверку подлинности пользователей. Обеспечивает гибкую, безопасную и масштабируемую аутентификацию.
Аутентификационный процесс запускается мастер-процессом и работает в фоновом режиме. Он взаимодействует с другими компонентами через Unix-сокеты или TCP-каналы, например:
imap-login→ отправляет учетные данные →auth;auth→ проверяет и возвращает статус с данными пользователя.
При успехе imap-login передает управление imap-процессу с уже известными параметрами пользователя.
Логин-процессы#
Логин-процессы (Login processes) отвечают за прием входящих сетевых подключений и выполнение первоначальной аутентификации клиентов по протоколам IMAP и POP3. Они выступают в роли шлюзов между клиентом и основными почтовыми процессами.
Dovecot использует два основных логин-процесса:
dovecot/imap-login— обрабатывает подключения по протоколу IMAP;dovecot/pop3-login— обрабатывает подключения по протоколу POP3.
Оба процесса работают по одинаковому принципу, но настроены под особенности соответствующих протоколов.
Почтовые процессы#
Почтовые процессы (Mail processes) — группа рабочих процессов, обрабатывающих почтовые сессии после успешной аутентификации пользователя. Они отвечают за выполнение всех операций с почтовыми ящиками: чтение, поиск, копирование, удаление сообщений, управление папками и применение фильтров. Каждый почтовый процесс обслуживает одну клиентскую сессию и работает с полными правами доступа к почтовому ящику пользователя.
Примеры почтовых процессов:
dovecot/imap;dovecot/pop3.
Иные процессы#
Также в Dovecot есть иные часто используемые процессы:
dovecot/anvil- отслеживание подключений пользователей;dovecot/dict- прокси-процесс для поиска вdict;dovecot/dns-client- асинхронный поиск в DNS;dovecot/imap-hibernate- перевод бездействующих IMAP-соединений в режим гибернации;dovecot/indexerиdovecot/indexer-worker- индексация полнотекстового поиска;dovecot/ipc- связь с процессами входа в систему;dovecot/stats- статистика отслеживания.
Конфигурационные файлы Dovecot#
Конфигурационные файлы Dovecot расположены в каталоге /etc/dovecot/.
Пример иерархии конфигурационных файлов:
/etc/dovecot/
├── dovecot.conf
└── conf.d/
├── 10-auth.conf
├── 10-director.conf
├── 10-logging.conf
├── 10-mail.conf
├── 10-master.conf
├── 10-metrics.conf
├── 10-ssl.conf
├── 15-lda.conf
├── 15-mailboxes.conf
├── 20-imap.conf
├── 20-lmtp.conf
├── 20-pop3.conf
├── 20-submission.conf
├── 90-acl.conf
├── 90-plugin.conf
├── 90-quota.conf
├── auth-checkpassword.conf.ext
├── auth-deny.conf.ext
├── auth-dict.conf.ext
├── auth-ldap.conf.ext
├── auth-master.conf.ext
├── auth-passwdfile.conf.ext
├── auth-sql.conf.ext
├── auth-static.conf.ext
└── auth-system.conf.ext
Конфигурационные файлы в /etc/dovecot/conf.d/ загружаются в лексикографическом порядке. Префиксы в виде чисел задают приоритет:
10-- базовые настройки;15-- дополнения к базовым настройкам;20-- протоколы и сервисы;90-- плагины и локальные переопределения.
Внешние файлы .ext не имеют префикса и реализуют настройки интеграции с различными сервисами. Подключаются с помощью директивы !include.
Команда ниже выводит значения конфигурации:
doveconf -n
Основной файл конфигурации#
dovecot.conf - основной конфигурационный файл, включающий внешние конфигурационные файлы через директивы.
Поддерживает два типа директив для подключения внешних файлов:
!include <путь>- если внешний файл не найден, выдает ошибку запуска;!include_try <путь>- загружает файл, если тот существует, игнорирует возникновение ошибок в случае отсутствия файла.
Пример конфигурации:
# /etc/dovecot/dovecot.conf
# Загрузить все конфигурационные файлы из каталога conf.d/
!include conf.d/*.conf
# Загрузить дополнительный файл конфигурации, если тот существует
!include_try local.conf
Команда ниже выводит значения параметров основного конфигурационного файла:
doveconf -c /etc/dovecot/dovecot.conf -n
Файлы конфигурации, содержащие базовые настройки#
10-auth.conf#
Файл /etc/dovecot/conf.d/10-auth.conf отвечает за глобальные параметры аутентификации.
Он определяет, какие механизмы входа разрешены, как обрабатываются учетные данные, и какие внешние сервисы (PAM, LDAP и др.) используются для проверки подлинности пользователей.
Основные параметры конфигурационного файла:
disable_plaintext_auth- определяет, разрешена ли передача пароля в открытом виде.Возможные значения:
yes- разрешает аутентификацию только через зашифрованное соединение;no- разрешает передачу пароля в открытом виде.
auth_mechanisms- определяет список разрешенных SASL-механизмов аутентификации.Возможные значения:
plain- простая передача логина и пароля (требует TLS);scram-sha-256- передача пароля с использованием SHA-256.
auth_username_chars- определяет перечень разрешенных символов в логинах;auth_verbose- включает/выключает логирование всех попыток входа. Возможные значения:yes/no;auth_cache_size- устанавливает размер кеша успешных аутентификаций;директивы
!include <путь>и!include_try <путь>.
10-director.conf#
Файл /etc/dovecot/conf.d/10-director.conf предназначен для конфигурации Dovecot Director — встроенного компонента, который позволяет использовать Dovecot в режиме прокси-сервера для балансировки нагрузки между несколькими backend-серверами хранения почты.
Основные параметры конфигурационного файла:
director_servers- список IP-адресов других серверов Director в кластере (для отказоустойчивости).director_mail_servers- список backend-серверов, на которые можно перенаправлять почтовые сессии.director_user_expire- время, через которое информация о пользователе удаляется из кеша;auth_proxy- включение/выключение проксирования аутентификации. Если включено, аутентификационный процесс на Director-сервере не проверяет пароль локально, а перенаправляет запрос на backend-сервер, который выполняет аутентификацию.
10-logging.conf#
Файл /etc/dovecot/conf.d/10-logging.conf отвечает за конфигурацию системы логирования в Dovecot.
Он определяет, куда и в каком виде записываются сообщения об ошибках, предупреждениях, информационных событиях и отладочных данных.
Основные параметры конфигурационного файла:
log_path- путь к LOG-файлу для записи основных сообщений;info_log_path- путь к LOG-файлу для записи информационных сообщений;debug_log_path- путь к LOG-файлу для записи отладочных сообщений;syslog_facility- определение категории (facility) для Syslog.
10-mail.conf#
Файл /etc/dovecot/conf.d/10-mail.conf отвечает за глобальные параметры работы с почтовыми ящиками.
Он определяет, где и в каком формате хранится почта, как Dovecot взаимодействует с файловой системой.
Основные параметры конфигурационного файла:
mail_location- местоположение почтовых ящиков пользователя;mail_access_groups- группа пользователей, имеющая доступ к почтовым ящикам;mail_cache_min_mail_count- минимальное число сообщений в ящике, при котором начинается использовать кеш;mail_temp_dir- каталог для временных файлов.
10-master.conf#
Файл /etc/dovecot/conf.d/10-master.conf определяет архитектуру процессов, сетевых слушателей (listeners) и Unix-сокеты, через которые компоненты Dovecot взаимодействуют друг с другом и с внешними сервисами (например, Postfix).
Конфигурация строится вокруг блоков service { ... }, каждый из которых описывает отдельный компонент Dovecot.
Блок может содержать:
inet_listener— сетевые порты (TCP/IP);unix_listener— Unix-сокеты.
Основные блоки:
service imap-loginиservice pop3-login- управляют логин-процессами, принимающими подключения клиентов:service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } # Минимум процессов process_min = 4 # Лимит одновременных подключений process_limit = 1024 # Ограничение процессов на сессию service_count = 1 }service auth- определяет сокеты аутентификации:service auth { # Сокет для Postfix unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } # Внутренний сокет unix_listener auth-userdb { mode = 0600 user = vmail } # Ограничение процессов process_limit = 1024 }service imapиservice pop3- настраивают почтовые процессы:service imap { # Имя пользователя, от которого будет запускаться сессия user = $default_internal_user # Ограничение виртуальной памяти vsz_limit = 256M # Ограничение сессий process_limit = 1024 }service lmtp- настраивает сетевой протокол LMTP:service lmtp { inet_listener lmtp { port = 24 } user = vmail }service lda- настраивает LDA:service dovecot-lmtp { unix_listener lmtp { user = postfix group = postfix mode = 0600 } }
10-metrics.conf#
Файл /etc/dovecot/conf.d/10-metrics.conf отвечает за настройку сбора и экспорта метрик производительности и использования.
Конфигурация строится вокруг блоков metric { ... }, каждый из которых определяет набор событий и способ экспорта.
Пример метрик, отвечающих за события успешных аутентификаций:
metric auth_success {
filter = event=auth_request_finished AND success=yes
}
Пример указания способа экспорта:
event_exporter log {
format = json
format_args = time-rfc3339
transport = log
}
10-ssl.conf#
Файл /etc/dovecot/conf.d/10-ssl.conf отвечает за конфигурацию защиты в Dovecot.
Он определяет, как сервер устанавливает зашифрованные соединения с почтовыми клиентами.
Основные параметры конфигурационного файла:
ssl- требование шифрования.Возможные значения:
required— все подключения должны использовать TLS;yes— разрешены как зашифрованные, так и незашифрованные соединения;no— шифрование отключено.
ssl_certиssl_key- пути к сертификату и приватному ключу;ssl_ca- цепочка доверия, если используется промежуточный сертификат;ssl_min_protocol- минимальная версия TLS;ssl_cipher_list- список разрешенных криптографических алгоритмов;ssl_prefer_server_ciphers- приоритет настроек сервера над клиентом.
Установка Dovecot#
Чтобы установить Dovecot, используйте:
dnf install dovecot
Запуск Dovecot#
Чтобы запустить Dovecot, введите команду:
systemctl start dovecot
Для проверки статуса Dovecot используйте:
systemctl status dovecot
Для активации автозапуска Dovecot при загрузке ОС выполните:
systemctl enable dovecot
Для перезагрузки конфигурации без остановки сессии выполните:
systemctl reload dovecot
Управление Dovecot#
Для управления и администрирования Dovecot используйте утилиту doveadm.
Часто используемые команды утилиты представлены в таблице ниже.
Команда |
Описание |
|---|---|
|
Проверяет возможность аутентификации пользователя |
|
Отображает все активные подключения клиентов |
|
Принудительно завершает все сессии указанного пользователя |
|
Завершает все сессии с указанного IP-адреса |
|
Выполняет поиск сообщений по IMAP-критериям ( |
|
Копирует сообщения из источника ( |
|
Перемещает сообщения из источника в указанный каталог |
|
Окончательно удаляет помеченные на удаление сообщения |
|
Перестраивает индексы всех каталогов пользователя |
|
Удаляет устаревшие записи из индексов |
|
Показывает текущее использование квоты (объем и количество писем) |
|
Пересчитывает квоту на основе фактического содержимого ящика |
|
Выполняет локальную доставку почты из |
|
Генерирует хеш пароля (например, |
|
Показывает ACL (права доступа) для указанного каталога |
|
Назначает права доступа ( |
|
Выполняет команду ( |
|
Перезагружает конфигурацию без остановки сессий |