- Основные термины
- Введение
- Структура таблиц в базе данных
- Агент доставки почты Dovecot
- Агент пересылки почты Exim
- Веб интерфейс Roundcube
- Заключение
- Список литературы
- Комментарии
3. Агент доставки почты Dovecot
Dovecot - это свободный IMAP и POP3 сервер для Unix/Linux систем, при разработке которого безопасности уделяется много внимания. Также хорошими достоинствами данного сервера являются: быстрота, простота установки и малое потребление памяти. Основные особенности:
- поддержка форматов почтовых ящиков mbox и Maildir;
- высокое быстродействие благодаря индексации содержимого почтовых ящиков;
- полное соответствие стандартам IMAP;
- возможность работы с почтовыми язиками и их индексами с нескольких компьютеров, что позволяет хранить данные на кластерных файловых системах и NFS;
- возможность расширения функционала с помощью плагинов;
- поддержка Sieve;
- поддержка различных хранилищ аутентификационной информации и режимов аутентификации;
- Postfix и Exim могут проводить аутентификацию пользователей через Dovecot;
- простота миграции с большинства других IMAP и POP3 серверов.
В данной конфигурации почтовой системы работа с почтовыми ящиками пользователй переложена полностью на Dovecot, что позволяет использовать фильтры на языке Sieve и вести Dovecot,у собственный индексный файл в каждом ящике для ускорения работы с ним.
3.1 Установка
На момент написания статьи в портах доступно две версии Dovecot: 1.2.17 и 2.1.10. Я буду устанавливать вторую версию.
- # cd /usr/ports/mail/dovecot2
- # make install clean
- # cd /usr/ports/mail/dovecot2-pigeonhole
- # make install clean
3.2 Настройка
Конфигурационные файлы Dovecot хранятся в папке /usr/local/etc/dovecot (если в директории пусто, то примеры конфигурационных файлов лежат здесь — /usr/local/share/doc/dovecot/example-config). Во второй версии главный конфигурационный файл был разбит на несколько файлов, каждый из которых отвечает за определенный функционал. Большинство опций из первой версии присутствуют и во второй, поэтому не окажется лишним полный перевод конфигурационного файла Dovecot первой версии — ссылка. Структура директории с конфигурационными файлами Dovecot имеет следующий вид:
- dovecot.conf — конфигурационный файл Dovecot;
- dovecot-sql.conf.ext — настройки для sql базы данных пользователей;
- conf.d/10-auth.conf — параметры процесса авторизации;
- conf.d/10-director.conf — параметры Dovecot Director;
- conf.d/10-logging.conf — ведение логов;
- conf.d/10-mail.conf — расположение почтовых ящиков и параметры пространства имен;
- conf.d/10-master.conf — сетевые параметры и ограничения для процессов;
- conf.d/10-ssl.conf — параметры SSL;
- conf.d/15-lda.conf — параметры LDA;
- conf.d/20-imap.conf — настройки процесса IMAP;
- conf.d/20-lmtp.conf — настройки процесса LMTP;
- conf.d/20-managesieve.conf — настройки процесса ManageSieve;
- conf.d/20-pop3.conf — настройки процесса POP3;
- conf.d/90-acl.conf — списки доступа к почтовым ящикам;
- conf.d/90-plugin.conf — параметры для плагинов;
- conf.d/90-quota.conf — настройки квот;
- conf.d/90-sieve.conf — параметры интерпритатора Sieve;
- conf.d/auth-*.conf.ext — параметры различных баз данных пользователей;
- ## Конфигурационный файл Dovecot
- # Инструкцию по быстрому старту смотреть здесь:
- # http://wiki2.dovecot.org/QuickConfiguration
- # Команда "dovecot -n" выводит список измененных параметров. Используйте
- # эту возможность, вместо копирования содержимого файла, при обращении
- # в списках рассылки.
- # Все, что расположено после символа "#" считается комментарием. Пробелы
- # и символы табуляции игнорируются. Значение параметра, в котором
- # есть пробелы поместите в кавычки, чтобы он интерпритировался должным
- # образом, например key = "# char and trailing whitespace "
- # Значения по умолчанию представленные в данном файле не обязательно
- # раскомментировать. Не обязательны секции (например, namespaces {})
- # или настройки плагинов, здесь они приведены для примера. Пути так же
- # заданы в качестве примера, значения по умолчанию в данном случае
- # были заданы при компиляции ( --prefix=/usr/local
- # --sysconfdir=/usr/local/etc --localstatedir=/var )
- # С какими протоколами работать?
- #protocols = imap pop3 lmtp
- protocols = imap pop3
- # Список, разделенный запятыми, IP адресов или имен хостов, с которых
- # будут обрабатываться подключения. "*" - принимать подключения со всех
- # интерфейсов по протоколу IPv4. "[::]" - принимать подключения со всех
- # интерфейсов по протоколу IPv6. Укажите "*, [::]", чтобы принимать
- # подключения по любому протоколу.
- # Если вы хотите изменить стандартный порт для сервиса, то правте
- # файл conf.d/master.conf.
- listen = *
- # Директория, в которой работает Dovecot.
- base_dir = /var/run/dovecot/
- # Приветственное сообщение.
- login_greeting = POP3/IMAP server ready.
- # Список сетей, разделенный пробелами, которым разрешен доступ.
- # Клиентам с этих адресов разрешено переписывать IP адресы
- # и порты (для проверок авторизации и аутентификации).
- # Параметр disable_plaintext_auth игнорируется для этих сетей.
- # Например, здесь можно указать адреса ваших IMAP-прокси серверов.
- #login_trusted_networks =
- # Список сокетов проверки прав доступа входа, разделенный пробелами (например, tcpwrap)
- #login_access_sockets =
- # Использовать более информативный заголовок процесса (отображается
- # в команде ps). На данный момент отображаются только имя пользователя
- # и IP адрес. Полезно, если вы хотите видеть кого на самом деле обслуживает
- # IMAP процесс.
- verbose_proctitle = no
- # Прибивать все подключения, когда завершается главный процесс Dovecot.
- # При "no" подключенные клиенты продолжат работу, даже если главный
- # процесс будет завершен (может быть полезно при обновлении, например когда
- # была выпущена новая версия с исправленными косяками в безопасности).
- # Однако, когда главный процесс будет завершен, то процессы обрабатывающие
- # запросы от клиентов не смогут писать в лог файлы.
- shutdown_clients = yes
- # Если не ноль, то посылать выполнять команды через соединение к серверу doveadm
- # (то есть выполнять их на сервере doveadm), вместо выполнения этих команд
- # самим процессом.
- #doveadm_worker_count = 0
- # Unix сокет или хост, на котором работает сервер doveadm.
- #doveadm_socket_path = doveadm-server
- # Список переменных окружения, разделенный пробелами, которые задаются
- # перед запуском Dovecot и передаются всем дочерним процессам. Также вы можете
- # задавать здесь переменные окружения, используя пару ключ=значение.
- #import_environment = TZ
- ##
- ## Настройки dictionary server
- ##
- # Словарь может использоваться некоторыми плагинами, для сохранения
- # значений типа ключ=значение. К таким плагинам можно отнести: quota,
- # expire и acl. Словарь может использоваться через сервер или напрямую.
- # Следующий блок dict ассоциирует имена словарей и URI, когда используется
- # сервер. URI имеет следующий формат "proxy::<name>".
- dict {
- #quota = mysql:/usr/local/etc/dovecot/dovecot-dict-sql.conf.ext
- #expire = sqlite:/usr/local/etc/dovecot/dovecot-dict-sql.conf.ext
- }
- # Остальные параметры задаются в файлах в папке conf.d, которые
- # подключаются ниже. Имена конфигурационных файлов заданы так,
- # чтобы конф. файлы подключались в определенном порядке.
- !include conf.d/*.conf
- # Попробовать включить файл. Если файл не будет найдет, то это просто
- # будет проигнорировано.
- !include_try local.conf
- # Этот файл открывается с правами пользователя root, поэтому
- # он должен принадлежать пользователю root и иметь права
- # доступа 0600.
- #
- # http://wiki2.dovecot.org/AuthDatabase/SQL
- #
- # Для модуля sql passdb вам нужна база данных с таблицей, содержащая
- # как минимум поля "имя пользователя" и "пароль". Если вы хотите
- # использовать синтакс user@domain, то вам понадобится отдельное
- # поле для имени домена.
- #
- # Если все ваши пользователи имеют одинаковые uid/gid и одинаковую
- # общую часть вначале пути (наример, /var/mail, /usr/home), то вы можете
- # использовать модуль static userdb для генерации остального пути к
- # домашней директории из имени пользователя и домена. В этом случае
- # вам не понадобятся поля home, uid, gid в таблице в базе данных.
- #
- # Если у вас есть необходимость использовать модуль sql userdb, то
- # вам придется создать поля home, uid, и gid. Вот пример таблицы:
- #
- # CREATE TABLE users (
- # username VARCHAR(128) NOT NULL,
- # domain VARCHAR(128) NOT NULL,
- # password VARCHAR(64) NOT NULL,
- # home VARCHAR(255) NOT NULL,
- # uid INTEGER NOT NULL,
- # gid INTEGER NOT NULL,
- # active CHAR(1) DEFAULT 'Y' NOT NULL
- # );
- # Используемая база данных: mysql, pgsql, sqlite
- driver = pgsql
- # Подключение к базе данных. Специфичные настройки для драйвера.
- #
- # HA / round-robin load-balancing is supported by giving multiple host
- # settings, like: host=sql1.host.org host=sql2.host.org
- #
- # pgsql:
- # Смотрите в документацию PostgreSQL по функции PQconnectdb
- # допустимые параметры. Используйте maxconns=n (по умолчанию 5)
- # для ограничения количества подключений Dovecot к базе данных.
- #
- # mysql:
- # Имена основных параметров аналогичны PostgreSQL:
- # host, port, user, password, dbname
- #
- # Также доступны следующие параметры:
- # client_flags - смотрите документацию по MySQL
- # ssl_ca, ssl_ca_path - задайте одну или две опции, чтобы включить SSL
- # ssl_cert, ssl_key - для отправки сертификата клиента на сервер
- # ssl_cipher - минимальная безопасность шифра (по умолчанию: HIGH)
- # option_file - читать параметры из файла (указанного здесь) для клиента
- # MySQL, вместо файла по умолчанию - my.cnf.
- # option_group - читать параметры из определенной группы (по умолчанию: client)
- #
- # Вы можете указать в параметре host путь к Unix сокету: host=/var/run/mysql.sock
- # Учтите, что на данный момент нельзя использовать пробелы в параметрах.
- #
- # sqlite:
- # Путь к файлу базы данных.
- #
- # Примеры:
- # connect = host=192.168.1.1 dbname=users
- # connect = host=sql.example.com dbname=virtual user=virtual password=blarg
- # connect = /etc/dovecot/authdb.sqlite
- #
- connect = host=192.168.7.253 dbname=vmail user=vmail password=1234
- # Формат хранения паролей по умолчанию.
- #
- # Список поддерживаемых схем смотрите здесь:
- # http://wiki2.dovecot.org/Authentication/PasswordSchemes
- #
- default_pass_scheme = MD5
- # Запрос passdb, который возвращает пароль. Он может вернуть следующие поля:
- # password - пароль пользователя. Это поле всегда должно присутствовать.
- # user - возвращается в формате user@domain.
- # username и domain - другой путь представления поля "user".
- #
- # Поле "user" должно быть регистронезависимым, чтобы избежать
- # создания двух директорий (почтовых ящиков), если вдруг пользователь
- # предоставит учетные данные по разному: "name" и "nAme". Если имя пользователя
- # и имя домена хрантся в разных колонках, то вы можете вернуть колонки
- # "username" и "domain" вместо одной "user".
- #
- # Также запрос может вернуть другие поля, которые имеют свое назначение,
- # смотрите список таких полей здесь:
- # http://wiki2.dovecot.org/PasswordDatabase/ExtraFields
- #
- # Подстановки, используемые чаще всего: (смотрите полный список подстановок
- # здесь - http://wiki2.dovecot.org/Variables):
- # %u = entire user@domain
- # %n = user part of user@domain
- # %d = domain part of user@domain
- #
- # Учтите, что подстановки могут использоваться только в SQL запросе. Если
- # запрос возвращает любую из этих подстановок, то ничего не изменяется.
- # Иначе было бы невозможно задавать имя пользователя, в котором
- # присутствовал бы символ '%'.
- #
- # Пример:
- # password_query = SELECT userid AS user, pw AS password \
- # FROM users WHERE userid = '%u' AND active = 'Y'
- #
- password_query = \
- SELECT "users_tb"."username" AS "username", \
- "domains_tb"."domainname" AS "domain", \
- "users_tb"."passwd" AS "password" \
- FROM "users_tb" \
- INNER JOIN "domains_tb" ON ("users_tb"."domain_id" = "domains_tb"."id") \
- WHERE "users_tb"."username" = '%n' AND \
- "domains_tb"."domainname" = '%d' AND \
- "users_tb"."active" = 'true' AND \
- "domains_tb"."active" = 'true'
- # Запрос, который возвращает информацию о пользователе. Он может вернуть:
- # uid - System UID (overrides mail_uid setting)
- # gid - System GID (overrides mail_gid setting)
- # home - Home directory
- # mail - Mail location (overrides mail_location setting)
- #
- # Ни одно из этих полей не является обязательным. Если вы используете
- # везде одинаковые UID и GID, и различными у вас остаются только
- # home или mail, то вам лучше использовать userdb static.
- # Полный список возможных полей смотрите здесь:
- # http://wiki2.dovecot.org/UserDatabase/ExtraFields
- #
- # Примеры:
- # user_query = SELECT home, uid, gid FROM users WHERE userid = '%u'
- # user_query = SELECT dir AS home, user AS uid, group AS gid FROM users where userid = '%u'
- # user_query = SELECT home, 501 AS uid, 501 AS gid FROM users WHERE userid = '%u'
- #
- user_query = \
- SELECT "users_tb"."uid" AS "uid", "users_tb"."gid" AS "gid", \
- ("users_tb"."homedir" || '/%d/%n') AS "home", \
- ('*:storage=' || "users_tb"."quota" || 'k') AS "quota_rule" \
- FROM "users_tb" \
- INNER JOIN "domains_tb" ON ("users_tb"."domain_id" = "domains_tb"."id") \
- WHERE "users_tb"."username" = '%n' AND \
- "domains_tb"."domainname" = '%d' AND \
- "users_tb"."active" = 'true' AND \
- "domains_tb"."active" = 'true'
- # Если вы не хотите использовать два запроса (passdb + userdb), то вы можете
- # использовать userdb prefetch вместо userdb sql. В этом случае вы должны
- # сделать так, чтобы запрос в password_query возвращал поля userdb
- # с префиксом "userdb_". Например:
- #password_query = \
- # SELECT userid AS user, password, \
- # home AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \
- # FROM users WHERE userid = '%u'
- # Запрос для получения списка всех пользователей.
- #iterate_query = SELECT username AS user FROM users
- ##
- ## Процесс авторизации
- ##
- # Отключить метод аутентификации LOGIN и другие методы с открытым текстом,
- # если клиент подключен не через защищенное соединение SSL/TLS. Только
- # учтите, что для локальных подключений это ограничение не применяется.
- disable_plaintext_auth = no
- # Размер кэша в килобайтах. 0 значит, что кэш выключен. Учтите, что bsdauth,
- # PAM и vpopmail требуют, чтобы параметр cache_key был задан, чтобы
- # использовать кэширование.
- auth_cache_size = 0
- # Время жизни кэша в секундах. После истечения времени кэшированные
- # данные не используются, но если БД отвалилась, то остается использовать
- # только их. Dovecot также пытается автоматически узнать об изменении
- # пароля у пользователя: если предыдущая аутентификация была успешной,
- # но текущая потерпела неудачу, то кэш не будет использован. Сейчас это
- # работает только для аутентификации с открытым текстом.
- #auth_cache_ttl = 1 hour
- # Время жизни для неудачных попыток (пользователь не найден,
- # неверный пароль). 0 значит выключить кэширование.
- #auth_cache_negative_ttl = 1 hour
- # Space separated list of realms for SASL authentication mechanisms that need
- # them. You can leave it empty if you don't want to support multiple realms.
- # Many clients simply use the first one listed here, so keep the default realm
- # first.
- #auth_realms =
- # realm/domain по умолчанию, если тот явно не задан. Это используется
- # и для SASL realms, и для добавления @domain к имени пользователя
- # при авторизации открытым текстом.
- #auth_default_realm =
- # Список разрешенных символов в имене пользователя. Если полученное
- # имя пользователя имеет символы не из списка, то пользователь
- # автоматом получает отлуп. Это простая проверка позволяет слать
- # лесом ботов, ну и чтобы не получить проблем с экранированием данных
- # при запросах к SQL/LDAP. Если вы хотите разрешить любые символы, то
- # оставьте это поле пустым.
- auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
- # Преобразование имени пользователя перед поиском в БД. Значение
- # содержит серию замен (исходный -> нужный). Например, "#@/@"
- # значит, что символы '#' и '/' будут преобразованы в '@'.
- #auth_username_translation =
- # Формат имени пользователя перед просмотром в БД. Вы можете
- # использовать здесь стандартные значения, например, %Lu
- # преобразует символы в нижний регистр, %n - отбросить домен, если
- # он задан, или "%n-AT-%d" - заменить символ '@' на '-AT-'. Это
- # преобразование выполняется после auth_username_translation.
- auth_username_format = %Lu
- # If you want to allow master users to log in by specifying the master
- # username within the normal username string (ie. not using SASL mechanism's
- # support for it), you can specify the separator character here. The format
- # is then <username><separator><master username>. UW-IMAP uses "*" as the
- # separator, so that could be a good choice.
- #auth_master_user_separator =
- # Имя анонимного пользователя, используемое с механизмом
- # ANONYMOUS SASL.
- #auth_anonymous_username = anonymous
- # Максимальное количество работающих процессов аутентификации.
- # Эти процессы создаются и уничтожаются автоматически.
- auth_worker_max_count = 30
- # Имя хоста используемое в GSSAPI. По умолчанию берется из системы.
- # Значение "$ALL" разрешает использовать любые записи keytab.
- # Host name to use in GSSAPI principal names. The default is to use the
- # name returned by gethostname(). Use "$ALL" to allow all keytab entries.
- #auth_gssapi_hostname =
- # Kerberos keytab для работы с GSSAPI. Если не указан, то
- # используется системное значение (обычно /etc/krb5.keytab).
- #auth_krb5_keytab =
- # Авторизация NTLM и GSS-SPNEGO через демона winbind и ntlm_auth
- # из пакета Samba. <doc/wiki/Authentication/Mechanisms/Winbind.txt>
- auth_use_winbind = no
- # Путь до тулзы ntlm_auth из пакета Samba.
- #auth_winbind_helper_path = /usr/bin/ntlm_auth
- # Количество секунд выжидаемое перед повторной попыткой аутентификации.
- auth_failure_delay = 2 secs
- # Отказать в аутентификации, если у клиента неверный SSL сертификат.
- auth_ssl_require_client_cert = no
- # Взять имя пользователя из SSL сертификата (который предоставил клиент).
- # Будет использована функция X509_NAME_get_text_by_NID(), которая
- # возвращает значение поля CommonName.
- auth_ssl_username_from_cert = no
- # Список, разделенный пробелами, разрешенных методов аутентификации:
- # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
- # gss-spnego
- # Учитывайте значение параметра disable_plaintext_auth.
- auth_mechanisms = plain login
- ##
- ## Параметры базы данных пользователей
- ##
- #
- # БД паролей, используемая для проверки пользователей (и ничего более).
- # Вы можете настроить несколько БД паролей (passdbs) и
- # пользователей (userdbs). Это полезно, если вы хотите сделать доступ
- # системным пользователям и виртуальным одновременно, чтобы
- # не пришлось дублировать системных в базе виртуальных.
- # <doc/wiki/PasswordDatabase.txt>
- #
- # БД пользователей определяет, где хранится почта и какому
- # пользователю/группе она принадлежит. При конфигурации
- # single-UID используйте "static".
- #
- # <doc/wiki/UserDatabase.txt>
- #!include auth-deny.conf.ext
- #!include auth-master.conf.ext
- #!include auth-system.conf.ext
- !include auth-sql.conf.ext
- #!include auth-ldap.conf.ext
- #!include auth-passwdfile.conf.ext
- #!include auth-checkpassword.conf.ext
- #!include auth-vpopmail.conf.ext
- #!include auth-static.conf.ext
- ##
- ## Расположение лог файлов.
- ##
- # Файл, в который записываются сообщения об ошибках.
- # Укажите "syslog", чтобы слать все в syslog.
- # Укажите /dev/stderr, чтобы слать все в stderr.
- log_path = /var/log/dovecot/mainlog
- # Лог файл, в который выводятся информационные сообщения.
- # Если не задано, то используется параметр log_path.
- #info_log_path =
- # Лог файл, в который выводятся отладочные сообщения.
- # Если не задано, то используется параметр log_path.
- #debug_log_path =
- # Раздел syslog для логов.
- #syslog_facility = mail
- ##
- ## Ведение логов и отладка.
- ##
- # Писать в лог о неудачных попытках входа и их причину.
- auth_verbose = yes
- # В случае, если пароль неверен, выводить в лог пароль.
- # Возможные значения: no, plain и sha1. Значение sha1 может быть полезно
- # для выявления перебора паролей
- auth_verbose_passwords = no
- # Выводить более информативные сообщения в лог. Так же пишутся
- # запросы SQL.
- #auth_debug = no
- # В случае несовпадения паролей писать в лог пароли и используемую
- # схему авторизации. Полезно для отладки. Перед включением
- # включите auth_debug.
- #auth_debug_passwords = no
- # Включить вывод отладочных сообщений. Это может вам определить,
- # почему Dovecot не может найти ваши письма.
- #mail_debug = no
- # Выводить инфу про SSL в сообщениях об ошибках.
- #verbose_ssl = no
- # Плагин mail_log предоставляет более гибкое управление ведением логов.
- plugin {
- # Какие события писать в лог. Еще можно указать: flag_change append
- #mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
- # Возможные поля: uid, box, msgid, from, subject, size, vsize, flags
- # size and vsize are available only for expunge and copy events.
- #mail_log_fields = uid box msgid size
- }
- ##
- ## Формат лог сообщений.
- ##
- # Префикс для сообщений, формат смотреть в мане по strftime(3).
- #log_timestamp = "%b %d %H:%M:%S "
- # Список, разделенный пробелами того, что вы хотите писать.
- # Элементы, которые имеют не пустое значение будут объединяться
- # вместе в выходной строке с помощью запятой.
- #login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c
- # Формат лога подключений. %$ заменяется на login_log_format_elements,
- # %s заменяется на данные.
- #login_log_format = %$: %s
- # Префикс для выводимых сообщений в лог файл. Смотрите
- # <doc/wiki/Variables.txt>, чтобы знать - какие значения здесь
- # возможны.
- #mail_log_prefix = "%s(%u): "
- # Формат лог сообщений доставщика писем. Вы можете использовать следующие значения:
- # %$ - статус доставки (e.g. "saved to INBOX")
- # %m - Message-ID
- # %s - тема
- # %f - от кого
- # %p - физический размер
- # %w - виртуальный размер
- #deliver_log_format = msgid=%m: %$
- ##
- ## Пути к ящикам и пространства имен
- ##
- # Расположение почтовых ящиков. По умолчанию эта переменная не задана,
- # поэтому Dovecot пытается найти почтовые ящики автоматически.
- # Это не будет работать, если пользователь не имеет почтового ящика,
- # поэтому лучше задать этот параметр.
- #
- # Если вы используете mbox, то одного пути к файлам почтового ящика
- # (например, /var/mail/%u) не будет достаточно. Так же вы должны
- # предоставить Dovecot,у, где будут храниться другие почтовые ящики.
- # Это называется "root mail directory (корневая директория почты)" и она должна
- # быть задана первой в параметре mail_location.
- #
- # Так же вы можете использовать следующие переменные:
- #
- # %u - имя пользователя
- # %n - имя польльзователя, только без домена
- # %d - имя домена (пусто, если домен не указан)
- # %h - домашняя директория
- #
- # Полный список смотрите здесь - <doc/wiki/Variables.txt>. Примеры:
- #
- # mail_location = maildir:~/Maildir
- # mail_location = mbox:~/mail:INBOX=/var/mail/%u
- # mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
- #
- # <doc/wiki/MailLocation.txt>
- #
- mail_location = maildir:~/Maildir
- # Если вы хотите задать несколько местоположений почтовых ящиков или
- # хотите изменить пространства имен, вы можете сделать это определяя
- # секции пространств имен.
- #
- # Вы можете создать приватные, разделяемые и общие пространства имен.
- # Приватные пространства имен используются для личных писем пользователй.
- # К разделяемым пространствам могут иметь доступ другие пользователи.
- # Общие пространства разделяется между почтовыми ящиками, которые
- # управляются админами. Если вы создаете разделяемые или общие
- # пространства, то вам понадобится ACL плагин (для управляения правами
- # доступа), в противном случае пользователи будут иметь доступ ко всем
- # разделяемым почтовым ящикам, только если у них есть такая возможность
- # на уровне прав доступа файловой системы.
- #
- # Запомните: Если вы добавляете какие-либо пространства имен, то пространства
- # имен по умолчанию должны быть добавлены обязательно, то есть значение
- # mail_location ничего не значит, пока в пространстве имен не задан параметр
- # location. По умолчанию пространство имен не имеет префикса.
- #namespace {
- # Тип пространства имен: private, shared или public
- #type = private
- # Используйте здесь обратный слэш в роли разделителя. Вы должны
- # использовать такой разделитель для всех пространств имен или
- # могут возникнуть проблемы с некоторыми клиентами.
- # Зависит от формата пользовательского ящика.
- #separator =
- # Для доступа к пространству имен требуется указать префикс. Он должен
- # быть разным для каждого пространства имен. Например, "Public/".
- #prefix =
- # Физическое местоположение почтового ящика. Формат такой же как и
- # у параметра mail_location. Если не задан, то значение берется
- # из mail_location.
- #location =
- # Может быть только один ящик для приема сообщений и этот параметр
- # определяет у какого пространства имен будет этот ящик.
- #inbox = no
- # If namespace is hidden, it's not advertised to clients via NAMESPACE
- # extension. You'll most likely also want to set list=no. This is mostly
- # useful when converting from another server with different namespaces which
- # you want to deprecate but still keep working. For example you can create
- # hidden namespaces with prefixes "~/mail/", "~%u/mail/" and "mail/".
- #hidden = no
- # Show the mailboxes under this namespace with LIST command. This makes the
- # namespace visible for clients that don't support NAMESPACE extension.
- # "children" value lists child mailboxes, but hides the namespace prefix.
- #list = yes
- # Namespace handles its own subscriptions. If set to "no", the parent
- # namespace handles them (empty prefix should always have this as "yes")
- #subscriptions = yes
- #}
- # Пример конфигурации разделяемого пространства имен
- #namespace {
- #type = shared
- #separator = /
- # Почтовые ящики отображаются так - "shared/user@domain/"
- # %%n, %%d и %%u преобразуются в конечного пользователя.
- #prefix = shared/%%u/
- # Местонахождение писем для других почтовых ящиков. Учтите,
- # что %variables и ~/ преобразуются в данные, связанные
- # с подключенным пользователем. %%n, %%d, %%u и %%h
- # преобразуются в данные, связанные с конечным пользователем.
- #location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u
- # Использовать пространство имен по умолчанию для подписчиков.
- #subscriptions = no
- # Показывать только пространство имен shared/, если выводится
- # список разделяемых почтовых ящиков.
- #list = children
- #}
- # Системные пользователь и группа, которые используются для доступа
- # к почтовым ящикам. Если вы используюте различных пользователей
- # и различные группы, то используя колонки uid или gid из БД пользователей,
- # можно переопределить эти значения. Вы можете использовать здесь
- # имена или числовые идентификаторы. <doc/wiki/UserIds.txt>
- mail_uid = mailnull
- mail_gid = mailnull
- # Группа, используемая для привилигированных операций. На данный момент
- # это используется только с INBOX, когда не удается его создание или
- # не получается блокировка (dotlock). Обычно используется группа "mail" для
- # доступа к /var/mail.
- mail_privileged_group = mail
- # Предоставить доступ этим группам к процессу, обрабатывающему письма.
- # В основном это используется для разрешения доступа к разделяемым
- # пространствам имен. Учтите, что это может быть опасно, если пользователи
- # могут создавать символические ссылки (например, если здесь указана
- # группа "mail", то ln -s /var/mail ~/mail/var позволит удалять пользователю
- # чужие почтовые ящики, или ln -s /secret/shared/box ~/mail/mybox позволит
- # читать их).
- #mail_access_groups =
- # Предоставить полный доступ к ФС клиентам. В этом случае не происходит
- # каких-либо проверок доступа, только проверки на уровне прав доступа ФС.
- # Это работает с Maildir и mbox, разрешая указывать префикс к имени
- # ящика, например, /path/ или ~/user/.
- mail_full_filesystem_access = no
- ##
- ## Процесс, работающий с письмами
- ##
- # Не использовать системный вызов mmap(). Такое поведение
- # может потребоваться, если индексы хранятся на разделяемой
- # ФС (например, NFS или кластерная ФС).
- mmap_disable = no
- # Использовать флаг O_EXCL, когда создаются файлы блокировки (dotlock).
- # NFS поддерживает O_EXCL, начиная с версии 3, так что на сегодняший
- # день данный параметр не создаст каких-либо проблем.
- dotlock_use_excl = yes
- # Когда использовать системные вызовыfsync() или fdatasync():
- # optimized (по умолчанию): при необходимости, чтобы не потерять важные данные
- # always: полезна, например для NFS, где запись откладывается (задерживается)
- # never: вообще не использовать (лучшая производительность, но любой сбой
- # может привести к потери данных)
- mail_fsync = optimized
- # Для хранения писем используется NFS. Установите этот параметр в 'yes',
- # чтобы Dovecot при необходимости сбрасывал кэши NFS. Если вы
- # используете локальную ФС для хранения, то изменение этого параметра
- # не требуется.
- mail_nfs_storage = no
- # Индексы тоже хранятся на NFS. Этот параметр требует
- # mmap_disable=yes и fsync_disable=no.
- #mail_nfs_index = no
- # Метод блокировки для индексов. Возможные значения fcntl, flock и dotlock.
- # В методе блокировки dotlock используются некоторые трюки,
- # что может увеличить нагрузку на подсистему ввода/вывода диска.
- # Пользователям NFS следует знать: что flock в данном случае не работает,
- # не забывайте изменять mmap_disable.
- lock_method = fcntl
- # Директория, в которой LDA/LMTP временно сохраняет входящие сообщения
- # размером более 128 Кб.
- mail_temp_dir = /var/tmp
- # Допустимые дапазоны UID для пользователей, по умолчанию от 500 и выше.
- # То есть никто не сможет зайти на сервер с идентификатором ниже/выше
- # указанного. Учтите, что руту доступ запрещен на уровне кода.
- first_valid_uid = 26
- #last_valid_uid = 0
- # Тоже самое, только для групп. Если у пользователя основная группа
- # с идентификатором, выходящим из данного диапазона, то в доступе
- # такому пользователю будет отказано.
- first_valid_gid = 26
- #last_valid_gid = 0
- # Максимальная длина для имени ключевого слова письма.
- # Может пригодится при создании новых ключевых слов.
- #mail_max_keyword_length = 50
- # Список директорий, разделенный двоеточиями, в которые можно
- # будет chroot,иться процессу (например, если указать здесь /var/mail,
- # то возможен будет chroot в поддиректории). Этот параметр не влияет
- # на login_chroot, mail_chroot or auth chroot. Если параметр не задан,
- # то "/./" в домашних директориях будет игнорироваться.
- # Осторожно: Никогда не указывайте здесь директории, к которым
- # имеют доступ локальные пользователи. Этим правилом можно
- # пренибреч, только если у пользователей нет доступа к шелу.
- # <doc/wiki/Chrooting.txt>
- #valid_chroot_dirs =
- # Основная директория для chroot,а процесса. Этот параметр может быть
- # изменен для определенных пользователей, указав в пути к
- # домашней директории /./ (например, /home/./user chroot в /home).
- # Следует знать, что в основном chroot процесса не требуется.
- # Dovecot не позволит пользователям получить доступ к файлам
- # за пределами домашней директории в любом случае.
- # <doc/wiki/Chrooting.txt>
- #mail_chroot =
- # Путь к UNIX сокету сервера аутентификации.
- # Сокет используется imap (for shared users) и lda.
- auth_socket_path = /var/run/dovecot/auth-userdb
- # Директория, в которой находятся плагины.
- mail_plugin_dir = /usr/local/lib/dovecot
- # Список плагинов, разделенный пробелами, которые должны
- # быть загружены. Плагины специфичные для IMAP, LDA и т.п.
- # включаются в других (собственных) файлах конфигурации.
- mail_plugins = $mail_plugins quota
- ##
- ## Оптимизация работы с почтовыми ящиками
- ##
- # Минимальное количество писем в почтовом ящике перед обновлением
- # файла кеша. Благодаря этому параметру Dovecot будет делать меньше
- # операций записи на диск, но количество операций чтения возрастет.
- #mail_cache_min_mail_count = 0
- # Если получена команда IDLE, то почтовый ящик будет периодически
- # проверяться на предмет получения новых писем или других изменений.
- # Этот параметр определяет минимальное количество секунд перед
- # проверкой. Dovecot может использовать dnotify, inotify и kqueue, чтобы
- # узнать об изменениях.
- #mailbox_idle_check_interval = 30 secs
- # Сохранять текст письма с CR+LF в конце вместо LF. Это может уменьшить
- # нанагрузку на проц при работе с некоторыми письмами, особенно если
- # используется системный вызов sendfile(). Но увеличиться нагрузка
- # на подсистему ввода/вывода, поэтому прироста в производительности
- # может и не быть, а может быть она вообще снизится. Так же следует знать,
- # что использование такой возможности может вызвать проблемы с другим
- # програмным обеспечением, работающем в ящиках.
- #mail_save_crlf = no
- ##
- ## Параметры Maildir
- ##
- # По умолчанию для команды LIST выводится все записи в почтовом ящике,
- # начинающиеся с точки. Включение этой опции заставляет Dovecot возвразать
- # только список директорий. Для каждого объекта в почтовом ящике
- # вызывается системный вызов stat(), что нагружает подсистему ввода/вывода.
- #maildir_stat_dirs = no
- # При копировании письма создавать жесткую ссылку, если это возможно.
- # В таком случае производительность возрастет без каких-либо последствий.
- maildir_copy_with_hardlinks = yes
- # Если Dovecot единственной MUA, который имеет доступ к почтовым ящикам,
- # то возможно сканировать директорию cur/, только когда изменен mtime
- # или когда не удается найти письма.
- #maildir_very_dirty_syncs = no
- ##
- ## Параметры mbox
- ##
- # Системный вызов, используемый для блокировок при просмотре mbox.
- # Доступно четыре вызова:
- # dotlock: создавать файл <mailbox>.lock. Это старый способ, но безопасный
- # для NFS. Если вы используете директорию /var/mail, то пользователи
- # должны иметь права на запись в нее.
- # dotlock_try: тоже самое, что и dotlock, но если блокировка не удастся,
- # из-за прав доступа или недостаточного количества места на диске, то
- # то просто проигнорировать это.
- # fcntl: использовать, если возможно. Работает с NFS, если работает
- # демон lockd.
- # flock: данный вызов есть не во всех системах. Не работает с NFS.
- # lockf: данный вызов есть не во всех системах. Не работает с NFS.
- # Вы можете использовать несколько методов, если только из-за этого
- # не возникнет проблем с другим софтом (MTA/MUA), то есть другой софт
- # должен поддерживать данные методы. Некоторые ОС не позволяют
- # использовать разные блокировки одновременно.
- #mbox_read_locks = fcntl
- #mbox_write_locks = dotlock fcntl
- # Максимальное кол-во секунд выжидаемое для заблокированного файла
- # перед отменой.
- #mbox_lock_timeout = 5 mins
- # Пересоздать блокировку на файл, если почтовый ящик не был изменен
- # в течении этого времени (указывать в секундах).
- #mbox_dotlock_change_timeout = 2 mins
- # Когда содержимое mbox изменяется, необходимо полностью перечитать
- # его. Если mbox очень большой, то это может занять много времени. Так
- # как изменение чаще всего происходит из-за прихода нового письма, то
- # было бы гораздо прочитать только новые письма. Если этот параметр
- # включен, то Dovecot делает это, но при необходимости перечитывает mbox.
- # Параметр следует отключить, если другие MUA могут изменить флаги
- # сообщний, о чем Dovecot соответственно не будет знать. Так же следует
- # знать, что сброс кэшей выполняется с командами SELECT, EXAMINE,
- # EXPUNGE и CHECK.
- #mbox_dirty_syncs = yes
- # Аналогично mbox_dirty_syncs, но не будет осуществляться сброс кэшей,
- # даже если выполняются команды SELECT, EXAMINE, EXPUNGE и CHECK.
- # Если этот параметр включен, то параметр mbox_dirty_syncs игнорируется.
- #mbox_very_dirty_syncs = no
- # Задерживать запись заголовков mbox, до тех пор пока происходит сброс
- # кэшей (команды EXPUNGE и CHECK, после чего файл закрывается).
- # Такое поведение может оказаться полезным при использовании протокола
- # POP3, когда пользователи пытаются удалить все письма. С другой стороны,
- # плохо, что другие MUA не видят изменений в ящике.
- #mbox_lazy_writes = yes
- # Не писать индекс, пока ящик mbox не наберет заданный здесь размер в
- # килобайтах. Если индекс уже был создан, то он будет использоваться, но
- # не будет обновляться, если размер ящика меньше заданного.
- #mbox_min_index_size = 0
- ##
- ## Параметры mdbox
- ##
- # # Максимальный размер файла dbox, перед ротацией.
- #mdbox_rotate_size = 2M
- # Максимальное время жизни dbox файла перед ротацией. Обычно задается
- # в днях. Дни считаются с полуночи, поэтому 1d = сегодня, 2d = вчера и т.д.
- # Если 0, то такая проверка отключена.
- #mdbox_rotate_interval = 1d
- # При создании новых файлов mdbox резервировать место для них
- # размером в mdbox_rotate_size. Этот функционал работает только на Linux
- # и на определенных файловых системах (ext4, xfs).
- #mdbox_preallocate_space = no
- ##
- ## Параметры для прикрепляемых файлов (вложений).
- ##
- # sdbox и mdbox могут сохранять вложения во внешние файлы.
- # На данный момент другие форматы почтовых ящиков не поддерживают
- # данный функционал.
- # sdbox and mdbox support saving mail attachments to external files, which
- # also allows single instance storage for them. Other backends don't support
- # this for now.
- # Предупреждение: Этот функционал до конца не отлажен, поэтому
- # используйте его на свой страх и риск.
- # Директории, в которой будут сохраняться вложения. Если не задано, то
- # данный функционал отключен.
- #mail_attachment_dir =
- # Вложения которые меньше указанного здесь размера не будут сохранены
- # во внешние файлы. Возможно написать плагин, который будет определять
- # по каким-то другим критериям сохранять файл во внешнее хранилище
- # или нет.
- #mail_attachment_min_size = 128k
- # Backend фаловой системы, который используется для сохранения вложений:
- # posix : No SiS done by Dovecot (but this might help FS's own deduplication)
- # sis posix : SiS with immediate byte-by-byte comparison during saving
- # sis-queue posix : SiS with delayed comparison and deduplication
- #mail_attachment_fs = sis posix
- # Хэш функция, используемая для генерации имен файлов вложений.
- # Вы можете указать здесь обычный текст и следующие переменные: %{md4},
- # %{md5}, %{sha1}, %{sha256}, %{sha512}, %{size}. Результат переменных
- # может быть ограничен, например так %{sha256:80} - вернет первые 80 бит.
- mail_attachment_hash = %{sha1}
- default_process_limit = 100
- default_client_limit = 1000
- # Лимит VSZ (virtual memory size) для процессов по умолчанию. Такая
- # плюшка предназначена, чтобы отловить и прибить процессы, которые
- # пытаются слопать всю память.
- #default_vsz_limit = 256M
- # Пользователь, под которым работает процесс авторизации пользователй.
- # Этот пользователь должен иметь самые минимальные права в системе.
- default_login_user = dovenull
- # Пользователь, под которым работают непривелигерованные процессы.
- # Это должен быть другой пользователь (не такой же, как в default_login_user),
- # чтобы пользователь default_login_user не мог оказать никакого влияния
- # на другие процессы Dovecot,а.
- default_internal_user = dovecot
- service imap-login {
- inet_listener imap {
- port = 143
- }
- inet_listener imaps {
- port = 993
- ssl = yes
- }
- # Количество активных подключений, по превышению которого будет создан
- # новый процесс. Обычно используются значения 0 (без ограничений) или 1.
- # Подход со значением 1 является более безопасным, но медленным
- # по сравнению со значением 0. <doc/wiki/LoginProcess.txt>
- service_count = 1
- # Количество процессов, ждущих подключений.
- process_min_avail = 3
- # Если вы установили service_count=0, то памяти процессу нужно выделить больше.
- vsz_limit = 64M
- }
- service pop3-login {
- inet_listener pop3 {
- port = 110
- }
- inet_listener pop3s {
- port = 995
- ssl = yes
- }
- }
- service lmtp {
- unix_listener lmtp {
- #mode = 0666
- }
- # Параметры сетевого сокета
- #inet_listener lmtp {
- # Avoid making LMTP visible for the entire internet
- #address =
- #port =
- #}
- }
- service imap {
- # Большая часть памяти уходит для mmap()ing файлов. Для очень больших вложений
- # памяти нужно выделить больше.
- vsz_limit = 256M
- # Максимальное количество процессов обрабатывающих IMAP подключения.
- process_limit = 128
- }
- service pop3 {
- # Максимальное количество процессов обрабатывающих POP3 подключения.
- process_limit = 256
- }
- service auth {
- # auth_socket_path указыват расположение Unix сокета. Он может
- # использоваться dovecot-lda, doveadm, процессами imap process и т.д.
- # По умолчанию только пользователь root имеет к нему доступ, причем
- # только права на чтение, но вам может потребоваться изменить права
- # доступа к Unix сокету. Пользоваели, которые имеют доступ к сокету
- # могут получить список всех пользователей и получить любые данные,
- # возвращаемые запросами к базе данных пользователй.
- unix_listener auth-userdb {
- mode = 0600
- user = mailnull
- group = wheel
- }
- unix_listener auth-client {
- mode = 0600
- user = smmsp
- group = wheel
- }
- # Postfix smtp-auth
- #unix_listener /var/spool/postfix/private/auth {
- # mode = 0666
- #}
- # Пользователь, под которым работает процесс авторизации.
- user = $default_internal_user
- }
- service auth-worker {
- # По умолчанию данный процесс (auth worker) запускается под рутом,
- # чтобы иметь возможность доступа к файлу /etc/shadow. Если вам это
- # не нужно, то можно запускать его под пользователем $default_internal_user.
- user = $default_internal_user
- }
- service dict {
- # Если используется dict proxy, то процессы, обрабатывающие почту,
- # должны иметь доступ к сокету dict proxy.
- # Например: mode=0660, group=vmail and global mail_access_groups=vmail
- unix_listener dict {
- #mode = 0600
- #user =
- #group =
- }
- }
- ##
- ## Параметры SSL
- ##
- # Использовать SSL/TLS: yes, no, required. <doc/wiki/SSL.txt>
- ssl = yes
- # Сертификат и приватный ключ X.509 SSL/TLS. Файлы открываются перед тем,
- # как будут сброшены привелегии root, поэтому сохраняйте файл не доступным
- # для всех, кроме пользователя root. В дистрибутив включен скрипт (doc/mkcert.sh),
- # который облегчит вам создание собственных подписанных сертификатов.
- ssl_cert = </usr/local/etc/exim/exim.crt
- ssl_key = </usr/local/etc/exim/exim.pem
- # Если файл-ключ защищен паролем, то укажите этот пароль здесь.
- # Так же пароль можно задать с помощью ключа -p. Since this file is often
- # world-readable, you may want to place this setting instead to a different
- # root owned 0600 file by using ssl_key_password = <path>.
- #ssl_key_password =
- # Файл, содержащий правильные центры сертификации. Задайте, только
- # если вы собираетесь использовать ssl_verify_client_cert=yes.
- # The file should contain the CA certificate(s) followed by the matching
- # CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
- #ssl_ca =
- # Проверять сертификат пользователя. Если вы хотите сделать это
- # обязательным, то установите параметр ssl_require_client_cert=yes
- # в секции авторизации.
- ssl_verify_client_cert = no
- # Какое поле сертификата использовать в качестве имени пользователя.
- # Обычно используют commonName и x500UniqueIdentifier.Вам также
- # потребуется задать задать параметр ssl_username_from_cert=yes.
- #ssl_cert_username_field = commonName
- # Как часто регенирировать файл параметров SSL. При генерации
- # интенсивно используется CPU. Значение задается в часах,
- # если указать 0, то данная фишка будет отключена.
- #ssl_parameters_regenerate = 168
- # Доступные шифры SSL
- ssl_cipher_list = ALL:!LOW:!SSLv2:!ADH:!RC4:!MD5:!EXP:!aNULL:!eNULL:!NULL
- ##
- ## Параметры LDA (также используются для LMTP)
- ##
- # Адрес, используемый для отправки отклоненных писем.
- # По умолчанию postmaster@example.com.
- postmaster_address = mailer-daemon@info-x.org
- # Имя хоста, используемое в некоторых частях письма
- # (например, в Message-Id). По умолчанию берется из системы.
- hostname = mx.info-x.org
- # Если пользователь превысил квоту, то вернуть ошибку о временном
- # сбое вместо отправки отлупа.
- quota_full_tempfail = no
- # Бинарник sendmail,а для отправки отлупов.
- #sendmail_path = /usr/sbin/sendmail
- # Если параметр задан, то отправлять письма через, указанный здесь
- # SMTP host[:port], вместо использования утилиты sendmail.
- submission_host = localhost:25
- # Указывать следующую тему в отлупах. Вы можете использовать
- # некоторые значения как в параметре rejection_reason ниже.
- #rejection_subject = Rejected: %s
- # Сообщение об отлупах. Вы можете использовать следующие значения:
- # %n = CRLF, %r = reason, %s = original subject, %t = recipient
- #rejection_reason = Your message to <%t> was automatically rejected:%n%r
- # Символ, помещаемый между локальной частью (local-part) и подробным
- # email адресом (detail in email address).
- #recipient_delimiter = +
- # Header where the original recipient address (SMTP's RCPT TO: address) is taken
- # from if not available elsewhere. With dovecot-lda -a parameter overrides this.
- # A commonly used header for this is X-Original-To.
- #lda_original_recipient_header =
- # Если происходит доставка в несуществующую папку (в которой хранится
- # почтовый ящик), то создать ее?
- lda_mailbox_autocreate = yes
- # Should automatically created mailboxes be also automatically subscribed?
- lda_mailbox_autosubscribe = no
- protocol lda {
- # Список подключаемых плагинов, разделенный запятыми
- # (по умолчанию значение глобальной переменной mail_plugins).
- mail_plugins = $mail_plugins sieve
- log_path =
- info_log_path =
- syslog_facility = mail
- }
- ##
- ## Параметры IMAP
- ##
- protocol imap {
- # Максимальная длина команды IMAP в байтах. Некоторые клиенты посылают
- # слишком длинные команды при работе с очень большими ящиками, поэтому
- # вам может понадобиться отказывать таким клиентам с сообщением
- # "Too long argument" или "IMAP command line too large" в таком случае.
- #imap_max_line_length = 64k
- # Максимальное кол-во подключений для пользователя с одного IP адреса.
- # Учтите, что в имени пользователя учитывается регистр букв.
- mail_max_userip_connections = 5
- # Список подключаемых плагинов, разделенный запятыми
- # (по умолчанию значение глобальной переменной mail_plugins).
- mail_plugins = $mail_plugins imap_quota
- # Формат логов:
- # %i - общее кол-во байт полученных от клиента
- # %o - общее кол-во байт отправленных клиенту
- imap_logout_format = bytes=%i/%o
- # Заменить ответ IMAP CAPABILITY на указанный здесь.
- # If the value begins with '+', add the given capabilities on top
- # of the defaults (e.g. +XFOO XBAR).
- #imap_capability =
- # Сколько секунд ждать ответа от клиента "OK Still here",
- # когда тот ничего не делает.
- imap_idle_notify_interval = 2 mins
- # Идентификационные данные, отправляемые клиенту. Используйте *,
- # чтобы Dovecot использовал значение по умолчанию. Следующие
- # данные имеют значение по умолчанию: name, version, os, os-version,
- # support-url, support-email.
- #imap_id_send =
- # Какие идентификационные данные писать в лог. * - значит все.
- #imap_id_log =
- # Хаки для некоторых быжных клиентов:
- # delay-newmail:
- # Отправлять (EXISTS/RECENT) уведомления о новых сообщениях,
- # только когда получены команды NOOP и CHECK. В противном
- # случае некоторые клиенты игнорируют эту инфу, например
- # OSX Mail (<v2.1). Outlook Express еще корявее, без этого хака
- # может показывать пользователю сообщение об ошибке
- # "Message no longer in server". Учтите, что OE6 может так же
- # криво работать, если синхронизация установлена в "Headers Only".
- #
- # tb-extra-mailbox-sep:
- # В mbox ящик может содержать или письма, или папки, что-то одно
- # из них. Thunderbird разделяет их, вынуждая сервер принимать
- # суффикс '/' в именах ящиков при работе в списках рассылки.
- #
- # tb-lsub-flags:
- # Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g. mbox).
- # This makes Thunderbird realize they aren't selectable and show them
- # greyed out, instead of only later giving "not selectable" popup error.
- # Элементы списка разделяются пробелами.
- #imap_client_workarounds =
- }
- ##
- ## Параметры ManageSieve
- ##
- # Раскомментируйте, чтобы включить managesieve.
- protocols = $protocols sieve
- service managesieve-login {
- inet_listener sieve {
- port = 4190
- }
- #inet_listener sieve_deprecated {
- # port = 2000
- #}
- # Количество активных подключений, по превышению которого будет создан
- # новый процесс. Обычно используются значения 0 (без ограничений) или 1.
- # Подход со значением 1 является более безопасным, но медленным
- # по сравнению со значением 0. <doc/wiki/LoginProcess.txt>
- service_count = 1
- # Количество процессов, ждущих подключений.
- #process_min_avail = 0
- # Если вы установили service_count=0, то памяти процессу нужно выделить больше.
- vsz_limit = 64M
- }
- service managesieve {
- # Максимальное количество процессов обрабатывающих подключения.
- #process_count = 0
- }
- protocol sieve {
- # Максимальная длина команды ManageSieve в байтах. ManageSieve обычно не
- # использует длинных команд, поэтому этот параметр изменять не требуется.
- #managesieve_max_line_length = 65536
- # Максимальное кол-во подключений для пользователя с одного IP адреса.
- # Учтите, что в имени пользователя учитывается регистр букв.
- mail_max_userip_connections = 5
- # Список подключаемых плагинов, разделенный запятыми
- # Не пытайтесь загрузить сюда плагины предназначенные для IMAP.
- #mail_plugins =
- # Формат логов:
- # %i - общее кол-во байт полученных от клиента
- # %o - общее кол-во байт отправленных клиенту
- managesieve_logout_format = bytes=%i/%o
- # Некоторые клиенты ManageSieve разработаны конкретно под CMU's timesieved,
- # поэтому могут некоректно работать с реализацией Sieve от Dovecot. В качестве
- # обходного пути здесь вы можете указать версию ManageSieve, показываемую
- # клиентам.
- # Например: 'Cyrus timsieved v2.2.13'
- #managesieve_implementation_string = Dovecot Pigeonhole
- managesieve_implementation_string = Cyrus timsieved v2.2.13
- # Explicitly specify the SIEVE and NOTIFY capability reported by the server before
- # login. If left unassigned these will be reported dynamically according to what
- # the Sieve interpreter supports by default (after login this may differ depending
- # on the user).
- #managesieve_sieve_capability =
- #managesieve_notify_capability =
- # Максимальное количество попыток компиляций скрипта Sieve, который
- # отправляет клиент.
- managesieve_max_compile_errors = 5
- # Редактируйте файл 90-sieve.conf для настройки квот и ограничений времени выполнения
- # скриптов Sieve.
- }
- ##
- ## Параметры POP3
- ##
- protocol pop3 {
- # Не выставлять флаги (надавний или прочитанно) на письма
- # в сессии POP3. Это может поребоваться для уменьшения
- # нагрузки на подсистему ввода/вывода диска. При работе
- # с хранилищем maildir не будут перемещаться файлы из
- # директории new/ в директорию cur/, а с mbox не будет записываться
- # Status-header.
- #pop3_no_flag_updates = no
- # Поддержка команды LAST, которая была описана в старых спеках POP3,
- # но удалена в новых. Некоторые клиенты все еще ее используеют.
- # При включенной опциивыполнение команды RSET приведет к сбросу
- # флага \Seen (прочитано) во всех сообщениях.
- #pop3_enable_last = no
- # Если у письма есть заголовок X-UIDL, то использовать его UIDL.
- #pop3_reuse_xuidl = no
- # Блочить ящик на время POP3 сессии.
- pop3_lock_session = yes
- # POP3 requires message sizes to be listed as if they had CR+LF linefeeds.
- # Many POP3 servers violate this by returning the sizes with LF linefeeds,
- # because it's faster to get. When this setting is enabled, Dovecot still
- # tries to do the right thing first, but if that requires opening the
- # message, it fallbacks to the easier (but incorrect) size.
- #pop3_fast_size_lookups = no
- # Использовать POP3 UIDL (уникальный идентификатор письма).
- # Вы можете использовать следующие значения, вместе с модификаторами
- # описанными в <doc/wiki/Variables.txt> (например, %Uf будет значить,
- # что имя файла будет в верхнем регистре).
- #
- # %v - Mailbox's IMAP UIDVALIDITY
- # %u - Mail's IMAP UID
- # %m - хэш MD5 заголовков ящика в hex (только для mbox)
- # %f - имя файла (только maildir)
- # %g - Mail's GUID
- #
- # Если вы хотите ,чтобы UIDL был совместим с другими POP3 серверами,
- # то используйте следующее:
- # UW's ipop3d : %08Xv%08Xu
- # Courier : %f or %v-%u (both might be used simultaneosly)
- # Cyrus (<= 2.1.3) : %u
- # Cyrus (>= 2.1.4) : %v.%u
- # Dovecot v0.99.x : %v.%u
- # tpop3d : %Mf
- #
- # Учтите, что Outlook 2003 криво работает с форматом %v.%u, который
- # является значением по умолчанию для Dovecot, так что если вы
- # настраиваете новый сервер, то хорошим решением будет изменить
- # данный параметр. Формат %08Xu%08Xv является самым удачным.
- #
- #pop3_uidl_format = %08Xu%08Xv
- # Сохранять UIDLs посланные POP3 клиентам, таким образом
- # pop3_uidl_format не будет изменять их. На данный момент работает
- # только с Maildir.
- #pop3_save_uidl = no
- # Формат логов POP3:
- # %i - общее кол-во байт полученное от клиента
- # %o - общее кол-во байт отправленное клиенту
- # %t - количество команд TOP
- # %p - кол-во байт, отправленное клиенту при вып. команды TOP
- # %r - число команд RETR
- # %b - кол-во байт, отправленное клиенту при вып. команды RETR
- # %d - кол-во удаленных сообщений
- # %m - кол-во сообщений (перед удалением)
- # %s - размер ящика в байтах (перед удалением)
- # %u - старый/новый хэш UIDL. Может помочь в поиске сообшений (или проблем),
- # если UIDLs неожиданно изменился
- #pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
- # Максимальное кол-во подключений для пользователя с одного IP адреса.
- # Учтите, что в имени пользователя учитывается регистр букв.
- mail_max_userip_connections = 5
- # Список подключаемых плагинов, разделенный запятыми
- # (по умолчанию значение глобальной переменной mail_plugins).
- #mail_plugins = $mail_plugins
- # Хаки для некоторых быжных клиентов:
- # outlook-no-nuls:
- # Outlook и Outlook Express отупляются, если письмо содержит
- # символы NUL. С этим хаком такие символы будут заменены на
- # символ 0x80.
- # oe-ns-eoh:
- # Outlook Express и Netscape Mail тупят, если пропущено окончание
- # строки в заголовках. С этим хаком это дело поправимое.
- #
- # Элементы списка должны быть разделены пробелами.
- #pop3_client_workarounds =
- }
- ##
- ## Настройка квот.
- ##
- # Не забывайте подключить плагин quota в mail_plugins для включения функционала квот.
- # <doc/wiki/Quota.txt>
- ##
- ## Настройка ограничений
- ##
- # Квота задается с помощью параметра "quota_rule", указывается непосредственно
- # в нем или в userdb. Возможно задавать размеры для папок в ящике:
- # quota_rule = *:storage=1GB
- # quota_rule2 = Trash:storage=+100M
- # Пользователь имеет квоту в 1Гб, но для корзины выделено доп. 100Мб.
- plugin {
- quota_rule = *:storage=10M
- quota_rule2 = Trash:storage=+50M
- }
- ##
- ## Предупреждения о достижении пределов квот
- ##
- # Возможно запускать исполняемый файл, когда пользователь исчерпал лимит.
- # Квоты могут иметь разные ограничения. Файл будет запущен, только
- # для первой сработавшей квоты, поэтому помещайте команды в порядке
- # убывания ограничений. Команды запускаются через сервис скриптов
- # через Unix сокет (quota-warning ниже).
- # Учтите, что символ '%' должен экранироваться - %%, иначе он будет заменен
- # на пустое значение.
- plugin {
- #quota_warning = storage=95%% quota-warning 95 %u
- #quota_warning2 = storage=80%% quota-warning 80 %u
- }
- # Пример сервиса quota-warning. Права доступа к Unix сокеты должны быть
- # выставлены правильно, чтобы процесс (обрабатывающие почту) мог
- # открыть его. В примере ниже подразумевается, что процесс (обрабатывающий
- # почту) работает с правами пользователя vmail. Если вы укажите mode=0666, то
- # все системные пользователи смогут генерировать предупреждения о
- # достижении лимитов квот кому угодно.
- #service quota-warning {
- # executable = script /usr/local/bin/quota-warning.sh
- # user = dovecot
- # unix_listener quota-warning {
- # user = vmail
- # }
- #}
- ##
- ## Храние данных о квотах
- ##
- # Поддерживается несколько методов хранения квот:
- # dirsize: поиск всех файлов в ящике и подсчет общего размера.
- # Очень медленно работает с Maildir. Может нагрузить CPU и
- # подсистему I/O диска.
- # dict: хранить данные в словаре (например, SQL)
- # maildir: Maildir++ quota
- # fs: использовать системные квоты
- plugin {
- #quota = dirsize:User quota
- quota = maildir:User quota
- #quota = dict:User quota::proxy::quota
- #quota = fs:User quota
- }
- # Возможны и такие конфигурации: каждый пользователь имеею квоту
- # в 100Мб и есть одна разделяемая квота в 1Гб для домена.
- plugin {
- #quota = dict:user::proxy::quota
- #quota2 = dict:domain:%d:proxy::quota_domain
- #quota_rule = *:storage=102400
- #quota2_rule = *:storage=1048576
- }
- ##
- ## Параметры для интерпритатора Sieve
- ##
- # Не забывайте включить плагин Sieve в файлах 15-lda.conf и 20-lmtp.conf,
- # используя переменную mail_plugins.
- plugin {
- # Путь к Sieve скрипту пользователя.
- sieve = ~/.dovecot.sieve
- # Путь к глобальному Sieve скрипту, который будет запущен только, если
- # у пользователя нет собственного Sieve скрипта. Данный скрипт необходимо
- # будет самостоятельно скомпилировать утилитой sievec.
- #sieve_global_path = /var/lib/dovecot/sieve/default.sieve
- # Directory for :personal include scripts for the include extension.
- sieve_dir = ~/sieve
- # Directory for :global include scripts for the include extension.
- #sieve_global_dir =
- # Какие расширения языка Sieve доступны пользователям. По умолчанию
- # доступны все поддерживаемые расширения, за исключением запрещенных
- # или расширений, находящихся на этапе разработки. Некоторым системным
- # администраторам может понадобиться запретить некоторые расширения или
- # разрешить расширения, которые по умолчанию не включены. Используя
- # '+' и '-' вы можете изменить поддержку тех или иных расширений
- # относительно стандартных настроек. Например, `sieve_extensions = +imapflags'
- # дополнительно к расширениям по уолчанию, включит запрещенное
- # расширение imapflags.
- #sieve_extensions = +notify +imapflags
- # The separator that is expected between the :user and :detail
- # address parts introduced by the subaddress extension. This may
- # also be a sequence of characters (e.g. '--'). The current
- # implementation looks for the separator from the left of the
- # localpart and uses the first one encountered. The :user part is
- # left of the separator and the :detail part is right. This setting
- # is also used by Dovecot's LMTP service.
- #recipient_delimiter = +
- # Максимальный размер скрипта Sieve. Компилятор будет отшибать любой
- # скрипт, размер которого больше указанного здесь предела.
- sieve_max_script_size = 1M
- # Максимальное количество команд в одном скрипте.
- sieve_max_actions = 32
- # Максимальное количество переадресаций в одном скрипте.
- sieve_max_redirects = 8
- # Максимальное количество скриптов Sieve, которое может иметь пользователь.
- # (Currently only relevant for ManageSieve)
- sieve_quota_max_scripts = 30
- # Максимальный сумарный размер скриптов для одного пользователя.
- # (Currently only relevant for ManageSieve)
- #sieve_quota_max_storage = 0
- }
- # Аутентификация для пользователей SQL. Файл подключается в 10-auth.conf.
- #
- # <doc/wiki/AuthDatabase.SQL.txt>
- passdb {
- driver = sql
- # Путь до конфигурационного файла SQL, смотрите example-config/dovecot-sql.conf.ext
- args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
- }
- # БД пользователей "prefetch" используется для сохранения информации
- # полученной из passdb, то есть отпадает необходимость в повторном
- # просмотре userdb. Такое возможно сделать при работе с хранилищем
- # SQL и LDAP. <doc/wiki/UserDatabase.Prefetch.txt>
- #userdb {
- # driver = prefetch
- #}
- userdb {
- driver = sql
- args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
- }
- # Если у вас нет каких-либо специфичных параметров пользователей, то вы
- # можете использовать вместо user_query (userdb sql) userdb static. Например:
- # <doc/wiki/UserDatabase.Static.txt>
- #userdb {
- #driver = static
- #args = uid=vmail gid=vmail home=/var/vmail/%u
- #}
3.3 Запуск и проверка конфигурации
Для автоматического запуска Dovecot во время старта системы необходимо добавить следующую строчку в /etc/rc.conf:- # echo 'dovecot_enable="YES"' >> /etc/rc.conf
- # service dovecot start
- # sockstat -4 -l | grep
- root dovecot 42594 15 tcp4 *:4190 *:*
- root dovecot 42594 24 tcp4 *:110 *:*
- root dovecot 42594 25 tcp4 *:995 *:*
- root dovecot 42594 32 tcp4 *:143 *:*
- root dovecot 42594 33 tcp4 *:993 *:*
- # telnet server.name 110
- +OK POP3/IMAP server ready.
- USER user@domain
- +OK
- PASS userpass
- +OK Logged in.
- STAT
- +OK 228 66786803
- QUIT
- +OK Logging out.