Exim с авторизацией из файла

Если на почтовом сервере немного пользователей, гораздо проще использовать авторизацию через текстовый файл, нежели через SQL.

Exim

В секции begin authenticators необходимо написать:

begin authenticators
plain_server:
  driver = plaintext
  public_name = PLAIN
  server_condition = \
    ${if eq{$auth3}{${extract{1}{:}{${lookup{$auth2}lsearch{/etc/dovecot/users}}}}}{1}{0}}
  server_set_id = $auth2
  server_prompts = :

В данном случае используется общий с Dovecot’ом файл пользователей /etc/dovecot/users вида:

email1@mydomain.com:Password:1000:12::::userdb_mail=maildir:/var/mail/email1@mydomain.com
email2@mydomain.com:Password:1000:12::::userdb_mail=maildir:/var/mail/email2@mydomain.com
email1@mydomain1.com:Password:1000:12::::userdb_mail=maildir:/var/mail/email1@mydomain1.com
email1@mydomain2.com:Password:1000:12::::userdb_mail=maildir:/var/mail/email1@mydomain2.com

где Password — пароль в не зашифрованном виде, /var/mail/email1@mydomain.com — домашний каталог для виртуального пользователя, 1000 и 12 — поля uid и gid (пользователь и группа).

Dovecot

Файл /etc/dovecot/conf.d/auth-passwdfile.conf.ext для авторизации через файл:

# Authentication for passwd-file users. Included from 10-auth.conf.
#
# passwd-like file with specified location.
# 

passdb {
  driver = passwd-file
  args = scheme=PLAIN username_format=%u /etc/dovecot/users
}

userdb {
  driver = passwd-file
  args = username_format=%u /etc/dovecot/users
}