Установка и настройка Dovecot является достаточно простой задачей, но содержит на пути множество подводных камней. Эта статья призвана донести до читателей краткую информацию о принципе работы, нюансах связки Dovecot с другими программами, а также обозначить место и роль Dovecot в глобальном потоке почтового трафика.
Dovecot я планирую рассматривать как один из основных компонентов связки с MTA, а потому статья находится в иерархии информации о Postfix на моем блоге.
Найти больше информации о Postfix вы можете в основной статье по его настройке – Настройка Postfix.
Установка Dovecot
Поскольку Dovecot присутствует в репозиториях, процесс установки представляет из себя лишь одну команду:
1 |
apt-get install dovecot-core |
Перед изменением любых конфигов не забудьте на всякий случай их бэкапить. Речь идет как об основном конфигурационном файле /etc/dovecot/dovecot.conf, так и о вспомогательных, находящихся в директории /etc/dovecot/conf.d/. Помимо явного плюса в присутствии резервной копии, есть ещё и некоторое удобство в последующем администрировании – если вы видите бэкап конфига, то значит в этом конфиге вы однозначно выполняли изменения. Если бэкапа нет, значит конфиг вы не трогали. Это будете понимать без необходимости открытия файла. За годы администрирования у меня сложилась такая практика и она себя оправдывала множество раз.
Сделать бэкап можно одной командой:
1 |
cp /etc/dovecot/dovecot.conf{,.orig} |
Уже после внесения изменения просмотреть все заданные вручную параметры конфига можно командой:
1 |
doveconf -n |
Для просмотра значений параметров по умолчанию, выполните команду doveconf без ключей. Отфильтровать вывод по нужному параметру можно с помощью grep:
1 |
doveconf | grep login_greeting |
1 |
login_greeting = Dovecot ready. |
Повторюсь, что переопределять параметры на их же дефолтные значения я в большинстве случаев не собираюсь. Практически все заданные в моих конфигах значения явно отличаются от дефолтных.
Настройка Dovecot
В этой главе я хотел бы обратить внимание читателей на некоторые очевидные для бывалых админов пункты, но в большинстве случаев сложные для новичков. Над чем-то я долго ломал голову, что-то дошло практически сразу. Тем не менее, в контексте уже устоявшейся для меня традиции я поделюсь своими размышлениями с вами и одновременно оставлю их для себя на будущее.
1. Обратите внимание, что в Dovecot начиная с версии 2.0 и более поздних произошли достаточно сильные изменения во многих компонентах. Очень много статей по настройке связки Postfix+Dovecot на блогах в интернете просто устарели и, подняв по ним свой почтовый сервер, вы удивитесь количеству варнингов в логах, если у вас вообще стартанут сервисы.
2. Настройки разбиты по множеству файлов в каталоге /etc/dovecot/conf.d/. Кто-то считает это большим плюсом, но для меня это ужасно – постоянно думаешь в каком конфиге искать тот или иной параметр и в конце концов решаешь это сделать просто “грепом” по всему каталогу, например вот так:
1 |
grep 'service auth {' /etc/dovecot/conf.d/* |
1 |
/etc/dovecot/conf.d/10-master.conf:service auth { |
После этого проверяешь подключен ли конфиг в dovecot.conf. В общем ужас. Именно поэтому для меня самый удобный вариант – хранить все настройки в основном конфиге. Я просто делаю так – перемещаю оригинальный конфиг на всякий случай, создаю пустой новый:
1 |
mv /etc/dovecot/dovecot.conf{,.orig} |
1 |
nano /etc/dovecot/dovecot.conf |
Тем не менее, полностью игнорировать иерархию конфигурационных файлов было бы неправильно. Чтобы все было красиво, просто делайте комментарии секции, указывайте её принадлежность к соответствующему файлу в conf.d/. Вот пример с секцией SSL:
1 2 3 4 5 6 7 8 |
... #---------------------------10-ssl.conf-------------------------- ssl = yes ssl_cert = </etc/dovecot/dovecot.pem ssl_key = </etc/dovecot/private/dovecot.pem ... |
Таким образом dovecot.conf у вас будет разделен на множество небольших частей.
3. А какую вообще функцию выполняет Dovecot в классической связке с Postfix? Казалось бы вопрос очевидный, но от непонимания принципов работы почтовых протоколов возникает очень много проблем в очевидных нюансах.
Вообще Dovecot является агентом доступа к почте (MAA – Mail Access Agent). То есть он предоставляет клиентам возможность подключаться по протоколам IMAP/POP. При этом все движения почтовых сообщений между серверами находятся в ведении агента доставки почты (MTA – Mail Transfer Agent), которым является например Postfix. Он, в свою очередь, общается уже по протоколу SMTP с другими себе подобными.
Помимо этого, функционал Dovecot позволяет использовать его для аутентификации пользователей. Собственная реализация SASL позволяет это сделать очень просто, да и Postfix полностью поддерживает эту связку.
Ну и нельзя не сказать про то, что очень часто Dovecot также выступает в качестве агента локальной доставки (LDA – Local Delivery Agent или MDA – Mail Delivery Agent, это синонимы), отвечающего за доставку сообщений в ящики пользователей.
Сказанное выше хорошо объединяет иллюстрация 1:
Собственно Dovecot на ней может враз являться MAA и MDA. MTA – Postfix, а MUA – это обычный почтовый клиент, например ThunderBird. Хранилище – это каталог с почтовыми данными пользователей (поддерживаются разные форматы хранения – mbox, maildir).
Вывод
Dovecot удачно дополняет Postfix как MAA и MDA, а также имеет большинство настроек, сконфигурированных по умолчанию оптимальным образом. Сисадминам остается лишь заточить конфигурацию под себя, в то время как основа для успешного развертывания уже сконфигурирована за вас.
Будьте внимательны с правами файлов/каталогов, которые будет использовать Dovecot. Обратите внимание на защищенность закрытого ключа сертификата.
Notes: