Dovecot

Homepage: Dovecot

Ниже настройка Dovecot версии 2.0.19 работающей с Тестирование отправки электронной почты Postfix.

Dovecot - свободный IMAP - и POP3 -сервер, разрабатываемый в расчёте на безопасность, гибкость настройки и быстродействие.

# aptitude install dovecot-core dovecot-imapd
  • Утилита doveconf служит для настройки Dovecot, запущенная без параметров выводит все настройки, если использовать ключ -n (или ) будут выведены только измененные нами настройки.
  • Утилита doveadm
  • Перезапуск
    # service dovecot restart
dovecot.conf
# 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) лог- файлов

conf.d/10-logging.conf
#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
/etc/logrotate.d/dovecot
/var/log/dovecot*.log {
  rotate 8 
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    doveadm log reopen
  endscript
}
conf.d/10-auth.conf
# выставлять 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
conf.d/10-mail.conf
#   %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
conf.d/10-master.conf
#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

conf.d/auth-passwdfile.conf.ext
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

users_pw.sh
#!/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"

Dovecot и MySQL

conf.d/10-auth.conf
# выставлять 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
dovecot-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'

Ссылки

PQ VPS сервера в 28+ странах.