11:18 Dovecot+Postfix |
Введение Решил на днях присмотреться к данному IMAP/POP3 серверу. Давно его советовали и рекомендовали, но как-то не хватало времени, чтобы изучить его. А тут как раз и Final Release 1.0 вышел (после 5 лет разработки). Итак, почему именно dovecot? Думаю, прочитав документацию, поставляемую с dovecot, вы и сами поймете его плюсы и преимущества, к которым можно отнести следующее: поддержка форматов maildir, maildir++, mailbox; включает в себя как imap сервер, так и pop; в качестве backend'ов может использовать mysql, postgresql, ldap; может выступать в качестве сервера аутентификации для exim и postfix; хорошая документация на сайте - http://wiki.dovecot.org/; поддержка динамических модулей аутентификации; поддержка динамических модулей pop3 и imap; поддержка квот; очень гибкий файл настроек с хорошими комментариями; основной упор при написании автор делал на безопасность, за последние несколько лет не было найдено ни одной критической уязвимости; поддерживает все основные механизмы аутентификации: PLAIN, LOGIN, DIGEST-MD5, CRAM-MD5, ANONYMOUS, NTLM, RPA, APOP, GSSAPI; В отличие от courier-imap входит в поставку Red Hat, CentOS, Debian, SuSe что тоже является очень удобным при обновлении системы; поддержка SSL/TLS, хотя сейчас этим, наверное, никого уже не удивишь, но у меня не получилось настроить courier-imap на одновременную корректную работы с SSL/TLS с наиболее распространенными MUA (The Bat, Outlook Express/Outlook, Thunderbird). Dovecot же заработал сразу без проблем; так же очень понравилась возможность запрета использовать методы аутентификации, основанные на передаче пароля в открытом виде, т.н. plaintext, если не используется SSL/TLS; одновременная поддержка системных и виртуальных пользователей, без необходимости делать дубликаты системных пользователей в БД виртуальных пользователей; Думаю этих аргументов более чем достаточно для того, чтобы обратить свое внимание на данное ПО. Но так как данное ПО предоставляет не только непосредственно функции IMAP/POP сервера, то почему бы не использовать его возможности на все 100%. Итак, в качестве MDA(Mail Delivery Agent)/LDA(Local Delivery Agent) совместно с постфикс мы будем использовать LDA dovecot, что позволит нам использовать язык фильтрации sieve. Dovecot также будет выступать в качестве сервера SASL (данная функция доступна только начиная с версии Postfix 2.3) и производить smtp аутентификацию. Установка и настройка Установку и настройку я буду производить на CentOS 5. На freebsd все как всегда устанавливаем из портов. Итак, в распоряжении у нас есть: # uname -a Linux nissan-kh.akko.com.ua kernel-2.6.18-8.1.1.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 athlon i386 GNU/Linux # cat /etc/redhat-release CentOS release 5 (Final) Как всегда устанавливаем из rpm пакета. Так же можно установить с помощью yum, кому как удобнее. К сожалению, версия dovecot, которая идет с дистрибутивом относительно старая (1.0.rc15), а также нет возможности собрать пакет dovecot-sieve, так как для его сборки требуется отсутствующий пакет dovecot-devel. Так что я рекомендую собрать эти два пакета самому из src.rpm. После того, как мы собрали rpm пакеты, устанавливаем их. # rpm -ivh dovecot-1.0.0-8_56.i686.rpm dovecot-sieve-1.0.1-5.i686.rpm Preparing... ########################################### [100%] 1:dovecot ########################################### [ 50%] 2:dovecot-sieve ########################################### [100%] Собственно на этом установка завершена. У dovecot один основной конфигурационный файл, который располагается в /etc/dovecot.conf. Вот его настройкой мы и займемся. Данный файл обладает большим количеством настроек и содержит хорошие комментарии. Так что я буду приводить лишь те параметры, значения которых я изменял, все остальные параметры имеют значения по умолчанию. Расположение dovecot.conf По умолчания dovecot.conf устанавливается в папку /etc, что на мой взгляд не очень удобно. Поэтому я поправил spec файл и теперь у меня все конфигурационные файлы находятся в папке /etc/dovecot. # # /etc/dovecot/dovecot.conf # # Протоколы, которые мы хотим поддерживать: imap imaps pop3 pop3s # Если вы хотите использовать только dovecot-auth, вы можете задать "none". protocols = pop3 pop3s # IP или адрес хоста, где необходимо слушать соединения. В данный момент # невозможно задать множество адресов. "*" прослушивает все IPv4 интерфейсы. # "[::]" прослушивает все IPv6 интерфейсы, но так же может слушать все IPv4 # интерфейсы, зависит от операционной системы. # # Если вы хотите указать порты для каждого сервиса, вам необходимо настроить # эти параметры внутри секции protocol imap/pop3 { ... }, таким образом вы # сможете задать различные порты для IMAP/POP3. Например: # protocol imap { # listen = *:10143 # ssl_listen = *:10943 # .. # } # protocol pop3 { # listen = *:10100 # .. # } #listen = [::] protocol pop3 { listen = *:110 ssl_listen = *:995 } # Отключает команду LOGIN и все остальные plaintext методы аутентификации пока # не будет использован SSL/TLS. Примечание если удаленный ip соответствует # локальному ip (например, вы подключаетесь с того же компьютера), соединение # будет считаться безопасным и plaintext методы аутентификации будут разрешены. disable_plaintext_auth = yes ## ## Logging ## # Использовать этот log файл вместо syslog(). log_path = /var/log/dovecot.log # Сохранять информационные сообщения в этот файл info_log_path = /var/log/dovecot.log ## ## SSL settings ## # Отключить поддержку SSL/TLS. # no - поддержка SSL/TLS включена # yes - поддержка SSL/TLS отключена ssl_disable = no # В данных параметрах задаются X.509 SSL/TLS сертификат и закрытый ключ, # в формате PEM. Они считываются перед тем, как dovecot перестает работать # с привилегиями root, так что права на чтение должен иметь только root. # Как создать сертификат и ключ читаем - ssl-howto. # установите права на этот файл - root:root 0444 ssl_cert_file = /etc/pki/dovecot/certs/nissan-kh.akko.com.ua.crt # установите права на этот файл - root:root 0400 ssl_key_file = /etc/pki/dovecot/private/nissan-kh.akko.com.ua.key # Задает периодичность регенерации файла SSL параметров. Во время процесса # регенерации производится интенсивное использование центрального процессора, # так что на слабых машинах не следует указывать слишком маленький интервал # времени. На современных компьютерах время регенерации занимает всего # несколько секунд. Значение задается в часах, 0 - полностью отключает # регенерацию. ssl_parameters_regenerate = 1 # Список используемых SSL протоколов. Полный список протоколов можно # посмотреть по адресу - http://www.openssl.org/docs/apps/ciphers.html ssl_cipher_list = ALL:!LOW:!SSLv2 # Показывать ошибки уровня протокола SSL. Полезно использовать только # во время отладки, после этого лучше отключить. verbose_ssl = yes ## ## Login processes ## # Сообщение приветствия для клиентов login_greeting = Welcome to Akko-Invest IMAP/POP3 server. ## ## Mailbox locations and namespaces ## # Месторасположение пользовательских почтовых ящиков. Это такой же параметр # как и старый default_mail_env. Значение по умолчанию отсутствует, это # означает, что Dovecot попытается найти ящики автоматически. Это не будет # работать, если у пользователя до сих пор нет никакой почты, поэтому вы # должны непосредственно указать Dovecot полный путь к ящику. # # Если вы используете mbox, указание пути к INBOX файлу (например, /var/mail/%u) # недостаточно. Вам также необходимо указать Dovecot где находятся другие ящики # и где Dovecot может расположить файлы с индексами. Это называется "корневая # почтовая директория", и она должна быть указана первой в параметре mail_location. # # Существует несколько специальных переменных, которые вы можете использовать: # # %u - имя пользователя # %n - пользовательская часть в user@domain, то же самое что и %u # если не задана доменная часть # %d - доменая часть в user@domain, пустая, если не указан домен # %h - домашняя директория # # Смотрите doc/variables.txt для полного списка переменных. # # Некоторые примеры: # mail_location = maildir:~/Maildir # mail_location = mbox:~/mail:INBOX=/var/mail/%u # mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n # mail_location = maildir:/var/spool/mail/%d/%u ## ## Mail processes ## # Включает отладку, очень полезно при первоначальной настройке и поиске # неисправностей. После настройки лучше отключать. mail_debug = yes # Допустимый интервал UID для пользователей, по умолчанию 500 и выше. # Это сделано для того, чтобы быть увереным в том, что пользователи # не смогут войти как демоны или другие системные пользователи. # Примечание запрет входа root встроен в бинарник dovecot и не может # быть изменен, даже если установить first_valid_uid в 0. # 1981 - uid и gid пользователя и группы virtual соответственно, # которых мы создавали в Mail Howto first_valid_uid = 1981 last_valid_uid = 1981 # Valid GID range for users, defaults to non-root/wheel. Users having # non-valid GID as primary group ID aren't allowed to log in. If user # belongs to supplementary groups with non-valid GIDs, those groups are # not set. first_valid_gid = 1981 last_valid_gid = 1981 ## ## LDA specific settings ## protocol lda { # Адрес, используемый при отправке отклоненной почты. # Например, при превышении пользователем квоты. # Address to use when sending rejection mails postmaster_address = postmaster@akko.com.ua # Поддержка динамически загружаемых плагинов. Параметр mail_plugins # задает разделенный пробелами список плагинов, которые будут загружены. mail_plugins = cmusieve mail_plugin_dir = /usr/lib/dovecot/lda # Имя хоста, используемое в различных частях отсылаемой почты, # например Message-Id. По умолчанию действительное имя хоста. hostname = net.akko.com.ua } ## ## Authentication processes ## # # Следующих три параметра следует использовать только во мремя настройки # и отладки dovecot. После этого их лучше отключить. # # Более высокий уровень информативности. Полезно использовать при поиске # ошибок, связанных с аутентификацией. auth_verbose = yes # Более высокий уровень информативности, используется в целях отладки. # Например, показывает SQL запросы. auth_debug = yes # В случае несовпадения пароля, отображает пароли и испоьзуемую схему # хранения пароля. Требует, чтобы был установлен auth_debug=yes. auth_debug_passwords = yes auth default { # Разделенный пробелами список, используемых механизмов аутентификации: # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi mechanisms = plain login cram-md5 # # База данных паролей используется для проверки паролей пользователей # (и ничего более). Вы можете использовать множество passdbs и userdbs. # Это полезно, если вы хотите позволить обоим - системным пользователям и # (/etc/passwd) и виртуальным пользователям входить без необходимости # делать дубликаты системных пользователей в БД виртуальных пользователей. # # http://wiki.dovecot.org/PasswordDatabase # # Пользователи могут быть временно отключены с помощью добавления deny=yes # в passdb. Если пользователь найден в БД, аутентификация потерпит неудачу. # БД с отключенными пользователями всегда должна быть указана перед остальными, # так как ее проверка идет первой. # SQL database passdb sql { args = /etc/dovecot/dovecot-mysql.conf } # # База данных пользователей указывает месторасположение почтовых ящиков # и пользователя/группу владеющего этим ящиком. # # http://wiki.dovecot.org/UserDatabase # # SQL database # http://wiki.dovecot.org/AuthDatabase/SQL userdb sql { args = /etc/dovecot/dovecot-mysql.conf } # Пользователь, от имени которого будет работать процесс. Этот пользователь # должен иметь доступ только к БД пользователей и паролей и никуда больше. # Только shadow и pam аутентификация требует пользователя root, так что по # возможности используйте пользователя отличного от root . Примечание: # этот пользователь НЕ ИСПОЛЬЗУЕТСЯ для доступа к почте. Для доступа # к почте используется пользователь заданный выше в userdb. user = virtual socket listen { master { # Данный сокет обычно используется, чтобы дать доступ dovecot LDA # к userdb, для того, чтобы он мог найти информацию о месторасположении # почтовых ящиков пользователей. Данный сокет может также использоваться # для обычной аутентификации пользователей. # ПРЕДУПРЕЖДЕНИЕ: Не давайте права доступа к этому сокету недоверенным # пользователям. Это может привести к нарушению безопасности системы. # По возможности ограничьте доступ к данному сокету. path = /var/run/dovecot/auth-master mode = 0600 user = virtual group = virtual } client { # Обычно безопасно давать полный доступ к данному сокету. # Как правило, данный сокет используют SMTP сервера для того, чтобы # производить smtp аутентификацию. path = /var/spool/postfix/private/dovecot-smtp-auth mode = 0660 user = postfix group = postfix } } } dovecot.conf Мне было лень переводить весь конфигурационный файл ;). Так что если вас интересуют все настройки и их значение можете посмотреть http://www.lissyara.su/?id=1173 Единственное замечание, в данной статье приводилось описание конфигурационного файла dovecot версии 0.9x, а в своей статье я использую dovecot версии 1.0, между этими версиями есть небольшие отличия в конфигурационных файлах, обращайте на это внимание. # |
|
Всего комментариев: 0 | |