Настройка почтовой системы. Агент доставки почты Dovecot

  1. Основные термины
  2. Введение
  3. Структура таблиц в базе данных
  4. Агент доставки почты Dovecot
  5. Агент пересылки почты Exim
  6. Веб интерфейс Roundcube
  7. Заключение
  8. Список литературы
  9. Комментарии

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. Я буду устанавливать вторую версию.

  1. # cd /usr/ports/mail/dovecot2
  2. # make install clean
К параметрам сборки (которые были выбраны по умолчанию) я добавил поддержку СУБД PostgreSQL. Для поддержки языка Sieve необходимо установить соответствующий плагин для Dovecot, поэтому ставим еще один порт.
  1. # cd /usr/ports/mail/dovecot2-pigeonhole
  2. # 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.conf:
  1. ## Конфигурационный файл Dovecot
  2.  
  3. # Инструкцию по быстрому старту смотреть здесь:
  4. # http://wiki2.dovecot.org/QuickConfiguration
  5.  
  6. # Команда "dovecot -n" выводит список измененных параметров. Используйте 
  7. # эту возможность, вместо копирования содержимого файла, при обращении
  8. # в списках рассылки.
  9.  
  10. # Все, что расположено после символа "#" считается комментарием. Пробелы
  11. # и символы табуляции игнорируются. Значение параметра, в котором
  12. # есть пробелы поместите в кавычки, чтобы он интерпритировался должным 
  13. # образом, например key = "# char and trailing whitespace  "
  14.  
  15. # Значения по умолчанию представленные в данном файле не обязательно
  16. # раскомментировать. Не обязательны секции (например, namespaces {})
  17. # или настройки плагинов, здесь они приведены для примера. Пути так же
  18. # заданы в качестве примера, значения по умолчанию в данном случае
  19. # были заданы при компиляции ( --prefix=/usr/local
  20. # --sysconfdir=/usr/local/etc --localstatedir=/var )
  21.  
  22. # С какими протоколами работать?
  23. #protocols = imap pop3 lmtp
  24. protocols = imap pop3
  25.  
  26. # Список, разделенный запятыми, IP адресов или имен хостов, с которых
  27. # будут обрабатываться подключения. "*" - принимать подключения со всех
  28. # интерфейсов по протоколу IPv4. "[::]" - принимать подключения со всех
  29. # интерфейсов по протоколу IPv6. Укажите "*, [::]", чтобы принимать
  30. # подключения по любому протоколу.
  31. # Если вы хотите изменить стандартный порт для сервиса, то правте
  32. # файл conf.d/master.conf.
  33. listen = *
  34.  
  35. # Директория, в которой работает Dovecot.
  36. base_dir = /var/run/dovecot/
  37.  
  38. # Приветственное сообщение.
  39. login_greeting = POP3/IMAP server ready.
  40.  
  41. # Список сетей, разделенный пробелами, которым разрешен доступ.
  42. # Клиентам с этих адресов разрешено переписывать IP адресы
  43. # и порты (для проверок авторизации и аутентификации).
  44. # Параметр disable_plaintext_auth игнорируется для этих сетей.
  45. # Например, здесь можно указать адреса ваших IMAP-прокси серверов.
  46. #login_trusted_networks =
  47.  
  48. # Список сокетов проверки прав доступа входа, разделенный пробелами (например, tcpwrap)
  49. #login_access_sockets = 
  50.  
  51. # Использовать более информативный заголовок процесса (отображается
  52. # в команде ps). На данный момент отображаются только имя пользователя
  53. # и IP адрес. Полезно, если вы хотите видеть кого на самом деле обслуживает
  54. # IMAP процесс.
  55. verbose_proctitle = no
  56.  
  57. # Прибивать все подключения, когда завершается главный процесс Dovecot.
  58. # При "no" подключенные клиенты продолжат работу, даже если главный
  59. # процесс будет завершен (может быть полезно при обновлении, например когда
  60. # была выпущена новая версия с исправленными косяками в безопасности).
  61. # Однако, когда главный процесс будет завершен, то процессы обрабатывающие
  62. # запросы от клиентов не смогут писать в лог файлы.
  63. shutdown_clients = yes
  64.  
  65. # Если не ноль, то посылать выполнять команды через соединение к серверу doveadm
  66. # (то есть выполнять их на сервере doveadm), вместо выполнения этих команд
  67. # самим процессом.
  68. #doveadm_worker_count = 0
  69. # Unix сокет или хост, на котором работает сервер doveadm.
  70. #doveadm_socket_path = doveadm-server
  71.  
  72. # Список переменных окружения, разделенный пробелами, которые задаются
  73. # перед запуском Dovecot и передаются всем дочерним процессам. Также вы можете
  74. # задавать здесь переменные окружения, используя пару ключ=значение.
  75. #import_environment = TZ
  76.  
  77. ##
  78. ## Настройки dictionary server
  79. ##
  80.  
  81. # Словарь может использоваться некоторыми плагинами, для сохранения
  82. # значений типа ключ=значение. К таким плагинам можно отнести: quota,
  83. # expire и acl. Словарь может использоваться через сервер или напрямую.
  84. # Следующий блок dict ассоциирует имена словарей и URI, когда используется
  85. # сервер. URI имеет следующий формат "proxy::<name>".
  86.  
  87. dict {
  88.   #quota = mysql:/usr/local/etc/dovecot/dovecot-dict-sql.conf.ext
  89.   #expire = sqlite:/usr/local/etc/dovecot/dovecot-dict-sql.conf.ext
  90. }
  91.  
  92. # Остальные параметры задаются в файлах в папке conf.d, которые
  93. # подключаются ниже. Имена конфигурационных файлов заданы так,
  94. # чтобы конф. файлы подключались в определенном порядке.
  95. !include conf.d/*.conf
  96.  
  97. # Попробовать включить файл. Если файл не будет найдет, то это просто
  98. # будет проигнорировано.
  99. !include_try local.conf
Файл dovecot-sql.conf.ext:
  1. # Этот файл открывается с правами пользователя root, поэтому
  2. # он должен принадлежать пользователю root и иметь права
  3. # доступа 0600.
  4. #
  5. # http://wiki2.dovecot.org/AuthDatabase/SQL
  6. #
  7. # Для модуля sql passdb вам нужна база данных с таблицей, содержащая
  8. # как минимум поля "имя пользователя" и "пароль". Если вы хотите
  9. # использовать синтакс user@domain, то вам понадобится отдельное
  10. # поле для имени домена.
  11. #
  12. # Если все ваши пользователи имеют одинаковые uid/gid и одинаковую
  13. # общую часть вначале пути (наример, /var/mail, /usr/home), то вы можете
  14. # использовать модуль static userdb для генерации остального пути к
  15. # домашней директории из имени пользователя и домена. В этом случае
  16. # вам не понадобятся поля home, uid, gid в таблице в базе данных.
  17. #
  18. # Если у вас есть необходимость использовать модуль sql userdb, то
  19. # вам придется создать поля home, uid, и gid. Вот пример таблицы:
  20. #
  21. # CREATE TABLE users (
  22. #     username VARCHAR(128) NOT NULL,
  23. #     domain VARCHAR(128) NOT NULL,
  24. #     password VARCHAR(64) NOT NULL,
  25. #     home VARCHAR(255) NOT NULL,
  26. #     uid INTEGER NOT NULL,
  27. #     gid INTEGER NOT NULL,
  28. #     active CHAR(1) DEFAULT 'Y' NOT NULL
  29. # );
  30.  
  31. # Используемая база данных: mysql, pgsql, sqlite
  32. driver = pgsql
  33.  
  34. # Подключение к базе данных. Специфичные настройки для драйвера.
  35. #
  36. # HA / round-robin load-balancing is supported by giving multiple host
  37. # settings, like: host=sql1.host.org host=sql2.host.org
  38. #
  39. # pgsql:
  40. #   Смотрите в документацию PostgreSQL по функции PQconnectdb
  41. #   допустимые параметры. Используйте maxconns=n (по умолчанию 5)
  42. #   для ограничения количества подключений Dovecot к базе данных. 
  43. #
  44. # mysql:
  45. #   Имена основных параметров аналогичны PostgreSQL:
  46. #     host, port, user, password, dbname
  47. #
  48. #   Также доступны следующие параметры:
  49. #     client_flags        - смотрите документацию по MySQL
  50. #     ssl_ca, ssl_ca_path - задайте одну или две опции, чтобы включить SSL
  51. #     ssl_cert, ssl_key   - для отправки сертификата клиента на сервер
  52. #     ssl_cipher          - минимальная безопасность шифра (по умолчанию: HIGH)
  53. #     option_file         - читать параметры из файла (указанного здесь) для клиента
  54. #                            MySQL, вместо файла по умолчанию - my.cnf.
  55. #     option_group        - читать параметры из определенной группы (по умолчанию: client)
  56. # 
  57. #   Вы можете указать в параметре host путь к Unix сокету: host=/var/run/mysql.sock
  58. #   Учтите, что на данный момент нельзя использовать пробелы в параметрах.
  59. #   
  60. # sqlite:
  61. #   Путь к файлу базы данных.
  62. #
  63. # Примеры:
  64. #   connect = host=192.168.1.1 dbname=users
  65. #   connect = host=sql.example.com dbname=virtual user=virtual password=blarg
  66. #   connect = /etc/dovecot/authdb.sqlite
  67. #
  68. connect = host=192.168.7.253 dbname=vmail user=vmail password=1234
  69.  
  70. # Формат хранения паролей по умолчанию.
  71. #
  72. # Список поддерживаемых схем смотрите здесь:
  73. # http://wiki2.dovecot.org/Authentication/PasswordSchemes
  74. #
  75. default_pass_scheme = MD5
  76.  
  77. # Запрос passdb, который возвращает пароль. Он может вернуть следующие поля:
  78. #   password - пароль пользователя. Это поле всегда должно присутствовать.
  79. #   user - возвращается в формате user@domain.
  80. #   username и domain - другой путь представления поля "user".
  81. #
  82. # Поле "user" должно быть регистронезависимым, чтобы избежать
  83. # создания двух директорий (почтовых ящиков), если вдруг пользователь
  84. # предоставит учетные данные по разному: "name" и "nAme". Если имя пользователя
  85. # и имя домена хрантся в разных колонках, то вы можете вернуть колонки
  86. # "username" и "domain" вместо одной "user".
  87. #
  88. # Также запрос может вернуть другие поля, которые имеют свое назначение,
  89. # смотрите список таких полей здесь:
  90. # http://wiki2.dovecot.org/PasswordDatabase/ExtraFields
  91. #
  92. # Подстановки, используемые чаще всего: (смотрите полный список подстановок
  93. # здесь - http://wiki2.dovecot.org/Variables):
  94. #   %u = entire user@domain
  95. #   %n = user part of user@domain
  96. #   %d = domain part of user@domain
  97. #
  98. # Учтите, что подстановки могут использоваться только в SQL запросе. Если
  99. # запрос возвращает любую из этих подстановок, то ничего не изменяется.
  100. # Иначе было бы невозможно задавать имя пользователя, в котором
  101. # присутствовал бы символ '%'.
  102. #
  103. # Пример:
  104. #   password_query = SELECT userid AS user, pw AS password \
  105. #     FROM users WHERE userid = '%u' AND active = 'Y'
  106. #
  107. password_query = \
  108.   SELECT "users_tb"."username" AS "username", \
  109.          "domains_tb"."domainname" AS "domain", \
  110.          "users_tb"."passwd" AS "password" \
  111.   FROM "users_tb" \
  112.     INNER JOIN "domains_tb" ON ("users_tb"."domain_id" = "domains_tb"."id") \
  113.     WHERE "users_tb"."username" = '%n' AND \
  114.       "domains_tb"."domainname" = '%d' AND \
  115.       "users_tb"."active" = 'true' AND \
  116.       "domains_tb"."active" = 'true'
  117.  
  118.  
  119. # Запрос, который возвращает информацию о пользователе. Он может вернуть:
  120. #   uid - System UID (overrides mail_uid setting)
  121. #   gid - System GID (overrides mail_gid setting)
  122. #   home - Home directory
  123. #   mail - Mail location (overrides mail_location setting)
  124. #
  125. # Ни одно из этих полей не является обязательным. Если вы используете
  126. # везде одинаковые UID и GID, и различными у вас остаются только
  127. # home или mail, то вам лучше использовать userdb static.
  128. # Полный список возможных полей смотрите здесь:
  129. # http://wiki2.dovecot.org/UserDatabase/ExtraFields
  130. #
  131. # Примеры:
  132. #   user_query = SELECT home, uid, gid FROM users WHERE userid = '%u'
  133. #   user_query = SELECT dir AS home, user AS uid, group AS gid FROM users where userid = '%u'
  134. #   user_query = SELECT home, 501 AS uid, 501 AS gid FROM users WHERE userid = '%u'
  135. #
  136. user_query = \
  137.   SELECT "users_tb"."uid" AS "uid", "users_tb"."gid" AS "gid", \
  138.          ("users_tb"."homedir" || '/%d/%n') AS "home", \
  139.          ('*:storage=' || "users_tb"."quota" || 'k') AS "quota_rule" \
  140.   FROM "users_tb" \
  141.     INNER JOIN "domains_tb" ON ("users_tb"."domain_id" = "domains_tb"."id") \
  142.     WHERE "users_tb"."username" = '%n' AND \
  143.       "domains_tb"."domainname" = '%d' AND \
  144.       "users_tb"."active" = 'true' AND \
  145.       "domains_tb"."active" = 'true'
  146.  
  147. # Если вы не хотите использовать два запроса (passdb + userdb), то вы можете
  148. # использовать userdb prefetch вместо userdb sql. В этом случае вы должны
  149. # сделать так, чтобы запрос в password_query возвращал поля userdb
  150. # с префиксом "userdb_". Например:
  151. #password_query = \
  152. #  SELECT userid AS user, password, \
  153. #    home AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \
  154. #  FROM users WHERE userid = '%u'
  155.  
  156. # Запрос для получения списка всех пользователей.
  157. #iterate_query = SELECT username AS user FROM users
Файл conf.d/10-auth.conf:
  1. ##
  2. ## Процесс авторизации
  3. ##
  4.  
  5. # Отключить метод аутентификации LOGIN и другие методы с открытым текстом,
  6. # если клиент подключен не через защищенное соединение SSL/TLS. Только
  7. # учтите, что для локальных подключений это ограничение не применяется.
  8. disable_plaintext_auth = no
  9.  
  10. # Размер кэша в килобайтах. 0 значит, что кэш выключен. Учтите, что bsdauth,
  11. # PAM и vpopmail требуют, чтобы параметр cache_key был задан, чтобы
  12. # использовать кэширование.
  13. auth_cache_size = 0
  14.  
  15. # Время жизни кэша в секундах. После истечения времени кэшированные
  16. # данные не используются, но если БД отвалилась, то остается использовать
  17. # только их. Dovecot также пытается автоматически узнать об изменении
  18. # пароля у пользователя: если предыдущая аутентификация была успешной,
  19. # но текущая потерпела неудачу, то кэш не будет использован. Сейчас это
  20. # работает только для аутентификации с открытым текстом.
  21. #auth_cache_ttl = 1 hour
  22.  
  23. # Время жизни для неудачных попыток (пользователь не найден,
  24. # неверный пароль). 0 значит выключить кэширование.
  25. #auth_cache_negative_ttl = 1 hour
  26.  
  27. # Space separated list of realms for SASL authentication mechanisms that need
  28. # them. You can leave it empty if you don't want to support multiple realms.
  29. # Many clients simply use the first one listed here, so keep the default realm
  30. # first.
  31. #auth_realms =
  32.  
  33. # realm/domain по умолчанию, если тот явно не задан. Это используется
  34. # и для SASL realms, и для добавления @domain к имени пользователя
  35. # при авторизации открытым текстом.
  36. #auth_default_realm = 
  37.  
  38. # Список разрешенных символов в имене пользователя. Если полученное
  39. # имя пользователя имеет символы не из списка, то пользователь
  40. # автоматом получает отлуп. Это простая проверка позволяет слать
  41. # лесом ботов, ну и чтобы не получить проблем с экранированием данных
  42. # при запросах к SQL/LDAP. Если вы хотите разрешить любые символы, то
  43. # оставьте это поле пустым.
  44. auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
  45.  
  46. # Преобразование имени пользователя перед поиском в БД. Значение
  47. # содержит серию замен (исходный -> нужный). Например, "#@/@"
  48. # значит, что символы '#' и '/' будут преобразованы в '@'.
  49. #auth_username_translation =
  50.  
  51. # Формат имени пользователя перед просмотром в БД. Вы можете
  52. # использовать здесь стандартные значения, например, %Lu
  53. # преобразует символы в нижний регистр, %n - отбросить домен, если
  54. # он задан, или "%n-AT-%d" - заменить символ '@' на '-AT-'. Это
  55. # преобразование выполняется после auth_username_translation.
  56. auth_username_format = %Lu
  57.  
  58. # If you want to allow master users to log in by specifying the master
  59. # username within the normal username string (ie. not using SASL mechanism's
  60. # support for it), you can specify the separator character here. The format
  61. # is then <username><separator><master username>. UW-IMAP uses "*" as the
  62. # separator, so that could be a good choice.
  63. #auth_master_user_separator =
  64.  
  65. # Имя анонимного пользователя, используемое с механизмом
  66. # ANONYMOUS SASL.
  67. #auth_anonymous_username = anonymous
  68.  
  69. # Максимальное количество работающих процессов аутентификации.
  70. # Эти процессы создаются и уничтожаются автоматически.
  71. auth_worker_max_count = 30
  72.  
  73. # Имя хоста используемое в GSSAPI. По умолчанию берется из системы.
  74. # Значение "$ALL" разрешает использовать любые записи keytab.
  75. # Host name to use in GSSAPI principal names. The default is to use the
  76. # name returned by gethostname(). Use "$ALL" to allow all keytab entries.
  77. #auth_gssapi_hostname =
  78.  
  79. # Kerberos keytab для работы с GSSAPI. Если не указан, то
  80. # используется системное значение (обычно /etc/krb5.keytab).
  81. #auth_krb5_keytab = 
  82.  
  83. # Авторизация NTLM и GSS-SPNEGO через демона winbind и ntlm_auth
  84. # из пакета Samba. <doc/wiki/Authentication/Mechanisms/Winbind.txt>
  85. auth_use_winbind = no
  86.  
  87. # Путь до тулзы ntlm_auth из пакета Samba.
  88. #auth_winbind_helper_path = /usr/bin/ntlm_auth
  89.  
  90. # Количество секунд выжидаемое перед повторной попыткой аутентификации.
  91. auth_failure_delay = 2 secs
  92.  
  93. # Отказать в аутентификации, если у клиента неверный SSL сертификат.
  94. auth_ssl_require_client_cert = no
  95.  
  96. # Взять имя пользователя из SSL сертификата (который предоставил клиент).
  97. # Будет использована функция X509_NAME_get_text_by_NID(), которая
  98. # возвращает значение поля CommonName. 
  99. auth_ssl_username_from_cert = no
  100.  
  101. # Список, разделенный пробелами, разрешенных методов аутентификации:
  102. #   plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
  103. #   gss-spnego
  104. # Учитывайте значение параметра disable_plaintext_auth.
  105. auth_mechanisms = plain login
  106.  
  107. ##
  108. ## Параметры базы данных пользователей
  109. ##
  110.  
  111. #
  112. # БД паролей, используемая для проверки пользователей (и ничего более).
  113. # Вы можете настроить несколько БД паролей (passdbs) и
  114. # пользователей (userdbs). Это полезно, если вы хотите сделать доступ
  115. # системным пользователям и виртуальным одновременно, чтобы
  116. # не пришлось дублировать системных в базе виртуальных.
  117. # <doc/wiki/PasswordDatabase.txt>
  118. #
  119. # БД пользователей определяет, где хранится почта и какому
  120. # пользователю/группе она принадлежит. При конфигурации
  121. # single-UID используйте "static".
  122. #
  123. # <doc/wiki/UserDatabase.txt>
  124.  
  125. #!include auth-deny.conf.ext
  126. #!include auth-master.conf.ext
  127.  
  128. #!include auth-system.conf.ext
  129. !include auth-sql.conf.ext
  130. #!include auth-ldap.conf.ext
  131. #!include auth-passwdfile.conf.ext
  132. #!include auth-checkpassword.conf.ext
  133. #!include auth-vpopmail.conf.ext
  134. #!include auth-static.conf.ext
Файл conf.d/10-logging.conf:
  1. ##
  2. ## Расположение лог файлов.
  3. ##
  4.  
  5. # Файл, в который записываются сообщения об ошибках.
  6. # Укажите "syslog", чтобы слать все в syslog.
  7. # Укажите /dev/stderr, чтобы слать все в  stderr.
  8. log_path = /var/log/dovecot/mainlog
  9.  
  10. # Лог файл, в который выводятся информационные сообщения.
  11. # Если не задано, то используется параметр log_path.
  12. #info_log_path = 
  13.  
  14. # Лог файл, в который выводятся отладочные сообщения.
  15. # Если не задано, то используется параметр log_path.
  16. #debug_log_path = 
  17.  
  18. # Раздел syslog для логов.
  19. #syslog_facility = mail
  20.  
  21. ##
  22. ## Ведение логов и отладка.
  23. ##
  24.  
  25. # Писать в лог о неудачных попытках входа и их причину.
  26. auth_verbose = yes
  27.  
  28. # В случае, если пароль неверен, выводить в лог пароль.
  29. # Возможные значения: no, plain и sha1. Значение sha1 может быть полезно
  30. # для выявления перебора паролей
  31. auth_verbose_passwords = no
  32.  
  33. # Выводить более информативные сообщения в лог. Так же пишутся
  34. # запросы SQL.
  35. #auth_debug = no
  36.  
  37. # В случае несовпадения паролей писать в лог пароли и используемую
  38. # схему авторизации. Полезно для отладки. Перед включением
  39. # включите auth_debug.
  40. #auth_debug_passwords = no
  41.  
  42. # Включить вывод отладочных сообщений. Это может вам определить,
  43. # почему Dovecot не может найти ваши письма.
  44. #mail_debug = no
  45.  
  46. # Выводить инфу про SSL в сообщениях об ошибках.
  47. #verbose_ssl = no
  48.  
  49. # Плагин mail_log предоставляет более гибкое управление ведением логов.
  50. plugin {
  51.   # Какие события писать в лог. Еще можно указать: flag_change append
  52.   #mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
  53.   # Возможные поля: uid, box, msgid, from, subject, size, vsize, flags
  54.   # size and vsize are available only for expunge and copy events.
  55.   #mail_log_fields = uid box msgid size
  56. }
  57.  
  58. ##
  59. ## Формат лог сообщений.
  60. ##
  61.  
  62. # Префикс для сообщений, формат смотреть в мане по strftime(3).
  63. #log_timestamp = "%b %d %H:%M:%S "
  64.  
  65. # Список, разделенный пробелами того, что вы хотите писать.
  66. # Элементы, которые имеют не пустое значение будут объединяться
  67. # вместе в выходной строке с помощью запятой.
  68. #login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c
  69.  
  70. # Формат лога подключений. %$ заменяется на login_log_format_elements,
  71. # %s заменяется на данные.
  72. #login_log_format = %$: %s
  73.  
  74. # Префикс для выводимых сообщений в лог файл. Смотрите
  75. # <doc/wiki/Variables.txt>, чтобы знать - какие значения здесь
  76. # возможны.
  77. #mail_log_prefix = "%s(%u): "
  78.  
  79. # Формат лог сообщений доставщика писем. Вы можете использовать следующие значения:
  80. #  %$ - статус доставки (e.g. "saved to INBOX")
  81. #  %m - Message-ID
  82. #  %s - тема
  83. #  %f - от кого
  84. #  %p - физический размер
  85. #  %w - виртуальный размер
  86. #deliver_log_format = msgid=%m: %$
Файл conf.d/10-mail.conf:
  1. ##
  2. ## Пути к ящикам и пространства имен
  3. ##
  4.  
  5. # Расположение почтовых ящиков. По умолчанию эта переменная не задана,
  6. # поэтому Dovecot пытается найти почтовые ящики автоматически.
  7. # Это не будет работать, если пользователь не имеет почтового ящика,
  8. # поэтому лучше задать этот параметр.
  9. #
  10. # Если вы используете mbox, то одного пути к файлам почтового ящика
  11. # (например, /var/mail/%u) не будет достаточно. Так же вы должны
  12. # предоставить Dovecot,у, где будут храниться другие почтовые ящики.
  13. # Это называется "root mail directory (корневая директория почты)" и она должна
  14. # быть задана первой в параметре mail_location.
  15. #
  16. #  Так же вы можете использовать следующие переменные:
  17. #
  18. #   %u - имя пользователя
  19. #   %n - имя польльзователя, только без домена
  20. #   %d - имя домена (пусто, если домен не указан)
  21. #   %h - домашняя директория
  22. #
  23. # Полный список смотрите здесь - <doc/wiki/Variables.txt>. Примеры:
  24. #
  25. #   mail_location = maildir:~/Maildir
  26. #   mail_location = mbox:~/mail:INBOX=/var/mail/%u
  27. #   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
  28. #
  29. # <doc/wiki/MailLocation.txt>
  30. #
  31. mail_location = maildir:~/Maildir 
  32.  
  33. # Если вы хотите задать несколько местоположений почтовых ящиков или
  34. # хотите изменить пространства имен, вы можете сделать это определяя
  35. # секции пространств имен.
  36. #
  37. # Вы можете создать приватные, разделяемые и общие пространства имен.
  38. # Приватные пространства имен используются для личных писем пользователй.
  39. # К разделяемым пространствам могут иметь доступ другие пользователи.
  40. # Общие пространства разделяется между почтовыми ящиками, которые
  41. # управляются админами. Если вы создаете разделяемые или общие 
  42. # пространства, то вам понадобится ACL плагин (для управляения правами
  43. # доступа), в противном случае пользователи будут иметь доступ ко всем
  44. # разделяемым почтовым ящикам, только если у них есть такая возможность
  45. # на уровне прав доступа файловой системы.
  46. #
  47. # Запомните: Если вы добавляете какие-либо пространства имен, то пространства
  48. # имен по умолчанию должны быть добавлены обязательно, то есть значение
  49. # mail_location ничего не значит, пока в пространстве имен не задан параметр
  50. # location. По умолчанию пространство имен не имеет префикса.
  51. #namespace {
  52.   # Тип пространства имен: private, shared или public
  53.   #type = private
  54.  
  55.   # Используйте здесь обратный слэш в роли разделителя. Вы должны
  56.   # использовать такой разделитель для всех пространств имен или
  57.   # могут возникнуть проблемы с некоторыми клиентами.
  58.   # Зависит от формата пользовательского ящика.
  59.   #separator = 
  60.  
  61.   # Для доступа к пространству имен требуется указать префикс. Он должен
  62.   # быть разным для каждого пространства имен. Например, "Public/".
  63.   #prefix = 
  64.  
  65.   # Физическое местоположение почтового ящика. Формат такой же как и
  66.   # у параметра mail_location. Если не задан, то значение берется
  67.   # из mail_location.
  68.   #location =
  69.  
  70.   # Может быть только один ящик для приема сообщений и этот параметр
  71.   # определяет у какого пространства имен будет этот ящик.
  72.   #inbox = no
  73.  
  74.   # If namespace is hidden, it's not advertised to clients via NAMESPACE
  75.   # extension. You'll most likely also want to set list=no. This is mostly
  76.   # useful when converting from another server with different namespaces which
  77.   # you want to deprecate but still keep working. For example you can create
  78.   # hidden namespaces with prefixes "~/mail/", "~%u/mail/" and "mail/".
  79.   #hidden = no
  80.  
  81.   # Show the mailboxes under this namespace with LIST command. This makes the
  82.   # namespace visible for clients that don't support NAMESPACE extension.
  83.   # "children" value lists child mailboxes, but hides the namespace prefix.
  84.   #list = yes
  85.  
  86.   # Namespace handles its own subscriptions. If set to "no", the parent
  87.   # namespace handles them (empty prefix should always have this as "yes")
  88.   #subscriptions = yes
  89. #}
  90.  
  91. # Пример конфигурации разделяемого пространства имен
  92. #namespace {
  93.   #type = shared
  94.   #separator = /
  95.  
  96.   # Почтовые ящики отображаются так - "shared/user@domain/"
  97.   # %%n, %%d и %%u преобразуются в конечного пользователя.
  98.   #prefix = shared/%%u/
  99.  
  100.   # Местонахождение писем для других почтовых ящиков. Учтите,
  101.   # что %variables и ~/ преобразуются в данные, связанные
  102.   # с подключенным пользователем. %%n, %%d, %%u и %%h
  103.   # преобразуются в данные, связанные с конечным пользователем.
  104.   #location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u
  105.  
  106.   # Использовать пространство имен по умолчанию для подписчиков.
  107.   #subscriptions = no
  108.  
  109.   # Показывать только пространство имен shared/, если выводится
  110.   # список разделяемых почтовых ящиков.
  111.   #list = children
  112. #}
  113.  
  114. # Системные пользователь и группа, которые используются для доступа
  115. # к почтовым ящикам. Если вы используюте различных пользователей
  116. # и различные группы, то используя колонки uid или gid из БД пользователей,
  117. # можно переопределить эти значения. Вы можете использовать здесь
  118. # имена или числовые идентификаторы. <doc/wiki/UserIds.txt>
  119. mail_uid = mailnull
  120. mail_gid = mailnull
  121.  
  122. # Группа, используемая для привилигированных операций. На данный момент
  123. # это используется только с INBOX, когда не удается его создание или
  124. # не получается блокировка (dotlock). Обычно используется группа "mail" для
  125. # доступа к /var/mail.
  126. mail_privileged_group = mail
  127.  
  128. # Предоставить доступ этим группам к процессу, обрабатывающему письма.
  129. # В основном это используется для разрешения доступа к разделяемым
  130. # пространствам имен. Учтите, что это может быть опасно, если пользователи
  131. # могут создавать символические ссылки (например, если здесь указана
  132. # группа "mail", то ln -s /var/mail ~/mail/var позволит удалять пользователю
  133. # чужие почтовые ящики, или ln -s /secret/shared/box ~/mail/mybox позволит
  134. # читать их).
  135. #mail_access_groups =
  136.  
  137. # Предоставить полный доступ к ФС клиентам. В этом случае не происходит
  138. # каких-либо проверок доступа, только проверки на уровне прав доступа ФС.
  139. # Это работает с Maildir и mbox, разрешая указывать префикс к имени
  140. # ящика, например, /path/ или ~/user/.
  141. mail_full_filesystem_access = no
  142.  
  143. ##
  144. ## Процесс, работающий с письмами
  145. ##
  146.  
  147. # Не использовать системный вызов mmap(). Такое поведение
  148. # может потребоваться, если индексы хранятся на разделяемой
  149. # ФС (например, NFS или кластерная ФС).
  150. mmap_disable = no
  151.  
  152. # Использовать флаг O_EXCL, когда создаются файлы блокировки (dotlock).
  153. # NFS поддерживает O_EXCL, начиная с версии 3, так что на сегодняший
  154. # день данный параметр не создаст каких-либо проблем.
  155. dotlock_use_excl = yes
  156.  
  157. # Когда использовать системные вызовыfsync() или fdatasync():
  158. #   optimized (по умолчанию): при необходимости, чтобы не потерять важные данные
  159. #   always: полезна, например для NFS, где запись откладывается (задерживается)
  160. #   never: вообще не использовать (лучшая производительность, но любой сбой
  161. #     может привести к потери данных)
  162. mail_fsync = optimized
  163.  
  164. # Для хранения писем используется NFS. Установите этот параметр в 'yes',
  165. # чтобы Dovecot при необходимости сбрасывал кэши NFS. Если вы
  166. # используете локальную ФС для хранения, то изменение этого параметра
  167. # не требуется.
  168. mail_nfs_storage = no
  169.  
  170. # Индексы тоже хранятся на NFS. Этот параметр требует
  171. # mmap_disable=yes и fsync_disable=no.
  172. #mail_nfs_index = no
  173.  
  174. # Метод блокировки для индексов. Возможные значения fcntl, flock и dotlock.
  175. # В методе блокировки dotlock используются некоторые трюки, 
  176. # что может увеличить нагрузку на подсистему ввода/вывода диска.
  177. # Пользователям NFS следует знать: что flock в данном случае не работает,
  178. # не забывайте изменять mmap_disable.
  179. lock_method = fcntl
  180.  
  181. # Директория, в которой LDA/LMTP временно сохраняет входящие сообщения
  182. # размером более 128 Кб.
  183. mail_temp_dir = /var/tmp
  184.  
  185. # Допустимые дапазоны UID для пользователей, по умолчанию от 500 и выше.
  186. # То есть никто не сможет зайти на сервер с идентификатором ниже/выше
  187. # указанного. Учтите, что руту доступ запрещен на уровне кода.
  188. first_valid_uid = 26
  189. #last_valid_uid = 0
  190.  
  191. # Тоже самое, только для групп. Если у пользователя основная группа
  192. # с идентификатором, выходящим из данного диапазона, то в доступе
  193. # такому пользователю будет отказано.
  194. first_valid_gid = 26
  195. #last_valid_gid = 0
  196.  
  197. # Максимальная длина для имени ключевого слова письма.
  198. # Может пригодится при создании новых ключевых слов.
  199. #mail_max_keyword_length = 50
  200.  
  201. # Список директорий, разделенный двоеточиями, в которые можно 
  202. # будет chroot,иться процессу (например, если указать здесь /var/mail,
  203. # то возможен будет chroot в поддиректории). Этот параметр не влияет
  204. # на login_chroot, mail_chroot or auth chroot. Если параметр не задан,
  205. # то "/./" в домашних директориях будет игнорироваться.
  206. # Осторожно: Никогда не указывайте здесь директории, к которым
  207. # имеют доступ локальные пользователи. Этим правилом можно
  208. # пренибреч, только если у пользователей нет доступа к шелу.
  209. # <doc/wiki/Chrooting.txt>
  210. #valid_chroot_dirs = 
  211.  
  212. # Основная директория для chroot,а процесса. Этот параметр может быть
  213. # изменен для определенных пользователей, указав в пути к 
  214. # домашней директории /./ (например, /home/./user chroot в /home).
  215. # Следует знать, что в основном chroot процесса не требуется.
  216. # Dovecot не позволит пользователям получить доступ к файлам
  217. # за пределами домашней директории в любом случае. 
  218. # <doc/wiki/Chrooting.txt>
  219. #mail_chroot = 
  220.  
  221. # Путь к UNIX сокету сервера аутентификации.
  222. # Сокет используется imap (for shared users) и lda.
  223. auth_socket_path = /var/run/dovecot/auth-userdb
  224.  
  225. # Директория, в которой находятся плагины.
  226. mail_plugin_dir = /usr/local/lib/dovecot
  227.  
  228. # Список плагинов, разделенный пробелами, которые должны
  229. # быть загружены. Плагины специфичные для IMAP, LDA  и т.п.
  230. # включаются в других (собственных) файлах конфигурации.
  231. mail_plugins = $mail_plugins quota
  232.  
  233. ##
  234. ## Оптимизация работы с почтовыми ящиками
  235. ##
  236.  
  237. # Минимальное количество писем в почтовом ящике перед обновлением
  238. # файла кеша. Благодаря этому параметру Dovecot будет делать меньше 
  239. # операций записи на диск, но количество операций чтения возрастет.
  240. #mail_cache_min_mail_count = 0
  241.  
  242. # Если получена команда IDLE, то почтовый ящик будет периодически
  243. # проверяться на предмет получения новых писем или других изменений.
  244. # Этот параметр определяет минимальное количество секунд перед
  245. # проверкой. Dovecot может использовать dnotify, inotify и kqueue, чтобы
  246. # узнать об изменениях.
  247. #mailbox_idle_check_interval = 30 secs
  248.  
  249. # Сохранять текст письма с CR+LF в конце вместо LF. Это может уменьшить
  250. # нанагрузку на проц при работе с некоторыми письмами, особенно если
  251. # используется системный вызов sendfile(). Но увеличиться нагрузка
  252. # на подсистему ввода/вывода, поэтому прироста в производительности
  253. # может и не быть, а может быть она вообще снизится. Так же следует знать,
  254. # что использование такой возможности может вызвать проблемы с другим
  255. # програмным обеспечением, работающем в ящиках.
  256. #mail_save_crlf = no
  257.  
  258. ##
  259. ## Параметры Maildir
  260. ##
  261.  
  262. # По умолчанию для команды LIST выводится все записи в почтовом ящике,
  263. # начинающиеся с точки. Включение этой опции заставляет Dovecot возвразать
  264. # только список директорий.  Для каждого объекта в почтовом ящике
  265. # вызывается системный вызов stat(), что нагружает подсистему ввода/вывода.
  266. #maildir_stat_dirs = no
  267.  
  268. # При копировании письма создавать жесткую ссылку, если это возможно.
  269. # В таком случае производительность возрастет без каких-либо последствий.
  270. maildir_copy_with_hardlinks = yes
  271.  
  272. # Если Dovecot единственной MUA, который имеет доступ к почтовым ящикам,
  273. # то возможно сканировать директорию cur/, только когда изменен mtime
  274. # или когда не удается найти письма.
  275. #maildir_very_dirty_syncs = no
  276.  
  277. ##
  278. ## Параметры mbox
  279. ##
  280.  
  281. # Системный вызов, используемый для блокировок при просмотре mbox.
  282. # Доступно четыре вызова:
  283. #    dotlock: создавать файл <mailbox>.lock. Это старый способ, но безопасный
  284. #      для NFS. Если вы используете директорию /var/mail, то пользователи
  285. #      должны иметь права на запись в нее.
  286. #    dotlock_try: тоже самое, что и dotlock, но если блокировка не удастся,
  287. #      из-за прав доступа или недостаточного количества места на диске, то
  288. #      то просто проигнорировать это.
  289. #    fcntl: использовать, если возможно. Работает с NFS, если работает 
  290. #      демон lockd.
  291. #    flock: данный вызов есть не во всех системах. Не работает с NFS.
  292. #    lockf: данный вызов есть не во всех системах. Не работает с NFS.
  293. # Вы можете использовать несколько методов, если только из-за этого
  294. # не возникнет проблем с другим софтом (MTA/MUA), то есть другой софт
  295. # должен поддерживать данные методы. Некоторые ОС не позволяют 
  296. # использовать разные блокировки одновременно.
  297. #mbox_read_locks = fcntl
  298. #mbox_write_locks = dotlock fcntl
  299.  
  300. # Максимальное кол-во секунд выжидаемое для заблокированного файла
  301. # перед отменой.
  302. #mbox_lock_timeout = 5 mins
  303.  
  304. # Пересоздать блокировку на файл, если почтовый ящик не был изменен
  305. # в течении этого времени (указывать в секундах).
  306. #mbox_dotlock_change_timeout = 2 mins
  307.  
  308. # Когда содержимое mbox изменяется, необходимо полностью перечитать 
  309. # его. Если mbox очень большой, то это может занять много времени. Так
  310. # как изменение чаще всего происходит из-за прихода нового письма, то
  311. # было бы гораздо прочитать только новые письма. Если этот параметр
  312. # включен, то Dovecot делает это, но при необходимости перечитывает mbox.
  313. # Параметр следует отключить, если другие MUA могут изменить флаги
  314. # сообщний, о чем Dovecot соответственно не будет знать. Так же следует
  315. # знать, что сброс кэшей выполняется с командами SELECT, EXAMINE,
  316. # EXPUNGE и CHECK.
  317. #mbox_dirty_syncs = yes
  318.  
  319. # Аналогично mbox_dirty_syncs, но не будет осуществляться сброс кэшей,
  320. # даже если выполняются команды SELECT, EXAMINE, EXPUNGE и CHECK.
  321. # Если этот параметр включен, то параметр mbox_dirty_syncs игнорируется.
  322. #mbox_very_dirty_syncs = no
  323.  
  324. # Задерживать запись заголовков mbox, до тех пор пока происходит сброс
  325. # кэшей (команды EXPUNGE и CHECK, после чего файл закрывается).
  326. # Такое поведение может оказаться полезным при использовании протокола
  327. # POP3, когда пользователи пытаются удалить все письма. С другой стороны,
  328. # плохо, что другие MUA не видят изменений в ящике.
  329. #mbox_lazy_writes = yes
  330.  
  331. # Не писать индекс, пока ящик mbox не наберет заданный здесь размер в
  332. # килобайтах. Если индекс уже был создан, то он будет использоваться, но
  333. # не будет обновляться, если размер ящика меньше заданного.
  334. #mbox_min_index_size = 0
  335.  
  336. ##
  337. ## Параметры mdbox
  338. ##
  339.  
  340. # # Максимальный размер файла dbox, перед ротацией.
  341. #mdbox_rotate_size = 2M
  342.  
  343. # Максимальное время жизни dbox файла перед ротацией. Обычно задается
  344. # в днях. Дни считаются с полуночи, поэтому 1d = сегодня, 2d = вчера и т.д.
  345. # Если 0, то такая проверка отключена.
  346. #mdbox_rotate_interval = 1d
  347.  
  348. # При создании новых файлов mdbox резервировать место для них
  349. # размером в mdbox_rotate_size. Этот функционал работает только на Linux
  350. # и на определенных файловых системах (ext4, xfs).
  351. #mdbox_preallocate_space = no
  352.  
  353. ##
  354. ## Параметры для прикрепляемых файлов (вложений).
  355. ##
  356.  
  357. # sdbox и mdbox могут сохранять вложения во внешние файлы.
  358. # На данный момент другие форматы почтовых ящиков не поддерживают
  359. # данный функционал.
  360. # sdbox and mdbox support saving mail attachments to external files, which
  361. # also allows single instance storage for them. Other backends don't support
  362. # this for now.
  363.  
  364. # Предупреждение: Этот функционал до конца не отлажен, поэтому
  365. # используйте его на свой страх и риск.
  366.  
  367. # Директории, в которой будут сохраняться вложения. Если не задано, то
  368. # данный функционал отключен.
  369. #mail_attachment_dir =
  370.  
  371. # Вложения которые меньше указанного здесь размера не будут сохранены
  372. # во внешние файлы. Возможно написать плагин, который будет определять
  373. # по каким-то другим критериям сохранять файл во внешнее хранилище
  374. # или нет.
  375. #mail_attachment_min_size = 128k
  376.  
  377. # Backend фаловой системы, который используется для сохранения вложений:
  378. #  posix : No SiS done by Dovecot (but this might help FS's own deduplication)
  379. #  sis posix : SiS with immediate byte-by-byte comparison during saving
  380. #  sis-queue posix : SiS with delayed comparison and deduplication
  381. #mail_attachment_fs = sis posix
  382.  
  383. # Хэш функция, используемая для генерации имен файлов вложений.
  384. # Вы можете указать здесь обычный текст и следующие переменные: %{md4},
  385. # %{md5}, %{sha1}, %{sha256}, %{sha512}, %{size}. Результат переменных
  386. # может быть ограничен, например так %{sha256:80} - вернет первые 80 бит.
  387. mail_attachment_hash = %{sha1}
Файл conf.d/10-master.conf:
  1. default_process_limit = 100
  2. default_client_limit = 1000
  3.  
  4. # Лимит VSZ (virtual memory size) для процессов по умолчанию. Такая
  5. # плюшка предназначена, чтобы отловить и прибить процессы, которые
  6. # пытаются слопать всю память.
  7. #default_vsz_limit = 256M
  8.  
  9. # Пользователь, под которым работает процесс авторизации пользователй.
  10. # Этот пользователь должен иметь самые минимальные права в системе.
  11. default_login_user = dovenull
  12.  
  13. # Пользователь, под которым работают непривелигерованные процессы.
  14. # Это должен быть другой пользователь (не такой же, как в default_login_user),
  15. # чтобы пользователь default_login_user не мог оказать никакого влияния
  16. # на другие процессы Dovecot,а.
  17. default_internal_user = dovecot
  18.  
  19. service imap-login {
  20.   inet_listener imap {
  21.     port = 143
  22.   }
  23.   inet_listener imaps {
  24.     port = 993
  25.     ssl = yes
  26.   }
  27.  
  28.   # Количество активных подключений, по превышению которого будет создан
  29.   # новый процесс. Обычно используются значения 0 (без ограничений) или 1. 
  30.   # Подход со значением 1 является более безопасным, но медленным
  31.   # по сравнению со значением 0. <doc/wiki/LoginProcess.txt>
  32.   service_count = 1
  33.  
  34.   # Количество процессов, ждущих подключений.
  35.   process_min_avail = 3
  36.  
  37.   # Если вы установили service_count=0, то памяти процессу нужно выделить больше.
  38.   vsz_limit = 64M
  39. }
  40.  
  41. service pop3-login {
  42.   inet_listener pop3 {
  43.     port = 110
  44.   }
  45.   inet_listener pop3s {
  46.     port = 995
  47.     ssl = yes
  48.   }
  49. }
  50.  
  51. service lmtp {
  52.   unix_listener lmtp {
  53.     #mode = 0666
  54.   }
  55.  
  56.   # Параметры сетевого сокета
  57.   #inet_listener lmtp {
  58.     # Avoid making LMTP visible for the entire internet
  59.     #address =
  60.     #port = 
  61.   #}
  62. }
  63.  
  64. service imap {
  65.   # Большая часть памяти уходит для mmap()ing файлов. Для очень больших вложений
  66.   # памяти нужно выделить больше.
  67.   vsz_limit = 256M
  68.  
  69.   # Максимальное количество процессов обрабатывающих IMAP подключения.
  70.   process_limit = 128
  71. }
  72.  
  73. service pop3 {
  74.   # Максимальное количество процессов обрабатывающих POP3 подключения.
  75.   process_limit = 256
  76. }
  77.  
  78. service auth {
  79.   # auth_socket_path указыват расположение Unix сокета. Он может
  80.   # использоваться dovecot-lda, doveadm, процессами imap process и т.д.
  81.   # По умолчанию только пользователь root имеет к нему доступ, причем
  82.   # только права на чтение, но вам может потребоваться изменить права
  83.   # доступа к Unix сокету. Пользоваели, которые имеют доступ к сокету
  84.   # могут получить список всех пользователей и получить любые данные,
  85.   # возвращаемые запросами к базе данных пользователй.
  86.   unix_listener auth-userdb {
  87.     mode = 0600
  88.     user = mailnull
  89.     group = wheel
  90.   }
  91.  
  92.   unix_listener auth-client {
  93.     mode = 0600
  94.     user = smmsp
  95.     group = wheel
  96.   }
  97.  
  98.   # Postfix smtp-auth
  99.   #unix_listener /var/spool/postfix/private/auth {
  100.   #  mode = 0666
  101.   #}
  102.  
  103.  
  104.   # Пользователь, под которым работает процесс авторизации.
  105.   user = $default_internal_user
  106. }
  107.  
  108. service auth-worker {
  109.   # По умолчанию данный процесс (auth worker) запускается под рутом,
  110.   # чтобы иметь возможность доступа к файлу /etc/shadow. Если вам это
  111.   # не нужно, то можно запускать его под пользователем $default_internal_user.
  112.   user = $default_internal_user
  113. }
  114.  
  115. service dict {
  116.   # Если используется dict proxy, то процессы, обрабатывающие почту,
  117.   # должны иметь доступ к сокету dict proxy.
  118.   # Например: mode=0660, group=vmail and global mail_access_groups=vmail
  119.   unix_listener dict {
  120.     #mode = 0600
  121.     #user = 
  122.     #group = 
  123.   }
  124. }
Файл conf.d/10-ssl.conf:
  1. ##
  2. ## Параметры SSL
  3. ##
  4.  
  5. # Использовать SSL/TLS: yes, no, required. <doc/wiki/SSL.txt>
  6. ssl = yes
  7.  
  8. # Сертификат и приватный ключ X.509 SSL/TLS. Файлы открываются перед тем,
  9. # как будут сброшены привелегии root, поэтому сохраняйте файл не доступным
  10. # для всех, кроме пользователя root. В дистрибутив включен скрипт (doc/mkcert.sh),
  11. # который облегчит вам создание собственных подписанных сертификатов.
  12. ssl_cert = </usr/local/etc/exim/exim.crt
  13. ssl_key = </usr/local/etc/exim/exim.pem
  14.  
  15. # Если файл-ключ защищен паролем, то укажите этот пароль здесь.
  16. # Так же пароль можно задать с помощью ключа -p. Since this file is often
  17. # world-readable, you may want to place this setting instead to a different
  18. # root owned 0600 file by using ssl_key_password = <path>.
  19. #ssl_key_password =
  20.  
  21. # Файл, содержащий правильные центры сертификации. Задайте, только
  22. # если вы собираетесь использовать ssl_verify_client_cert=yes.
  23. # The file should contain the CA certificate(s) followed by the matching
  24. # CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
  25. #ssl_ca = 
  26.  
  27. # Проверять сертификат пользователя. Если вы хотите сделать это
  28. # обязательным, то установите параметр ssl_require_client_cert=yes
  29. # в секции авторизации.
  30. ssl_verify_client_cert = no
  31.  
  32. # Какое поле сертификата использовать в качестве имени пользователя.
  33. # Обычно используют commonName и x500UniqueIdentifier.Вам также
  34. # потребуется задать задать параметр ssl_username_from_cert=yes.
  35. #ssl_cert_username_field = commonName
  36.  
  37. # Как часто регенирировать файл параметров SSL. При генерации
  38. # интенсивно используется CPU. Значение задается в часах,
  39. # если указать 0, то данная фишка будет отключена.
  40. #ssl_parameters_regenerate = 168
  41.  
  42. # Доступные шифры SSL
  43. ssl_cipher_list = ALL:!LOW:!SSLv2:!ADH:!RC4:!MD5:!EXP:!aNULL:!eNULL:!NULL
Файл conf.d/15-lda.conf:
  1. ##
  2. ## Параметры LDA (также используются для LMTP)
  3. ##
  4.  
  5. # Адрес, используемый для отправки отклоненных писем.
  6. # По умолчанию postmaster@example.com.
  7. postmaster_address = mailer-daemon@info-x.org
  8.  
  9. # Имя хоста, используемое в некоторых частях письма
  10. # (например, в Message-Id). По умолчанию берется из системы.
  11. hostname = mx.info-x.org
  12.  
  13. # Если пользователь превысил квоту, то вернуть ошибку о временном
  14. # сбое вместо отправки отлупа.
  15. quota_full_tempfail = no
  16.  
  17. # Бинарник sendmail,а для отправки отлупов.
  18. #sendmail_path = /usr/sbin/sendmail
  19.  
  20. # Если параметр задан, то отправлять письма через, указанный здесь
  21. # SMTP host[:port], вместо использования утилиты sendmail.
  22. submission_host = localhost:25
  23.  
  24. # Указывать следующую тему в отлупах. Вы можете использовать
  25. # некоторые значения как в параметре rejection_reason ниже.
  26. #rejection_subject = Rejected: %s
  27.  
  28. # Сообщение об отлупах. Вы можете использовать следующие значения:
  29. #  %n = CRLF, %r = reason, %s = original subject, %t = recipient
  30. #rejection_reason = Your message to <%t> was automatically rejected:%n%r
  31.  
  32. # Символ, помещаемый между локальной частью (local-part) и подробным
  33. # email адресом (detail in email address).
  34. #recipient_delimiter = +
  35.  
  36. # Header where the original recipient address (SMTP's RCPT TO: address) is taken
  37. # from if not available elsewhere. With dovecot-lda -a parameter overrides this. 
  38. # A commonly used header for this is X-Original-To.
  39. #lda_original_recipient_header =
  40.  
  41. # Если происходит доставка в несуществующую папку (в которой хранится
  42. # почтовый ящик), то создать ее?
  43. lda_mailbox_autocreate = yes
  44.  
  45. # Should automatically created mailboxes be also automatically subscribed?
  46. lda_mailbox_autosubscribe = no
  47.  
  48. protocol lda {
  49.   # Список подключаемых плагинов, разделенный запятыми
  50.   # (по умолчанию значение глобальной переменной mail_plugins).
  51.   mail_plugins = $mail_plugins sieve
  52.  
  53.   log_path =
  54.   info_log_path =
  55.   syslog_facility = mail
  56. }
Файл conf.d/20-imap.conf:
  1. ##
  2. ## Параметры IMAP
  3. ##
  4.  
  5. protocol imap {
  6.   # Максимальная длина команды IMAP в байтах. Некоторые клиенты посылают
  7.   # слишком длинные команды при работе с очень большими ящиками, поэтому
  8.   # вам может понадобиться отказывать таким клиентам с сообщением
  9.   # "Too long argument" или "IMAP command line too large" в таком случае.
  10.   #imap_max_line_length = 64k
  11.  
  12.   # Максимальное кол-во подключений для пользователя с одного IP адреса.
  13.   # Учтите, что в имени пользователя учитывается регистр букв.
  14.   mail_max_userip_connections = 5
  15.  
  16.   # Список подключаемых плагинов, разделенный запятыми
  17.   # (по умолчанию значение глобальной переменной mail_plugins).
  18.   mail_plugins = $mail_plugins imap_quota
  19.  
  20.   # Формат логов:
  21.   #  %i - общее кол-во байт полученных от клиента
  22.   #  %o - общее кол-во байт отправленных клиенту
  23.   imap_logout_format = bytes=%i/%o
  24.  
  25.   # Заменить ответ IMAP CAPABILITY на указанный здесь.
  26.   # If the value begins with '+', add the given capabilities on top
  27.   # of the defaults (e.g. +XFOO XBAR).
  28.   #imap_capability = 
  29.  
  30.   # Сколько секунд ждать ответа от клиента "OK Still here",
  31.   # когда тот ничего не делает.
  32.   imap_idle_notify_interval = 2 mins
  33.  
  34.   # Идентификационные данные, отправляемые клиенту. Используйте *,
  35.   # чтобы Dovecot использовал значение по умолчанию. Следующие
  36.   # данные имеют значение по умолчанию: name, version, os, os-version, 
  37.   # support-url, support-email.
  38.   #imap_id_send = 
  39.  
  40.   # Какие идентификационные данные писать в лог. * -  значит все.
  41.   #imap_id_log =
  42.  
  43.   # Хаки для некоторых быжных клиентов:
  44.   #   delay-newmail:
  45.   #     Отправлять (EXISTS/RECENT) уведомления о новых сообщениях,
  46.   #     только когда получены команды NOOP и CHECK. В противном
  47.   #     случае некоторые клиенты игнорируют эту инфу, например 
  48.   #     OSX Mail (<v2.1). Outlook Express еще корявее, без этого хака
  49.   #     может показывать пользователю сообщение об ошибке
  50.   #     "Message no longer in server". Учтите, что OE6 может так же
  51.   #     криво работать, если синхронизация установлена в "Headers Only".
  52.   #     
  53.   #   tb-extra-mailbox-sep:
  54.   #     В mbox ящик может содержать или письма, или папки, что-то одно
  55.   #     из них. Thunderbird разделяет их, вынуждая сервер принимать
  56.   #     суффикс '/' в именах ящиков при работе в списках рассылки.
  57.   #
  58.   #   tb-lsub-flags:
  59.   #     Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g. mbox).
  60.   #     This makes Thunderbird realize they aren't selectable and show them
  61.   #     greyed out, instead of only later giving "not selectable" popup error.
  62.   # Элементы списка разделяются пробелами.
  63.   #imap_client_workarounds = 
  64. }
Файл conf.d/20-managesieve.conf:
  1. ##
  2. ## Параметры ManageSieve
  3. ##
  4.  
  5. # Раскомментируйте, чтобы включить managesieve.
  6. protocols = $protocols sieve
  7.  
  8. service managesieve-login {
  9.   inet_listener sieve {
  10.     port = 4190
  11.   }
  12.  
  13.   #inet_listener sieve_deprecated {
  14.   #  port = 2000
  15.   #}
  16.  
  17.   # Количество активных подключений, по превышению которого будет создан
  18.   # новый процесс. Обычно используются значения 0 (без ограничений) или 1. 
  19.   # Подход со значением 1 является более безопасным, но медленным
  20.   # по сравнению со значением 0. <doc/wiki/LoginProcess.txt>
  21.   service_count = 1
  22.  
  23.   # Количество процессов, ждущих подключений.
  24.   #process_min_avail = 0
  25.  
  26.   # Если вы установили service_count=0, то памяти процессу нужно выделить больше.
  27.   vsz_limit = 64M
  28. }
  29.  
  30. service managesieve {
  31.   # Максимальное количество процессов обрабатывающих подключения.
  32.   #process_count = 0
  33. }
  34.  
  35. protocol sieve {
  36.   # Максимальная длина команды ManageSieve в байтах. ManageSieve обычно не
  37.   # использует длинных команд, поэтому этот параметр изменять не требуется.
  38.   #managesieve_max_line_length = 65536
  39.  
  40.   # Максимальное кол-во подключений для пользователя с одного IP адреса.
  41.   # Учтите, что в имени пользователя учитывается регистр букв.
  42.   mail_max_userip_connections = 5
  43.  
  44.   # Список подключаемых плагинов, разделенный запятыми
  45.   # Не пытайтесь загрузить сюда плагины предназначенные для IMAP.
  46.   #mail_plugins =
  47.  
  48.   # Формат логов:
  49.   #  %i - общее кол-во байт полученных от клиента
  50.   #  %o - общее кол-во байт отправленных клиенту
  51.   managesieve_logout_format = bytes=%i/%o
  52.  
  53.   # Некоторые клиенты ManageSieve разработаны конкретно под CMU's timesieved,
  54.   # поэтому могут некоректно работать с реализацией Sieve от Dovecot. В качестве
  55.   # обходного пути здесь вы можете указать версию ManageSieve, показываемую
  56.   # клиентам.
  57.   # Например: 'Cyrus timsieved v2.2.13' 
  58.   #managesieve_implementation_string = Dovecot Pigeonhole
  59.   managesieve_implementation_string = Cyrus timsieved v2.2.13
  60.  
  61.   # Explicitly specify the SIEVE and NOTIFY capability reported by the server before
  62.   # login. If left unassigned these will be reported dynamically according to what
  63.   # the Sieve interpreter supports by default (after login this may differ depending
  64.   # on the user).
  65.   #managesieve_sieve_capability = 
  66.   #managesieve_notify_capability = 
  67.  
  68.   # Максимальное количество попыток компиляций скрипта Sieve, который
  69.   # отправляет клиент.
  70.   managesieve_max_compile_errors = 5
  71.  
  72.   # Редактируйте файл 90-sieve.conf для настройки квот и ограничений времени выполнения
  73.   # скриптов Sieve.
  74. }
Файл conf.d/20-pop3.conf:
  1. ##
  2. ## Параметры POP3
  3. ##
  4.  
  5. protocol pop3 {
  6.   # Не выставлять флаги (надавний или прочитанно) на письма
  7.   # в сессии POP3. Это может поребоваться для уменьшения
  8.   # нагрузки на подсистему ввода/вывода диска. При работе
  9.   # с хранилищем maildir не будут перемещаться файлы из
  10.   # директории new/ в директорию cur/, а с mbox не будет записываться
  11.   # Status-header.
  12.   #pop3_no_flag_updates = no
  13.  
  14.   # Поддержка команды LAST, которая была описана в старых спеках POP3,
  15.   # но удалена в новых. Некоторые клиенты все еще ее используеют.
  16.   # При включенной опциивыполнение команды RSET приведет к сбросу
  17.   # флага \Seen (прочитано) во всех сообщениях.
  18.   #pop3_enable_last = no
  19.  
  20.   # Если у письма есть заголовок X-UIDL, то использовать его UIDL.
  21.   #pop3_reuse_xuidl = no
  22.  
  23.   # Блочить ящик на время POP3 сессии.
  24.   pop3_lock_session = yes
  25.  
  26.   # POP3 requires message sizes to be listed as if they had CR+LF linefeeds.
  27.   # Many POP3 servers violate this by returning the sizes with LF linefeeds,
  28.   # because it's faster to get. When this setting is enabled, Dovecot still
  29.   # tries to do the right thing first, but if that requires opening the
  30.   # message, it fallbacks to the easier (but incorrect) size.
  31.   #pop3_fast_size_lookups = no
  32.  
  33.   # Использовать POP3 UIDL (уникальный идентификатор письма).
  34.   # Вы можете использовать следующие значения, вместе с модификаторами
  35.   # описанными в <doc/wiki/Variables.txt> (например, %Uf будет значить,
  36.   # что имя файла будет в верхнем регистре).
  37.   #
  38.   #  %v - Mailbox's IMAP UIDVALIDITY
  39.   #  %u - Mail's IMAP UID
  40.   #  %m - хэш MD5 заголовков ящика в hex (только для mbox)
  41.   #  %f - имя файла (только maildir)
  42.   #  %g - Mail's GUID
  43.   #
  44.   # Если вы хотите ,чтобы UIDL был совместим с другими POP3 серверами,
  45.   # то используйте следующее:
  46.   #  UW's ipop3d         : %08Xv%08Xu
  47.   #  Courier             : %f or %v-%u (both might be used simultaneosly)
  48.   #  Cyrus (<= 2.1.3)    : %u
  49.   #  Cyrus (>= 2.1.4)    : %v.%u
  50.   #  Dovecot v0.99.x     : %v.%u
  51.   #  tpop3d              : %Mf
  52.   #
  53.   # Учтите, что Outlook 2003 криво работает с форматом %v.%u, который
  54.   # является значением по умолчанию  для Dovecot, так что если вы
  55.   # настраиваете новый сервер, то хорошим решением будет изменить
  56.   # данный параметр. Формат %08Xu%08Xv является самым удачным.
  57.   #
  58.   #pop3_uidl_format = %08Xu%08Xv
  59.  
  60.   # Сохранять UIDLs посланные POP3 клиентам, таким образом
  61.   # pop3_uidl_format не будет изменять их. На данный момент работает
  62.   # только с Maildir.
  63.   #pop3_save_uidl = no
  64.  
  65.   # Формат логов POP3:
  66.   #  %i - общее кол-во байт полученное от клиента
  67.   #  %o - общее кол-во байт отправленное клиенту
  68.   #  %t - количество команд TOP
  69.   #  %p - кол-во байт, отправленное клиенту при вып. команды TOP
  70.   #  %r - число команд RETR
  71.   #  %b - кол-во байт, отправленное клиенту при вып. команды RETR
  72.   #  %d - кол-во удаленных сообщений
  73.   #  %m - кол-во сообщений (перед удалением)
  74.   #  %s - размер ящика в байтах (перед удалением)
  75.   #  %u - старый/новый хэш UIDL. Может помочь в поиске сообшений (или проблем),
  76.   #    если UIDLs неожиданно изменился
  77.   #pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
  78.  
  79.   # Максимальное кол-во подключений для пользователя с одного IP адреса.
  80.   # Учтите, что в имени пользователя учитывается регистр букв.
  81.   mail_max_userip_connections = 5
  82.  
  83.   # Список подключаемых плагинов, разделенный запятыми
  84.   # (по умолчанию значение глобальной переменной mail_plugins).
  85.   #mail_plugins = $mail_plugins
  86.  
  87.   # Хаки для некоторых быжных клиентов:
  88.   #   outlook-no-nuls:
  89.   #     Outlook и Outlook Express отупляются, если письмо содержит
  90.   #     символы NUL. С этим хаком такие символы будут заменены на
  91.   #     символ 0x80.
  92.   #   oe-ns-eoh:
  93.   #     Outlook Express и Netscape Mail тупят, если пропущено окончание
  94.   #     строки в заголовках. С этим хаком это дело поправимое.
  95.   #
  96.   # Элементы списка должны быть разделены пробелами.
  97.   #pop3_client_workarounds = 
  98. }
Файл conf.d/90-quota.conf:
  1. ##
  2. ## Настройка квот.
  3. ##
  4.  
  5. # Не забывайте подключить плагин quota в mail_plugins для включения функционала квот.
  6. # <doc/wiki/Quota.txt>
  7.  
  8. ##
  9. ## Настройка ограничений
  10. ##
  11.  
  12. # Квота задается с помощью параметра "quota_rule", указывается непосредственно
  13. # в нем или в userdb. Возможно задавать размеры для папок в ящике:
  14. #   quota_rule = *:storage=1GB
  15. #   quota_rule2 = Trash:storage=+100M
  16. # Пользователь имеет квоту в 1Гб, но для корзины выделено доп. 100Мб.
  17.  
  18. plugin {
  19.   quota_rule = *:storage=10M
  20.   quota_rule2 = Trash:storage=+50M
  21. }
  22.  
  23. ##
  24. ## Предупреждения о достижении пределов квот
  25. ##
  26.  
  27. # Возможно запускать исполняемый файл, когда пользователь исчерпал лимит.
  28. # Квоты могут иметь разные ограничения. Файл будет запущен, только
  29. # для первой сработавшей квоты, поэтому помещайте команды в порядке
  30. # убывания ограничений. Команды запускаются через сервис скриптов
  31. # через Unix сокет (quota-warning ниже).
  32. # Учтите, что символ '%' должен экранироваться - %%, иначе он будет заменен
  33. # на пустое значение.
  34.  
  35. plugin {
  36.   #quota_warning = storage=95%% quota-warning 95 %u
  37.   #quota_warning2 = storage=80%% quota-warning 80 %u
  38. }
  39.  
  40. # Пример сервиса quota-warning. Права доступа к Unix сокеты должны быть
  41. # выставлены правильно, чтобы процесс (обрабатывающие почту) мог
  42. # открыть его. В примере ниже подразумевается, что процесс (обрабатывающий
  43. # почту) работает с правами пользователя vmail. Если вы укажите mode=0666, то
  44. # все системные пользователи смогут генерировать предупреждения о
  45. # достижении лимитов квот кому угодно.
  46. #service quota-warning {
  47. #  executable = script /usr/local/bin/quota-warning.sh
  48. #  user = dovecot
  49. #  unix_listener quota-warning {
  50. #    user = vmail
  51. #  }
  52. #}
  53.  
  54. ##
  55. ## Храние данных о квотах
  56. ##
  57.  
  58. # Поддерживается несколько методов хранения квот:
  59. #   dirsize: поиск всех файлов в ящике и подсчет общего размера.
  60. #            Очень медленно работает с Maildir. Может нагрузить CPU и
  61. #            подсистему I/O диска.
  62. #   dict: хранить данные в словаре (например, SQL)
  63. #   maildir: Maildir++ quota
  64. #   fs: использовать системные квоты
  65.  
  66. plugin {
  67.   #quota = dirsize:User quota
  68.   quota = maildir:User quota
  69.   #quota = dict:User quota::proxy::quota
  70.   #quota = fs:User quota
  71. }
  72.  
  73. # Возможны и такие конфигурации: каждый пользователь имеею квоту
  74. # в 100Мб и есть одна разделяемая квота в 1Гб для домена.
  75. plugin {
  76.   #quota = dict:user::proxy::quota
  77.   #quota2 = dict:domain:%d:proxy::quota_domain
  78.   #quota_rule = *:storage=102400
  79.   #quota2_rule = *:storage=1048576
  80. }
Файл conf.d/90-sieve.conf:
  1. ##
  2. ## Параметры для интерпритатора Sieve
  3. ## 
  4.  
  5. # Не забывайте включить плагин Sieve в файлах 15-lda.conf и 20-lmtp.conf,
  6. # используя переменную mail_plugins.
  7.  
  8. plugin {
  9.   # Путь к Sieve скрипту пользователя.
  10.   sieve = ~/.dovecot.sieve
  11.  
  12.   # Путь к глобальному Sieve скрипту, который будет запущен только, если
  13.   # у пользователя нет собственного Sieve скрипта. Данный скрипт необходимо
  14.   # будет самостоятельно скомпилировать утилитой sievec.
  15.   #sieve_global_path = /var/lib/dovecot/sieve/default.sieve
  16.  
  17.   # Directory for :personal include scripts for the include extension. 
  18.   sieve_dir = ~/sieve
  19.  
  20.   # Directory for :global include scripts for the include extension. 
  21.   #sieve_global_dir =
  22.  
  23.   # Какие расширения языка Sieve доступны пользователям. По умолчанию
  24.   # доступны все поддерживаемые расширения, за исключением запрещенных
  25.   # или расширений, находящихся на этапе разработки. Некоторым системным
  26.   # администраторам может понадобиться запретить некоторые расширения или
  27.   # разрешить расширения, которые по умолчанию не включены. Используя
  28.   # '+' и '-' вы можете изменить поддержку тех или иных расширений
  29.   # относительно стандартных настроек. Например, `sieve_extensions = +imapflags'
  30.   # дополнительно к расширениям по уолчанию, включит запрещенное
  31.   # расширение imapflags.
  32.   #sieve_extensions = +notify +imapflags
  33.  
  34.   # The separator that is expected between the :user and :detail 
  35.   # address parts introduced by the subaddress extension. This may 
  36.   # also be a sequence of characters (e.g. '--'). The current 
  37.   # implementation looks for the separator from the left of the 
  38.   # localpart and uses the first one encountered. The :user part is 
  39.   # left of the separator and the :detail part is right. This setting
  40.   # is also used by Dovecot's LMTP service.
  41.   #recipient_delimiter = +
  42.  
  43.   # Максимальный размер скрипта Sieve. Компилятор будет отшибать любой
  44.   # скрипт, размер которого больше указанного здесь предела.
  45.   sieve_max_script_size = 1M
  46.  
  47.   # Максимальное количество команд в одном скрипте.
  48.   sieve_max_actions = 32
  49.  
  50.   # Максимальное количество переадресаций в одном скрипте.
  51.   sieve_max_redirects = 8
  52.  
  53.   # Максимальное количество скриптов Sieve, которое может иметь пользователь.
  54.   # (Currently only relevant for ManageSieve)
  55.   sieve_quota_max_scripts = 30
  56.  
  57.   # Максимальный сумарный размер скриптов для одного пользователя.
  58.   # (Currently only relevant for ManageSieve) 
  59.   #sieve_quota_max_storage = 0
  60. }
Файл conf.d/auth-sql.conf.ext:
  1. # Аутентификация для пользователей SQL. Файл подключается в 10-auth.conf.
  2. #
  3. # <doc/wiki/AuthDatabase.SQL.txt>
  4.  
  5. passdb {
  6.   driver = sql
  7.  
  8.   # Путь до конфигурационного файла SQL, смотрите example-config/dovecot-sql.conf.ext
  9.   args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
  10. }
  11.  
  12. # БД пользователей "prefetch" используется для сохранения информации
  13. # полученной из passdb, то есть отпадает необходимость в повторном
  14. # просмотре userdb. Такое возможно сделать при работе с хранилищем
  15. # SQL и LDAP. <doc/wiki/UserDatabase.Prefetch.txt>
  16. #userdb {
  17. #  driver = prefetch
  18. #}
  19.  
  20. userdb {
  21.   driver = sql 
  22.   args = /usr/local/etc/dovecot/dovecot-sql.conf.ext
  23. }
  24.  
  25. # Если у вас нет каких-либо специфичных параметров пользователей, то вы
  26. # можете использовать вместо user_query (userdb sql) userdb static. Например:
  27. # <doc/wiki/UserDatabase.Static.txt>
  28. #userdb {
  29.   #driver = static
  30.   #args = uid=vmail gid=vmail home=/var/vmail/%u
  31. #}

3.3 Запуск и проверка конфигурации

Для автоматического запуска Dovecot во время старта системы необходимо добавить следующую строчку в /etc/rc.conf:
  1. # echo 'dovecot_enable="YES"' >> /etc/rc.conf
Теперь можно запустить сервис:
  1. # service dovecot start
  2. # sockstat -4 -l | grep 
  3. root     dovecot    42594 15 tcp4   *:4190                *:*
  4. root     dovecot    42594 24 tcp4   *:110                 *:*
  5. root     dovecot    42594 25 tcp4   *:995                 *:*
  6. root     dovecot    42594 32 tcp4   *:143                 *:*
  7. root     dovecot    42594 33 tcp4   *:993                 *:*
Если сервис не запустился, то смотрите логи и ищите проблему. Теперь проверим работоспособность сервиса (достаточно будет проверить работоспособность сервиса по одному протоколу, например POP3), для этого подключимся telnet,ом к серверу и сымитируем обычную сессию пользователя. Не забываем, что перед проверкой необходимо создать почтовый ящик в базе данных.
  1. # telnet server.name 110
  2. +OK POP3/IMAP server ready.
  3. USER user@domain
  4. +OK
  5. PASS userpass
  6. +OK Logged in.
  7. STAT
  8. +OK 228 66786803
  9. QUIT
  10. +OK Logging out.
Если имитация сессии пользователя прошла успешно, то настройку Dovecot можно считать завершенной. Если же возникли проблемы, то смотрите логи на предмет ошибок и исправляйте их.

Назад | Начало | Вперед