Как настроить Postfix для использования виртуальных почтовых ящиков на Ubuntu 20.04

NK
Nikolay Krasilnikov
4 мая 2021

После установки и базовой настройки 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. Каждая строка этого файла должна содержать адрес электронной почты в формате user@domain и быть разделена пробелом. Домен/папка — путь к файлу для хранения почты относительно virtual_mailbox_base.

sudo nano /etc/postfix/virtualmaps
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

Результат:

From user2@domain-name.com Wed Mar 31 12:55:19 2021
Return-Path: <user2@domain-name.com>
X-Original-To: user1@domain-name.com
Delivered-To: user1@domain-name.com
Received: by domain-name.com (Postfix, from userid 0)
id 260A481421; Wed, 31 Mar 2021 12:55:19 +0000 (UTC)
Subject: Subject
To: <user1@domain-name.com>
X-Mailer: mail (GNU Mailutils 3.7)
Message-Id: <20210331125519.260A481421@domain-name.com>
Date: Wed, 31 Mar 2021 12:55:19 +0000 (UTC)
From: root <user2@domain-name.com>
Postfix virtual mailboxes test

Если письма нет, попробуйте посмотреть журналы отправки почты с помощью команды:

sudo cat /var/log/mail.log

При возникновении ошибки письмо может быть возвращено отправителю, именно поэтому мы отправляли его от имени уже созданного виртуального пользователя.
Для того, чтобы просмотреть почтовый ящик отправителя (user2), используйте команду:

sudo cat /home/virtualmailboxes/domain-name.com/user2

Остались вопросы? Задайте их нашему эксперту и получите квалифицированную помощь