Конфиг Dovecot для связки с Postfix, PostfixAdmin, MySQL

Конфиг Dovecot для связки с Postfix, PostfixAdmin, MySQLВ этой статье я представлю Конфиг Dovecot для связки с Postfix, PostfixAdmin, MySQL, о которой подробно рассказывал в ряде предыдущих статей. Все сказанное справедливо исключительно для определенных версий пакетов. Очень ленивым читателям сразу можно промотать описания и посмотреть на итоговый конфиг, который находится в самом конце.

Dovecot в моем конкретном примере является скорее одной из вспомогательных частей почтового сервера, в основе которого лежит всем известный Postfix, а потому статья формально относится к его настройке.


Найти больше информации о Postfix вы можете в основной статье по его настройке — Настройка Postfix.


Конфиг Dovecot для связки с Postfix, PostfixAdmin, MySQL

Хочу сразу сделать одну оговорку — настройки в конфиге справедливы только для связки следующих версий ПО:

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 разнесены по множеству конфигурационных файлов, которые вы можете найти в директории /etc/dovecot/conf.d. Основным же конфигом является /etc/dovecot/dovecot.conf. Вы можете сосредоточить все настройки в главном конфиге, либо раскидать по вспомогательным. Мне больше нравится первый вариант, но чтобы сохранить некоторую логическую связь с конфигами conf.d/, я условно разделю основной конфиг на секции, названия которых совпадает с аналогичными файлами в conf.d/.

Поскольку в оригинальном dovecot.conf очень много всякого, лучше этот конфиг сразу переименовать, а на его месте создать полностью новый.

mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
nano /etc/dovecot/dovecot.conf

Теперь пришло время наполнить этот конфиг осознанным содержимым.

Общие параметры

Несмотря на обилие опций и конфигурационных файлов, Dovecot все же считается достаточно простым в настройке и это действительно так. Например вам вообще не нужно задавать параметров общего назначения, все они имеют оптимальные значения по умолчанию. Тем не менее неприлично оставлять секцию совсем пустой и я все же явным образом определю используемые протоколы:

protocols = imap pop3

Ещё раз повторю, параметр protocols не обязателен, он и так имеет значение imap pop3, а imaps и pop3s активированы по умолчанию и если их вписать в конфиг, у вас вообще будет вылезать ругань:

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. Тут я дам лишь небольшие комментарии.

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.

Общий вид секции на этапе отладки конфигурации будет такой:

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, чтобы файлы присутствовали в каталоге, либо создать их вручную. Изменить права можно командой:

chown vmail:vmail /var/log/dovecot*

Не забудьте выставить нужного пользователя и группу, у меня это vmail.

10-mail.conf

Параметры этой секции я подробно рассматривал во время настройки Dovecot, работающего как агент локальной доставки (LDA или MDA, что одно и то же). Подробнее вы можете прочитать в статье Связка Postfix и Dovecot (ищите по вхождению слова 10-mail.conf). Я же просто скопирую итоговый вид сюда, опустив второстепенные параметры:

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). Конкретно за эту задачу отвечают параметры:

service imap-login {
 inet_listener imap {
 }
 inet_listener imaps {
 }
}
service pop3-login {
 inet_listener pop3 {
 }
 inet_listener pop3s {
 }
}

Но, да возрадуются лентяи (то есть такие же как я), все уже настроено оптимальным образом за вас! Речь идет как об используемых протоколах (imap/pop3, imaps/pop3s + ssl enable), так и настройках безопасности. В принципе можете оставить секцию как есть на будущее, может быть захотите что-то переопределить, задать свои настройки. Как вариант можете вообще ничего не указывать. Обобщая сказанное, а также взяв уже настроенные ранее параметры, получаем полное содержимое секции:

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 у меня уже был автоматически сгенерирован сертификат, но если по каким-то причинам у вас этого не произошло, можете получить сертификат, выполнив команду:

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:

ssl = yes
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem

В зависимости от того где у вас располагается сертификат и ключ, вам нужно изменить пути соответствующим образом. Идем далее.

15-lda.conf

У меня эта секция получилась пустой. Разве что можно на будущее оставить директиву protocol lda. Я оставил в конфиге только вот что:

protocol lda {
}

В статьях в интернете вы также можете увидеть в секции lda параметры lda_mailbox_autocreatelda_mailbox_autosubscribe, которые отвечают за автосоздание и автоподписку на папки в почтовых ящиках соответственно. По умолчанию значения этих опций = no.

На данный момент я до конца не уверен в необходимости этих параметров, ведь их функционал можно задать в директиве namespace, просто выставив auto = subscribe (обеспечивает враз автосоздание и автоподписку). В любом случае без их явного определения у меня все работает отлично.

15-mailboxes.conf

Ну а теперь пришло время поговорить об автосоздании папок в почтовых ящиках и автоматической подписке на их изменения. На самом деле есть как минимум два пути для достижения этой цели. Первый из них и наиболее старый — использование плагина autocreate 3 (+ автоподписка в нем же). Если вы выберите этот путь, то ваш ждет разочарование — Dovecot будет сыпать варнинги, что метод устарел. Да и вообще сейчас он работает как-то криво, по крайней мере у меня было так (хочу уточнить, что я его изучал просто для общего развития, а на деле использовал описанный ниже способ).

Следующий вариант — использование директивы namespace inbox 4. Этот вариант более современный, да и к тому же все настройки будут сосредоточены в одном месте. Разумеется все описания нужно проводить в файле 15-mailboxes.conf. В конечном счете он будет иметь вид:

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, чтобы при необходимости вписать нужные парамеры. Общий вид будет следующий:

plugin {
}

Переходим к последнему разделу.

auth-sql.conf.ext

Этот конфиг отвечает за проверку учетных данных пользователей и его я также настраивал в статье Связка Postfix и Dovecot. Напомню, что все имена и пароли пользователей хранятся в отдельной базе данных MySQL, которая была автоматически создана и настроена при установке PostfixAdmin (см. статью Настройка связки Postfix PostfixAdmin). Напомню, что необходимо создать файл /etc/dovecot/dovecot-sql.conf и в нем написать все параметры и запросы для вытаскивания нужных данных (а это имя пользователя и пароль).

В сам же конфиг добавляем только:

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, вы можете все разбить по разным файлам конфигурации.

#-------------------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 решать конечно же вам, но второй вариант лично для меня более удобен, информативен, прост в отладке.

comments powered by HyperComments