Homepage: Dovecot
Ниже настройка Dovecot версии 2.0.19 работающей с Тестирование отправки электронной почты Postfix.
Dovecot - свободный Как использовать IMAP (Internet Mail Access Protocol) протокол доступа к почте интернет - и POP (Post Office Protocol) -сервер, разрабатываемый в расчёте на безопасность, гибкость настройки и быстродействие.
# aptitude install dovecot-core dovecot-imapd
# service dovecot restart
# Enable installed protocols #protocols = imap !include_try /usr/share/dovecot/protocols.d/*.protocol listen = * base_dir = /var/run/dovecot/ instance_name = dovecot login_greeting = Dovecot ready. shutdown_clients = yes doveadm_socket_path = doveadm-server !include conf.d/*.conf
Настройка лог файлов Dovecot производится в файле conf.d/10-logging.conf. По умолчанию используется Использование syslog. Выведем сообщения в отдельный файл и настроим ротацию (Описание и примеры настройки ротации логов logrotate) лог- файлов
#log_path = syslog log_path = /var/log/dovecot.log debug_log_path = /var/log/dovecot-debug.log ## Logging verbosity and debugging. auth_verbose = yes auth_verbose_passwords = no auth_debug = yes auth_debug_passwords = yes mail_debug = yes verbose_ssl = yes
/var/log/dovecot*.log { rotate 8 missingok notifempty delaycompress sharedscripts postrotate doveadm log reopen endscript }
# выставлять no только для тестов SMTP AUTH без использования TLS, в остальных случаях yes disable_plaintext_auth = yes auth_mechanisms = plain login #auth_mechanisms = plain login cram-md5 digest-md5 !include auth-passwdfile.conf.ext
# %u - username # %n - user part in user@domain, same as %u if there's no domain # %d - domain part in user@domain, empty if there's no domain # %h - home directory # mail_location = maildir:/home/vmail/%d/%n mail_uid = 107 mail_gid = 115 first_valid_uid = 107 last_valid_uid = 109
#default_process_limit = 100 #default_client_limit = 1000 #default_vsz_limit = 256M #default_login_user = dovenull #default_internal_user = dovecot service imap-login { inet_listener imap { #port = 143 } inet_listener imaps { #port = 993 #ssl = yes } } service auth { # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 } # Auth process is run as this user. user = postfix group = postfix }
Настроем файл auth-passwdfile.conf.ext, в котором укажем, что имена и пароли пользователей, требующих SMTP AUTH, должны храниться в файле /etc/dovecot/users.
Записи в файле /etc/dovecot/users должны храниться в формате
user:password:uid:gid:(gecos):home:(shell):extra_fields
Поле user в виде user@domain, а поле password шифроваться при помощи SHA256-CRYPT
passdb { driver = passwd-file args = scheme=SHA256-CRYPT username_format=%u /etc/dovecot/users } userdb { driver = passwd-file args = username_format=%u /etc/dovecot/users }
Создадим хеш для поля password используя тестового пользователя user1@example.com с паролем 12345:
# doveadm pw -s SHA256-CRYPT -u user1@example.com -p 12345 {SHA256-CRYPT}$5$/y05qudkNwZipDS8$qur95mpxvQM6jneu5BnWeX8pzocdUMWCDkZn0mEca9C
Добавим полную запись в /etc/dovecot/users:
user1@example.com:{SHA256-CRYPT}$5$/y05qudkNwZipDS8$qur95mpxvQM6jneu5BnWeX8pzocdUMWCDkZn0mEca9C:postfix:postfix
Протестируем полученную запись для SMTP и IMAP при помощи утилиты doveadm
# doveadm auth -x service=smtp -x rip=192.0.2.143 user1@example.com 12345 passdb: user1@example.com auth succeeded extra fields: user=user1@example.com
Bash скрипт для добавления нового пользователя в Dovecot SASL
#!/bin/bash FUSERS='/etc/dovecot/users' echo -n 'Please enter username: ' read USER1=$REPLY HP2=`/usr/bin/doveadm pw -s SHA256-CRYPT -u $USER1` USERADD="$USER1:$HP2::postfix:postfix" echo $USERADD >> $FUSERS echo -n $USERADD echo -e "\n\nDONE\n"
# выставлять no только для тестов SMTP AUTH без использования TLS, в остальных случаях yes disable_plaintext_auth = yes auth_mechanisms = plain login #auth_mechanisms = plain login cram-md5 digest-md5 !include auth-sql.conf.ext
driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfix password=yourpassword default_pass_scheme = MD5-CRYPT user_query = SELECT '/var/vmail/%d/%u' as home,'maildir:/var/vmail/%d/%u'as mail, 1001 AS uid, 1001 AS gid FROM mailbox WHERE username = '%u' AND active = '1' password_query = SELECT username as user, password, '/var/vmail/%d/%u' AS userdb_home, 'maildir:/var/vmail/%d/%u' as userdb_mail, 1001 as userdb_uid, 1001 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'