Как настроить Postfix для использования виртуальных почтовых ящиков на Ubuntu 20.04
После установки и базовой настройки, Postfix может отправлять и получать письма, отправленные зарегистрированным в системе пользователям. В этом руководстве мы настроим Postfix для использования виртуальных почтовых ящиков на Ubuntu 20.04.
Настройка системы
В первую очередь требуется подготовка системы для работы виртуальных почтовых ящиков. Для этого создадим папку virtualmailboxes (для вашего доменного имени) — ее имя может быть произвольным. Если вы его измените, не забудьте использовать соответствующее имя папки при дальнейшей настройке. В эту папку Postfix будет добавлять файлы, соответствующие каждому виртуальному пользователю, после получения этим пользователем первого письма.
sudo mkdir -p /home/virtualmailboxes/domain-name.comТеперь давайте настроим пользователя virtualmail, группу и права на работу с этими папками.
sudo groupadd -g 2000 virtualmail
sudo useradd -g virtualmail -u 2000 virtualmail -d /home/virtualmailboxes -m
chown -R virtualmail:virtualmail /home/virtualmailboxesНастройка Postfix
Откроем файл настройки Postfix:
sudo nano /etc/postfix/main.cfПри обработке почты для одного домена, Postfix может работать в одном из двух режимов:
- доставлять почту пользователям системы, как было настроено ранее;
- работать с виртуальными почтовыми ящиками и доставлять почту виртуальным пользователям – что нам и требуется.
Так как для настройки первого варианта целевой домен добавляется в переменную mydestination, то мы удалим его оттуда и приведем к следующему виду:
mydestination = localhost.com, localhostДалее добавим следующие настройки в файл конфигурации:
virtual_mailbox_domains = domain-name.com
virtual_mailbox_base = /home/virtualmailboxes
virtual_mailbox_maps = hash:/etc/postfix/virtualmaps
virtual_minimum_uid = 500
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
Описание добавленных настроек:
- virtual_mailbox_domains указывает на то, что Postfix работает в режиме виртуального почтового ящика, а также содержит в себе домен, для которого обрабатывается почта;
- virtual_mailbox_base указывает путь для хранения почты;
- virtual_mailbox_maps указывает файл со списком виртуальных пользователей;
- virtual_minimum_uid, virtual_uid_maps, virtual_gid_maps – настройки системного пользователя, который будет управлять почтовой папкой.
Теперь создадим файл со списком виртуальных почтовых ящиков, путь к которому был указан в virtual_mailbox_maps.
sudo nano /etc/postfix/virtualmapsКаждая строка этого файла должна содержать адрес электронной почты в формате user@domain и путь к файлу для хранения почты в формате Домен/папка (адрес и пусть разделены пробелом). Путь к файлу указывается относительно значения опции virtual_mailbox_base файла настроек, в нашем случае – /home/virtualmailboxes.
user1@domain-name.com domain-name.com/user1
user2@domain-name.com domain-name.com/user2
support@domain-name.com domain-name.com/support
Сохраним файл. Для применения настроек нужно выполнить две команды:
postmap /etc/postfix/virtualmaps
postfix reloadТеперь протестируем
Чтобы проверить корректность настройки, отправим электронное письмо виртуальному пользователю от имени другого пользователя, созданного нами, и укажем его почту в качестве обратного адреса (параметры -u и -r):
sudo echo "Postfix virtual mailboxes test" | mail -r user2@domain-name.com -u user2@domain-name.com -s "Subject" user1@domain-name.comЧтобы просмотреть сообщения, полученные пользователем user1, используйте команду:
sudo cat /home/virtualmailboxes/domain-name.com/user1Результат:

При возникновении ошибки письмо может быть возвращено отправителю, именно поэтому мы отправляли его от имени уже созданного виртуального пользователя.
Для того, чтобы просмотреть почтовый ящик отправителя (user2), используйте команду:
sudo cat /home/virtualmailboxes/domain-name.com/user2Логи работы Postfix хранятся в /var/log/mail.log, сообщения об ошибках в /var/log/mail.err.