Настройка dovecot

Из документации и интернета.

Dovecot не выполняет функции приема и передачи почты. Он только доставляет почту из почтового ящика на сервере к пользователю. Т.е. выполняет функции MDA(mail delivery agent). А так же участвует в отправке почты с компьютера пользователя через postfix ( в моем случае ). И то и другое происходит при авторизации пользователей.

Конфигурационный файл dovecot.conf. Для просмотра всех конфигурационных параметров используется команда dovecot -a, для просмотра только параметров, отличающихся от заданных по умалчанию - dovecot -n, для определения местонахождения конфиг файла - dovecot -a | head -1. Как и в случае с postfix задавать в конфиге все параметры не обязательно, достаточно лишь указать те, которые будут оличными от умолчальных.

Простейшая конфигурация включает уустановку:

1. Тип (mailbox or maildir) и расположение(путь) хранилища почты.

2. Список пользователей и паролей.

Для работы dovecot требуется несколько учетных записей:

1. root - Запускается dovecot из-под рута.

2. dovecot - непривилегированный пользователь. Не владеет никакими файлами в системе, не входит в другие группы, в группе dovecot есть только пользователь dovecot. Требуется для login process ( логин процесс ).

3. auth-user - пользователь для чтения данных пользователей и паролей. Обычно - root. Если используются виртуальные пользователи, то вместо рута можно создать непривилегированного пользователя, которому дать доступ к файлам базы пользователей и паролей ( здесь это dovauth )

Из мануала dovecot 2 :

The login processes don't need to be able to do anything else than let the user log in, so they can run in highly restricted environment. By default they are run as a non-privileged "dovenull" user chrooted into a non-writable directory containing only authentication UNIX sockets.

Из файла с паролями информацию получает все-таки процесс с правами dovecot.

4. mail-user(s) - пользователь (не dovecot) для доступа к почтовым ящикам ( здесь это vmail )

Пример конфига:

cat dovecot.conf









# Используемые протоколы, может быть еще imap, imaps, managesieve
protocols = pop3 pop3s
# Не отключать plaintext авторизацию
disable_plaintext_auth = no
# включить ssl; путь к сертификатам
ssl = yes
ssl_cert_file = /usr/local/etc/ssl/dovecot/certs/dovecot.pem
ssl_key_file = /usr/local/etc/ssl/dovecot/private/dovecot.pem
# Путь к лог файлам
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot-info.log
# Месторасположение и тип хранилища почты. Тип - maildir; %d - доменная часть почтового адреса ( справа от "@" ), 
#%n - левая часть почтового адреса
# vmail - пользователь, которого надо создать в системе с домашним каталогом в /home с шеллом /usr/sbin/nologin, uid=9999(например)
# Он является владельцем главного почтового каталога, не входит ни в какие группы, не владеет больше ничем в системе.
mail_location = maildir:/home/vmail/%d/%n
# uid и gid пользователя, под которым dovcot получает доступ к хранилищу почты
mail_uid = 9999
mail_gid = 9999
# mail-process chrooting
valid_chroot_dirs = /home/vmail
mail_privileged_group = mail
dotlock_use_excl = yes
verbose_proctitle = yes
first_valid_uid = 1000
first_valid_gid = 1000
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol managesieve {
}
protocol lda {
sendmail_path = /usr/sbin/sendmail
}
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth_username_format = %Lu
# Параметры аутентификации
auth default { 
mechanisms = plain login digest-md5
# база данных с паролями (passdb) - passwd-файл, args - путь к нему
passdb passwd-file {
#Each domain have a separate passwd-file
args = /usr/local/etc/dovecot/passfiles/%d/passwd 
}
# auth-user для доступа к учетным данным виртуальных пользователей
# необходимо создать пользователя (dovauth) для доступа к данным виртуальных пользователей и паролей, с шеллом /usr/sbin/nologin, без homedir
# который больше ничем не владеет кроме как каталогом /usr/local/etc/dovecot/passfiles и всем что в нем
user = dovauth
socket listen {
client {
# путь и свойства unix-сокета для передачи данных между dovecot и postfix (во время sasl-authentication ?)
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
   }
  }
}



В файл конфигурации postfix - master.cf следует добавить строки:









dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/deliver -d ${recipient}

Создать пользователя, аналогичного пользователю dovecot, без шелла, c uid 9999 можно,  например, так









pw useradd vmail -d "/var/emty" -u 9999 -s /usr/sbin/nologin -c "Owner Dovecots Maildir User" 

В результате, в систему добавил (passwd) :









dovauth:*:9998:9998:Dovecot Auth User:/var/empty:/usr/sbin/nologin
vmail:*:9999:9999:Owner Dovecots Maildir User:/home/vmail:/usr/sbin/nologin

Создание пароля для пользователей в файле /usr/local/etc/dovecot/passfiles/%d/passwd :

выполняется командой

dovecotpw -s DIGEST-MD5 -u user1@mydomain.com , результат которой помещается в файл в ввиде строки:

user1@mydomain.com:{DIGEST-MD5}d55335f1dd73e17c7d9ecd2c0bde07c2

 

Документация на сайте dovecot http://wiki.dovecot.org/

или, например, http://itstream.net/tips/219/

 

dovecot 2 в связке с postfix

Для dovecot 2 несколько изменилась конфигурация.

Если конфиг для dovecot 1 нужно быстро конвертировать для dovecot 2, то даем команду doveconf -n > dovecot.conf.new , при этом dovecot.conf - это конфиг от dovecot 1 и получаем новый конфиг и диагностические сообщения об ошибках.

Вот один из вариантов рабочей настройки для связки с postfix в случае использования виртуальных пользователей без mysql.

cat /etc/dovecot.conf

ssl = yes

auth_debug = yes

auth_debug_passwords = yes
auth_mechanisms = plain login digest-md5
auth_username_format = %Lu
auth_verbose = yes
disable_plaintext_auth = no
log_path = /var/log/dovecot/dovecot.log
info_log_path = /var/log/dovecot/dovecot-info.log
log_timestamp = "%Y-%m-%d %H:%M:%S "

# тип и расположение почтового хранилища, куда имеет доступ только пользователь vmail ( см ниже ), 

mail_location = maildir:/home/vmail/%d/%n
mail_privileged_group = vmail

mail_uid = 1100

mail_gid = 1100

passdb {

# к файлу паролей должен иметь доступ только пользователь dovecot ( см service imap-login и service pop3-login )

args = /etc/dovecot/passfiles/%d/passwd
driver = passwd-file
}

# слушать только на ipv4 адресах

listen = *

protocols = imap pop3

service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
}
service imap-login {
chroot = login
}
service imap {
}
service pop3-login {
chroot = login
}
ssl_cert = </etc/ssl/dovecot/certs/dovecot.pem
ssl_key = </etc/ssl/dovecot/private/dovecot.pem
valid_chroot_dirs = /home/vmail/
verbose_proctitle = yes
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}

Тут надо проверить все пути на соответствие расположению файлов в системе.

Файл с паролями создается аналогично как и в версии 1 , только изменилась команда, теперь это 

doveadm-pw -s DIGEST-MD5 -u user1@mydomain.com

после чего нужно будет ввести пароль пользователя.

В конфигурационный файл postfix-а master.cf нужно добавить запись :

dovecot unix - n n - - pipe
flags=DRhu user=mail:mail argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}

Замечания относительно пользователя vmail - его можно успешно заменить системным пользователем mail, но поскольку mail - это системный пользователь (имеющий uid из системного диапазона), то для усиления безопасности системы на случай компрометирования этой учетной записи, создаем пользователя vmail с uid из диапазона выше чем у системных пользователей.

 

Отправить комментарий

CAPTCHA
Чтобы убедиться в том что Вы не робот, ответьте, пожалуйста, на вопрос
Fill in the blank