В этой статье я представлю Конфиг Dovecot для связки с Postfix, PostfixAdmin, MySQL, о которой подробно рассказывал в ряде предыдущих статей. Все сказанное справедливо исключительно для определенных версий пакетов. Очень ленивым читателям сразу можно промотать описания и посмотреть на итоговый конфиг, который находится в самом конце.
Dovecot в моем конкретном примере является скорее одной из вспомогательных частей почтового сервера, в основе которого лежит всем известный Postfix, а потому статья формально относится к его настройке.
Найти больше информации о Postfix вы можете в основной статье по его настройке – Настройка Postfix.
Содержание
Конфиг Dovecot для связки с Postfix, PostfixAdmin, MySQL
Хочу сразу сделать одну оговорку – настройки в конфиге справедливы только для связки следующих версий ПО:
1 2 3 4 5 6 7 8 |
postfix Версия: 2.9.6-2 dovecot-core Версия: 1:2.1.7-7+deb7u1 mysql-server Версия: 5.5.49-0+deb7u1 postfixadmin Версия: 2.3.5-2+deb7u1 |
В будущем могут произойти изменения, в связи с которыми описанный ниже конфиг будет неактуален.
Поскольку в оригинальном dovecot.conf очень много всякого, лучше этот конфиг сразу переименовать, а на его месте создать полностью новый.
1 |
mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig |
1 |
nano /etc/dovecot/dovecot.conf |
Теперь пришло время наполнить этот конфиг осознанным содержимым.
Общие параметры
Несмотря на обилие опций и конфигурационных файлов, Dovecot все же считается достаточно простым в настройке и это действительно так. Например вам вообще не нужно задавать параметров общего назначения, все они имеют оптимальные значения по умолчанию. Тем не менее неприлично оставлять секцию совсем пустой и я все же явным образом определю используемые протоколы:
1 |
protocols = imap pop3 |
Ещё раз повторю, параметр protocols не обязателен, он и так имеет значение imap pop3, а imaps и pop3s активированы по умолчанию и если их вписать в конфиг, у вас вообще будет вылезать ругань:
1 2 |
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:2: 'imaps' protocol is no longer necessary, remove it doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:2: 'pop3s' protocol is no longer necessary, remove it |
Напомню, что у того же Postfix общих параметров достаточно много и лучше бы их задать в явном виде, иначе возникнут проблемы.
Итого: в общих параметрах будет всего одна строка, озвученная выше.
10-auth.conf
Секция аутентификации включает в себя всего два параметра, подробно рассмотренных в статье Связка Postfix и Dovecot. Тут я дам лишь небольшие комментарии.
1 2 |
disable_plaintext_auth = yes auth_mechanisms = plain login cram-md5 |
disable_plaintext_auth запрещает аутентификацию простым текстом без использования ssl/tls (для всех соединений, кроме локальных). Параметр имеет значение по умолчанию = yes, тем не менее я хочу быть уверенным в правильности конфигурации сейчас и в последующем, поэтому задаю значение в явном виде.
auth_mechanisms задает механизмы аутентификации. По умолчанию = plain, login используется для некоторых продуктов Microsoft, а cram-md5 я добавил для удобства, поскольку пароли в базе я храню именно в этом виде, о чем подробно рассказывал в статье Настройка связки Postfix PostfixAdmin.
Итоговый список параметров аутентификации будет выглядеть точно также, как я и написал выше – всего два параметра.
10-logging.conf
Секция имеет второстепенное для работы значение, тем не менее определенно полезна на этапе отладки. Честно сказать, значения по умолчанию не совсем удобные, поэтому как минимум лучше задать явным образом хотя бы пути сохранения логов, определив для каждого типа данных отдельный файл. За это отвечают три параметра – log_path, info_log_path , debug_log_path.
Дальше уже идут параметры логирования различных компонентов, подробнее о которых вы можете прочитать в официальной документации 1.
Общий вид секции на этапе отладки конфигурации будет такой:
1 2 3 4 5 6 7 8 9 |
log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot-info.log debug_log_path = /var/log/dovecot-debug.log auth_verbose = yes auth_debug = yes auth_debug_passwords = yes mail_debug = yes auth_verbose_passwords = sha1 verbose_ssl = yes |
Как только добьетесь отсутствия по крайней мере фатальных ошибок в логах, можете аккуратно отключать лишние уровни логирования, задавая значение no необходимым параметрам. На сервере в продакшене логи быстро забьют свободное место и с этим надо будет что-то делать. Как вариант – прикрутить ротацию логов, но об этом наверно в другой статье.
Стоит отметить один момент – нужно выдать корректные права на файлы логов, иначе почта ходить не будет! Сделать это нужно уже после рестарта Dovecot, чтобы файлы присутствовали в каталоге, либо создать их вручную. Изменить права можно командой:
1 |
chown vmail:vmail /var/log/dovecot* |
Не забудьте выставить нужного пользователя и группу, у меня это vmail.
10-mail.conf
Параметры этой секции я подробно рассматривал во время настройки Dovecot, работающего как агент локальной доставки (LDA или MDA, что одно и то же). Подробнее вы можете прочитать в статье Связка Postfix и Dovecot (ищите по вхождению слова 10-mail.conf). Я же просто скопирую итоговый вид сюда, опустив второстепенные параметры:
1 2 3 4 |
mail_location = maildir:/var/vmail/%d/%n mail_uid = 5000 mail_gid = 5000 mail_privileged_group = vmail |
Также не забудьте создать каталог и настроить права, этим я занимался в статье Виртуальные почтовые ящики Postfix (ищите по вхождению строки /var/vmail). Идем дальше.
10-master.conf
Как и 10-mail.conf, секцию 10-master.conf я подробно рассматривал в прошлой статье Связка Postfix и Dovecot (ищите по вхождению слова 10-master.conf), но сейчас необходимо внести ясность по поводу некоторых других опций. Дело в том, что в этой секции осуществляется некоторая настройка протоколов imap/pop и именно тут вы можете произвести тонкую настройку компонентов, отвечающих за процесс входа 2 пользователей на сервер (Login process). Конкретно за эту задачу отвечают параметры:
1 2 3 4 5 6 7 8 9 10 11 12 |
service imap-login { inet_listener imap { } inet_listener imaps { } } service pop3-login { inet_listener pop3 { } inet_listener pop3s { } } |
Но, да возрадуются лентяи (то есть такие же как я), все уже настроено оптимальным образом за вас! Речь идет как об используемых протоколах (imap/pop3, imaps/pop3s + ssl enable), так и настройках безопасности. В принципе можете оставить секцию как есть на будущее, может быть захотите что-то переопределить, задать свои настройки. Как вариант можете вообще ничего не указывать. Обобщая сказанное, а также взяв уже настроенные ранее параметры, получаем полное содержимое секции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
service auth { unix_listener auth-userdb { mode = 0600 user = vmail group = vmail } unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } } service imap-login { inet_listener imap { } inet_listener imaps { } } service pop3-login { inet_listener pop3 { } inet_listener pop3s { } } |
Напоминаю, что опция service auth отвечает за аутентификацию и подробно её принцип работы, а также значения всех необходимых параметров, я рассматривал в статье Связка Postfix и Dovecot.
10-ssl.conf
Пришло время поговорить о сертификатах. Разумеется самым лучшим вариантом будет сертификат от публичного доверенного центра, но он стоит денег, а потому выбор нищебродов – самозаверенные сертификаты. После установки Dovecot у меня уже был автоматически сгенерирован сертификат, но если по каким-то причинам у вас этого не произошло, можете получить сертификат, выполнив команду:
1 |
openssl req -newkey rsa:4096 -nodes -sha512 -x509 -days 3650 -nodes -out /etc/ssl/certs/mailserver01.pem -keyout /etc/ssl/private/mailserver01.pem |
Большинство значений параметров ssl по умолчанию нас также устраивает, но все же нужно проверить путь до сертификата и его ключа, а также жестко задать использование ssl. Получаем итоговые параметры секции ssl:
1 2 3 |
ssl = yes ssl_cert = </etc/dovecot/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.pem |
В зависимости от того где у вас располагается сертификат и ключ, вам нужно изменить пути соответствующим образом. Идем далее.
15-lda.conf
У меня эта секция получилась пустой. Разве что можно на будущее оставить директиву protocol lda. Я оставил в конфиге только вот что:
1 2 |
protocol lda { } |
В статьях в интернете вы также можете увидеть в секции lda параметры lda_mailbox_autocreate, lda_mailbox_autosubscribe, которые отвечают за автосоздание и автоподписку на папки в почтовых ящиках соответственно. По умолчанию значения этих опций = no.
На данный момент я до конца не уверен в необходимости этих параметров, ведь их функционал можно задать в директиве namespace, просто выставив auto = subscribe (обеспечивает враз автосоздание и автоподписку). В любом случае без их явного определения у меня все работает отлично.
15-mailboxes.conf
Ну а теперь пришло время поговорить об автосоздании папок в почтовых ящиках и автоматической подписке на их изменения. На самом деле есть как минимум два пути для достижения этой цели. Первый из них и наиболее старый – использование плагина autocreate 3 (+ автоподписка в нем же). Если вы выберите этот путь, то ваш ждет разочарование – Dovecot будет сыпать варнинги, что метод устарел. Да и вообще сейчас он работает как-то криво, по крайней мере у меня было так (хочу уточнить, что я его изучал просто для общего развития, а на деле использовал описанный ниже способ).
Следующий вариант – использование директивы namespace inbox 4. Этот вариант более современный, да и к тому же все настройки будут сосредоточены в одном месте. Разумеется все описания нужно проводить в файле 15-mailboxes.conf. В конечном счете он будет иметь вид:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
namespace inbox { inbox = yes mailbox Drafts { special_use = \Drafts auto = subscribe } mailbox Junk { special_use = \Junk auto = subscribe } mailbox Trash { special_use = \Trash auto = subscribe } mailbox Sent { special_use = \Sent auto = subscribe } } |
Как я и упоминал ранее, auto = subscribe обеспечивает автосоздание и автоподписку враз.
90-plugin.conf
Секция также получилась полностью пустой. На будущее можно только оставить основную директиву plugin, чтобы при необходимости вписать нужные парамеры. Общий вид будет следующий:
1 2 |
plugin { } |
Переходим к последнему разделу.
auth-sql.conf.ext
Этот конфиг отвечает за проверку учетных данных пользователей и его я также настраивал в статье Связка Postfix и Dovecot. Напомню, что все имена и пароли пользователей хранятся в отдельной базе данных MySQL, которая была автоматически создана и настроена при установке PostfixAdmin (см. статью Настройка связки Postfix PostfixAdmin). Напомню, что необходимо создать файл /etc/dovecot/dovecot-sql.conf и в нем написать все параметры и запросы для вытаскивания нужных данных (а это имя пользователя и пароль).
В сам же конфиг добавляем только:
1 2 3 4 5 6 7 8 |
userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } |
Это был последний раздел из моего конфига, пришло время перейти к кульминации.
Итоговый конфиг dovecot.conf
Представляю вашему вниманию итоговый вариант рабочего конфига Dovecot, работающего в связке с Postfix, PostfixAdmin, MySQL. Для вашего удобства конфиг разделен на секции, каждая из которых имеет имя, соответствующее определенному файлу из каталога /etc/dovecot/conf.d и снабжена ссылкой на официальную документацию. Для собственного удобства я свел все в один конфиг – /etc/dovecot/dovecot.conf, вы можете все разбить по разным файлам конфигурации.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
#-------------------dovecot.conf- - http://www.dovecot.org/doc/dovecot-example.conf protocols = imap pop3 #-------------------10-auth.conf- - http://wiki2.dovecot.org/Authentication disable_plaintext_auth = yes auth_mechanisms = plain login cram-md5 #-------------------10-logging.conf- - http://wiki2.dovecot.org/Logging log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot-info.log debug_log_path = /var/log/dovecot-debug.log auth_verbose = yes auth_debug = yes auth_debug_passwords = yes mail_debug = yes auth_verbose_passwords = sha1 verbose_ssl = yes #-------------------10-mail.conf- - http://wiki.dovecot.org/MailLocation mail_location = maildir:/var/vmail/%d/%n mail_uid = 5000 mail_gid = 5000 mail_privileged_group = vmail #-------------------10-master.conf- - http://wiki.dovecot.org/Services service auth { unix_listener auth-userdb { mode = 0600 user = vmail group = vmail } unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } } service imap-login { inet_listener imap { } inet_listener imaps { } } service pop3-login { inet_listener pop3 { } inet_listener pop3s { } } #-------------------10-ssl.conf- - http://wiki.dovecot.org/SSL/DovecotConfiguration ssl = yes ssl_cert = </etc/dovecot/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.pem #-------------------15-lda.conf- - http://wiki.dovecot.org/LDA protocol lda { } #-------------------15-mailboxes.conf- - http://wiki2.dovecot.org/MailboxSettings namespace inbox { inbox = yes mailbox Drafts { special_use = \Drafts auto = subscribe } mailbox Junk { special_use = \Junk auto = subscribe } mailbox Trash { special_use = \Trash auto = subscribe } mailbox Sent { special_use = \Sent auto = subscribe } } #-------------------90-plugin.conf- - http://wiki2.dovecot.org/Plugins plugin { } #-------------------auth-sql.conf.ext- - http://wiki2.dovecot.org/AuthDatabase/SQL userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } |
Если что-то не работает – тестируйте, смотрите что в логах. Напоминаю, что конфиг актуален только для почтового сервера, настройкой которого я занимался в нескольких последних статьях (подробнее читайте в Настройка Postfix).
Вывод
Хоть и конфиг Dovecot получился достаточно большой, в нем все предельно просто, а многие директивы оставлены просто на будущее. Достаточно подробная и внятная официальная документация упрощает процесс настройки, а также предлагает готовые примеры реализации функционала.
На этапе отладке включайте логи как можно более подробно, вплоть до дебагинга. Dovecot предоставляет на редкость информативные сообщения и, более того, в большинстве случаев сразу предлагает и решение проблемы.
Разбивать конфиг на части (в соответствующие файлы конфигурации в каталоге conf.d/) или сводить все в один dovecot.conf решать конечно же вам, но второй вариант лично для меня более удобен, информативен, прост в отладке.