Photo by Mathyas Kurmann
Почтовый сервер Postfix + Dovecot для виртуальных пользователей

Почтовый сервер для виртуальных пользователей на Postfix и Dovecot

24.10.23

Теперь поговорим об абонентах, которые не имеют аккаунт на сервере — виртуальных пользователях. Про почтовый сервер для системных пользователей писал ране. Для виртуальных аккаунтов, кроме основных настроек необходимо настроить ещё файл пользователей.

Настройка Dovecot

За аутентификацию отвечают настройки в файле /etc/dovecot/conf.d/10-auth.conf Там надо раскомментировать строку: !include auth-passwdfile.conf.ext и соответственно, в файл /etc/dovecot/conf.d/auth-passwdfile.conf.ext внести изменения:

passdb {
  driver = passwd-file
  args = /etc/dovecot/users
}

userdb {
  driver = static
  args = uid=vmail gid=vmail /var/mail/vusers/%d/%n

  # Override fields from passwd-file
  override_fields = home=/var/mail/vusers/%d/%n
}

секция passdb

определяет параметры аутентификации пользователей, после чего станет доступна аутентификация из файла /etc/dovecot/users (файл можно переопределять).

секция userdb

определяет расположение почты виртуальных пользователей. В нашем случае это /var/mail/vusers/%d/%n

где %d — это домен, а %n это имя пользователя (всё что до @domain.tld).

Еще не забудьте создать пользователя vmail и группу vmail. И присвойте этого пользователя папке /var/mail/vusers

sudo chown vmail:vmail /var/mail/vusers

Теперь вернёмся к аутентификации пользователей. За это у нас отвечает файл /etc/dovecot/users. Его формат довольно прост:

#user@domain.tld:{pass_type}pass:::
user@webexit.ru:{CRYPT}$2y$05$EnRAYxmU3mH.DYUNLZdGbNwO/vOwqx8fJjzTEJiPSQ6:::
user2@webexit.ru:{PLAIN}mypassword:::

Если не хотите оставлять пароль в открытом виде ({PLAIN}), то надо воспользоваться утилитой:

$ doveadm pw 
Enter new password: 
Retype new password:
{CRYPT}$2y$05$EnRAYxmU3mH.DYUNLZdGbNwO/vOwqx....

Введите пароль, повторите его и утилита выдаст вам строку, которую надо скопировать в файл /etc/dovecot/users сразу после логина и домена.

Все, после этого станет работать Dovecot (после перезапуска) и пользователи смогут авторизоваться. Теперь остается настроить Postfix, чтобы почта попадала в эти почтовые ящики.

Настройка Postfix

Создадим файл виртуальных доменов /etc/postfix/vhosts следующего содержания:

domain.tld
mail.domain.tld

И подключим его в файле /etc/postfix/main.cf добавив строчку:

virtual_mailbox_domains = /etc/postfix/vhosts

Далее, сами пользователи. Для них создадим файл /etc/postfix/vmaps следующего содержания:

#user@domain.tld            vusers/domain.tld/user/Maildir/
webadmin@webexit.ru         vusers/webexit.ru/webadmin/Maildir/

И выполнить команду:

postmap /etc/postfix/vmaps

Далее, подключим его в файле /etc/postfix/main.cf добавив строчки:

virtual_mailbox_base = /var/mail
virtual_mailbox_maps = hash:/etc/postfix/vmaps
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024

Где 1024 это uid и gid вашего пользователя vmail (у вас будут другие цифры).

Алиасы для виртуальных пользователей

Механизм пересылки сообщений для виртуальных пользователей достаточно прост и одновременно имеет гибкий функционал.

Добавим в файл /etc/postfix/main.cf следующий параметр:

virtual_alias_maps = hash:/etc/postfix/valiases

Затем создадим и отредактируем файл /etc/postfix/valiases

#pattern address, address
user2@domain.tld   user@domain.tld

можно использовать просто user без доменной части, тогда будет подставлен домен из $myorigin либо использовать конструкцию @domain.tld address тогда все остальные писма будут пересылаться на этот адрес.