Теперь поговорим об абонентах, которые не имеют аккаунт на сервере — виртуальных пользователях. Про почтовый сервер для системных пользователей писал ране. Т.е. это почтовый сервер рассчитанный на широкий круг абонентов. Например, для компании 5 – 30 сотрудников получающих почту на своих почтовых клиентах (Outlook, Thunderbird).
Немного теории
В начале пару слов о том что и для чего и кто что делает и зачем.
За прием и отправку почты полностью отвечает MTA (Mail Transfer Agent). Пожалуй самый популярный это Postfix, о нём мы и будем говорить. Это по сути почтальон, который принимает почту как от клиента (Outlook, Thunderbird), так и от другого почтового сервера (MTA) и передаёт её на другие почтовые сервера (MTA). Единственное, чего он не делает – он не передаёт принятую почту клиентам (Outlook, Thunderbird). За это отвечает Mail Delivery Agent (MDA). В нашем случае это Dovecot.
Dovecot обеспечивает доступ к почтовым ящикам пользователей через стандартные протоколы IMAP и POP3, позволяя почтовым клиентам (Outlook, Thunderbird) скачивать и просматривать электронную почту с сервера. Кроме того, Dovecot управляет почтовыми ящиками в форматах mbox или Maildir, обеспечивает безопасный доступ с помощью SSL/TLS и различных методов аутентификации.
Настройка Dovecot
Чтобы установить базовый сервер Dovecot с общими функциями POP3 и IMAP, выполните следующую команду:
apt install dovecot-imapd dovecot-pop3d
Для относительно небольшого числа абонентов настройки аутентификации можно хранить в файле. За аутентификацию отвечают настройки в файле /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:::
user2@webexit.ru:{PLAIN}mypassword:::
Если не хотите оставлять пароль в открытом виде ({PLAIN}), то для хеширования пароля надо воспользоваться утилитой doveadm.
Введите пароль, повторите его и утилита выдаст вам строку:
$ doveadm pw
Enter new password:
Retype new password:
{CRYPT}$2y$05$EnRAYxmU3mH.DYUNLZdGbNwO/vOwqx....
которую надо скопировать в файл /etc/dovecot/users сразу после логина и домена:
user@webexit.ru:{CRYPT}$2y$05$EnRAYxmU3mH.DYUNLZdGbNwO/vOwqx8fJjzTEJiPSQ6:::
Далее, в файле /etc/dovecot/conf.d/10-ssl.conf надо настроить SSL:
ssl = required
ssl_key = </etc/letsencrypt/live/mail.your-site.ru/privkey.pem
ssl_cert = </etc/letsencrypt/live/mail.your-site.ru/fullchain.pem
Тут должны быть пути до сертификата Let’s Encrypt, подробнее о нём и настройках писал вот тут.
Нужно открыть порты:
- IMAP — 143
- IMAPS — 993
- POP3 — 110
- POP3S — 995
Все, после этого станет работать Dovecot (после перезапуска) и пользователи смогут авторизоваться.
Теперь остается настроить Postfix, чтобы почта попадала в эти почтовые ящики.
Установка и настройка Postfix
Как уже сказал ранее, роль MTA у нас будет выполнять Postfix. Есть ещё похожие MTA, например exim4, но если вы также используете сервер на базе Ubuntu, то тут Postfix используется по умолчанию. И, соответственно, в Ubuntu 20.04 — 24.04 установка проста:
sudo apt install postfix
Если Postfix установлен ранее, то можно сделать реконфигурацию повторно:
sudo dpkg-reconfigure postfix
Далее, ответьте на вопросы:

Нужно выбрать «Интернет-сайт», затем указать свой домен:

Далее, утилитой postconf надо сделать следующие настройки:
postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth'
postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_security_options = noanonymous,noplaintext'
postconf -e 'smtpd_sasl_tls_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'smtpd_relay_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
Здесь мы сделали важные настройки, если их не сделать, спамеры быстро найдут ваш почтовый сервер и будут использовать его для рассылки. Подробнее про шифрование и TLS писал тут.
Далее, надо выпустить сертификаты. Можно сделать это от Lets’encript, либо в самом крайнем случае – самоподписные. После чего настраиваем TLS
postconf -e 'smtp_tls_security_level = may'
postconf -e 'smtpd_tls_security_level = may'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/ssl/private/server.key'
postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt'
postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
Все установки сохраняются в файле:
/etc/postfix/main.cf
Далее, создадим файл виртуальных доменов /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 тогда все остальные писма будут пересылаться на этот адрес.
Не забудьте открыть порты, для Postfix это 25, 587 и 465 (устарел, но пока используется).
Далее, можно настроить DKIM, вот тут мы писали как и ещё SPF + DMARC, вот тут есть статья об этом.