В данном руководстве представлено, как организовать работу нескольких почтовых доменов (виртуальный хостинг) на сервере Ubuntu, используя PostfixAdmin. Этот инструмент с открытым исходным кодом служит интерфейсом для настройки и управления почтовым сервером на платформе Postfix, позволяя эффективно управлять множеством доменов и пользователей.
Содержание статьи
- 1 Начальные условия
- 2 Что необходимо выполнить.
- 3 Включение дополнительных доменов в интерфейс PostfixAdmin
- 4 Настройка записей MX, A и SPF для нового почтового домена
- 5 Конфигурация DKIM-подписки для нового домена
- 6 Формирование DMARC-записи для нового домена
- 7 Конфигурация RoundCube, Postfix и Dovecot для работы с несколькими доменами
- 8 Процесс получения сертификата TLS
- 9 Применение почтового приложения на вашем компьютере или мобильном устройстве
- 10 Проверка SPF и DKIM записей
- 11 Обратный DNS для нескольких почтовых доменов?
- 12 Некоторые TLS-сертификаты
- 13 Несколько сертификатов TLS для Postfix
- 14 Несколько сертификатов TLS для Dovecot
- 15 Задание Cron
Начальные условия
Для успешного выполнения данного руководства предполагается, что
- Вы уже сконфигурировали PostfixAdmin для работы с одним почтовым доменом, используя MariaDB/MySQL или PostgreSQL.
- Вы завершили четвертый этап настройки SPF и OpenDKIM.
- Вы настроили Roundcube Webmail для первого почтового домена, используя MariaDB/MySQL или PostgreSQL.
Что необходимо выполнить.
Если вы планируете использовать несколько почтовых доменов, вам следует
- Создать новый почтовый домен и пользователя через веб-интерфейс PostfixAdmin.
- Настроить записи MX, A и SPF для нового почтового домена.
- Настроить подпись DKIM для нового домена.
- Настроить запись DMARC для нового домена.
- Настроить RoundCube Webmail, а также почтовые серверы Postfix и Dovecot для работы с несколькими доменами.
Обратная проверка DNS применяется для сопоставления IP-адреса отправителя с именем хоста HELO. При добавлении нового почтового домена нет необходимости добавлять еще одну запись PTR.
Включение дополнительных доменов в интерфейс PostfixAdmin
Войдите в панель PostfixAdmin с учетной записью postmaster. ( https://postfixadmin. your-domain.com/ ) Затем перейдите в Список доменов ->Новый адрес для добавления дополнительного домена.

Имейте в виду, что для нового домена необходимо наличие записи A в DNS; в противном случае PostfixAdmin отобразит следующее сообщение об ошибке. Статус распространения DNS можно проверить на сайте dnsmap. io.
Недействительный домен domain2.com, и/или не обнаруживается в DNS
Затем необходимо внести пользователя в новый домен.

Настройка записей MX, A и SPF для нового почтового домена
Добавьте MX-запись для нового домена в вашем DNS-менеджере, как указано ниже.
Тип записи Имя Значение MX @ mail.domain2.com
A-запись указывает на адрес IP вашего сервера электронной почты.
Тип записи Имя Значение A mail IP-адрес-почтового-сервера
Если ваш сервер поддерживает IPv6, обязательно создайте запись AAAA.
После этого необходимо настроить SPF-запись, которая позволит MX-хосту отправлять письма для нового почтового домена.
Тип записи Имя Значение TXT @ v=spf1 mx ~all
Конфигурация DKIM-подписки для нового домена
В четвертой части этой серии руководств мы уже установили и настроили OpenDKIM для одного домена. Теперь необходимо указать OpenDKIM, чтобы он подписывал все исходящие сообщения для нового почтового домена.
Внесите изменения в файл таблицы для подписки OpenDKIM.
sudo nano /etc/opendkim/signing. table
Добавьте второй домен в соответствии с приведённым ниже примером.
*@domain1.com default._domainkey.domain1.com *@domain2.com default._domainkey.domain2.com
Создайте TXT-запись для второго домена в вашем DNS-менеджере. В поле имени укажите default._domainkey. Скопируйте содержимое в скобках и вставьте его в значение записи. Убедитесь, что вы убрали все двойные кавычки. (Можно сначала вставить текст в текстовый редактор, удалить кавычки, а затем скопировать очищенный текст обратно в DNS-менеджер. Возможно, вам потребуется также удалить другие недопустимые символы, такие как возврат каретки.)
После внесения изменений убедитесь в правильности TXT-записи, выполнив эту команду.
dig TXT default._domainkey.domain2.com
Теперь вы можете использовать следующую команду для проверки корректности вашей DKIM DNS-записи.
sudo opendkim-testkey - d domain2.com - s default - vvv
Если всё хорошо, вам станет видно.
opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key 'default._domainkey. domain2.com' opendkim-testkey: key secure opendkim-testkey: key OK
Если вы заметили сообщение «Ключ не защищен», не стоит волноваться. Это связано с тем, что для вашего доменного имени не активирован DNSSEC. DNSSEC — это протокол безопасности, предназначенный для защиты DNS-запросов. Для большинства доменных имен DNSSEC не включен. Вы можете продолжать следовать этому руководству.
Перезапустите OpenDKIM, чтобы он начал добавлять подписи к электронным письмам для второго домена.
sudo systemctl restart opendkim
Формирование DMARC-записи для нового домена
Для формирования DMARC-записи зайдите в управление DNS и добавьте запись типа TXT. В поле имени укажите _dmarc, а в поле значения вставьте следующий текст. Не забудьте создать адрес электронной почты [email protected].

Указанная запись DMARC представляет собой надежную основу. Для подробного ознакомления с концепцией DMARC рекомендуем обратиться к следующей статье.
- Настройка записи DMARC для защиты вашего домена от фальсификации электронной почты.
Конфигурация RoundCube, Postfix и Dovecot для работы с несколькими доменами
Я полагаю, что вы настроили Roundcube webmail для своего первого почтового домена.
Есть смысл предоставить возможность пользователям первого домена использовать mail.domain1.com, а пользователям второго домена — mail.domain2.com для доступа к RoundCube webmail.Я объясню, как это реализовать с помощью Apache и Nginx.
Если Roundcube работает на веб-сервере Apache, настройте виртуальный хост для второго домена.
sudo nano /etc/apache2/sites-available/mail.domain2.com.conf
Поместите указанный текст в документ.
ServerName mail.domain2.comКорневая директория документа находится по пути /var/www/roundcube/. Лог ошибок записывается в файл $/.mail.domain2.comОшибка в логах: CustomLog $/mail.domain2.com_доступ.log объединённыйОпции FollowSymLinks и разрешение на переопределение всех настроек. Разрешены опции FollowSymLinks и MultiViews, доступен полный переопределение, установлен порядок allow, deny, разрешен доступ со всех адресов
Закройте и сохраните файл, после чего активируйте этот виртуальный хост командой:
sudo a2ensite mail.domain2.com.conf
Перезапустите Apache, чтобы изменения начали действовать.
sudo systemctl reload apache2
В случае, если Roundcube работает на веб-сервере Nginx, настройте виртуальный хост для второго домена.
sudo nano /etc/nginx/conf.d/mail.domain2.com.conf
Поместите указанный текст в документ.
server < listen 80; server_name mail.domain2.comroot /var/www/roundcube/;
index index.php index. html index. htm;
error_log /var/log/nginx/;mail.domain2.comОшибка; журнал доступа /var/log/nginx/mail.domain2.com
.access; расположение /
< try_files $uri $uri/ /index.php; >location ~ \.php$ < try_files $uri =404; fastcgi_pass unix:/run/php/ php7.2-fpm .sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; > location ~ /.well-known/acme-challenge < allow all; >location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ < deny all; >location ~ ^/(bin|SQL)/ < deny all; >Длительное хранение данных в кэше браузера может ускорить загрузку страницы при повторных посещениях.~
- .(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$
< access_log off; log_not_found off; expires 360d; >>
Примечание: Если вы используете Ubuntu 20.04, замените php7.2-fpm на php7.4-fpm в указанном выше коде.
Сохраните изменения в файле и закройте его. После этого проверьте настройки Nginx.
sudo nginx - t
После успешного прохождения теста перезапустите Nginx, чтобы изменения начали действовать.
sudo systemctl reload nginx
Процесс получения сертификата TLS
Теперь примените Certbot для получения TLS-сертификата, который охватит все ваши почтовые домены. Это позволит иметь единый сертификат с несколькими доменными именами, что предотвратит появление предупреждений о безопасности в почтовых клиентах.
Обратите внимание, что в вышеуказанной команде мы использовали имя сертификата, основанное на первом почтовом домене, который будет присутствовать в пути к файлу. Это позволяет избежать необходимости вносить изменения в путь к файлу в конфигурациях Postfix или Dovecot.
Если вас попросят обновить текущий сертификат для добавления нового домена, введите U и нажмите Enter.

Теперь вы должны увидеть сообщение, подтверждающее успешное получение сертификата для нескольких доменов.

Введите следующую команду, чтобы разрешить доступ к сертификатам TLS от Let’s Encrypt.
sudo setfacl - R - m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/
Перезапустите Apache или Nginx, чтобы обновить сертификат.
sudo systemctl reload apache2 sudo systemctl reload nginx
Теперь у вас есть возможность использовать различные домены для доступа к веб-почте RoundCube. Также потребуется перезагрузить SMTP-сервер Postfix и IMAP-сервер Dovecot, чтобы они обновили сертификат. Это все, что необходимо сделать для того, чтобы Postfix и Dovecot могли обслуживать несколько доменов.
sudo systemctl reload postfix dovecot
Применение почтового приложения на вашем компьютере или мобильном устройстве
Откройте ваш настольный почтовый клиент, например, Mozilla Thunderbird, и настройте почтовый аккаунт для второго домена.
- В разделе настроек входящего сервера выберите протокол IMAP. Введите mail.domain2.com в поле имени сервера, установите порт 143 и выберите STARTTLS. В качестве метода аутентификации выберите стандартный пароль.
- В настройках исходящего сервера выберите протокол SMTP, укажите mail.domain2.com в качестве адреса сервера, установите порт 587 и выберите STARTTLS. В качестве метода аутентификации выберите стандартный пароль.

Рекомендуется применять порт 993 с SSL/TLS для IMAP и порт 465 с SSL/TLS для SMTP. Порт 25 не следует использовать для отправки исходящих писем через SMTP.
Хотя SMTP-сервер Postfix и IMAP-сервер Dovecot обращаются к первому почтовому домену (mail.domain1.com) при взаимодействии, теперь они применяют многодоменные сертификаты, что исключает появление предупреждений о сертификате в почтовом клиенте.
Проверка SPF и DKIM записей
Теперь вы можете воспользоваться настольным почтовым клиентом или веб-интерфейсом для отправки тестового письма на адрес [email protected], чтобы получить бесплатный отчет по аутентификации электронной почты. Вот отчет, который я получил от port25.com.

Обязательно оцените свой электронный рейтинг на платформе https://www.mail-tester.com, а также проведите тестирование рассылки с помощью GlockApps.
Если проверка DKIM не была успешной, вы можете посетить сайт https://www.dmarcanalyzer.com/dkim/dkim-check/, чтобы выяснить, имеются ли проблемы в вашей DKIM-записи.

Вот несколько дополнительных рекомендаций, которые я хотел бы предложить в этой статье: 7 действенных способов избежать попадания ваших электронных писем в спам. Хотя это потребует определённых усилий и времени, в итоге ваши письма окажутся в папке «Входящие», если вы будете следовать этим советам.
Обратный DNS для нескольких почтовых доменов?
Обратный DNS (rDNS), или PTR-запись, служит для подтверждения соответствия IP-адреса отправителя имени хоста HELO. При добавлении нового почтового домена дополнительную PTR-запись создавать не требуется. Ваш rDNS должен быть настроен на одно имя хоста, которое установлено в Postfix, и это можно отобразить с помощью следующей команды.
postconf myhostname
rDNS представляет собой запись, предназначенную для IP-адресов, а не для доменных имен. Если у вас имеется только один IP-адрес, вам потребуется всего одна запись rDNS, которая будет ссылаться на конкретное имя хоста. Процесс проверки обратного DNS не анализирует, какое доменное имя указано в поле From: вашего электронного письма. Если для вашего IP-адреса существует запись rDNS и имя хоста может быть успешно сопоставлено обратно с этим IP-адресом, вы сможете пройти проверку обратного DNS.
Кроме того, вам не требуется изменять указанные настройки в Postfix при размещении нескольких доменов на одном сервере.
- myhostname
- myorigin
- mydestination
Электронные хостинговые сервисы, такие как G Suite и Microsoft Exchange Online, применяют единственное имя хоста для своих серверов при отправке писем клиентам. Все сообщения, отправленные пользователями G Suite, имеют в своем имени хоста google.com, в то время как письма от пользователей Microsoft Exchange Online содержат outlook.com. Это правило также распространяется на другие почтовые провайдеры, такие как Mailchimp, SendinBlue, SendPluse и другие. Все они используют одно имя хоста для каждого сервера, и один IP-адрес связан только с одной записью rDNS.
Если ваши SMTP-серверы недоступны из сети Интернет, то проблема может заключаться в одном из первых четырех пунктов. Если же сервер доступен, но письма все равно не приходят, стоит просмотреть журнал почты (/var/log/mail.log) для выявления возможных ошибок в настройках Postfix и Dovecot.
Некоторые TLS-сертификаты
Если вы администрируете почтовые серверы для нескольких клиентов, возможно, вам не захочется объединять все TLS-сертификаты в один файл, так как это может раскрыть данные о ваших клиентах. Вместо использования команды для создания сертификата на несколько доменов,
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp - d mail.domain1.com,mail.domain2.com
Вы можете воспользоваться следующей командой для получения отдельного TLS-сертификата для второго почтового домена.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp - d mail.domain2.com
Затем необходимо выполнить настройку Postfix и Dovecot.
Несколько сертификатов TLS для Postfix
Если вы применяете Postfix версии 3.4 и выше, у вас есть возможность использовать несколько TLS-сертификатов. Для этого отредактируйте файл main.cf.
sudo nano /etc/postfix/main.cf
В конец этого файла добавьте строку для активации нескольких TLS-сертификатов.
tls_server_sni_maps = hash:/etc/postfix/sni_maps
Сохраните изменения и закройте файл, после этого создайте новый файл sni_maps.
sudo nano /etc/postfix/sni_maps
В этом документе укажите каждое имя почтового хоста вместе с соответствующим файлом сертификата.
mail.domain1.com /etc/letsencrypt/live/mail.domain1.com/privkey. pem /etc/letsencrypt/live/mail.domain1.com/fullchain. pem mail.domain2.com /etc/letsencrypt/live/mail.domain2.com/privkey. pem /etc/letsencrypt/live/mail.domain2.com/fullchain. pem
Сохраните файл и закройте его. После этого приступите к созданию поисковой таблицы.
sudo postmap - F /etc/postfix/sni_maps
sudo systemctl restart postfix
Для декодирования каждого значения в SNI-карте в формате base64 необходимо применять параметр — F в postmap, иначе в журнале /var/log/mail.log Postfix сообщит об ошибке неверного значения BASE64. Приведенная команда является неправильной.
sudo postmap /etc/postfix/sni_maps
Несколько сертификатов TLS для Dovecot
При использовании нескольких TLS-сертификатов в Postfix необходимо также интегрировать их в Dovecot. Для этого внесите изменения в файл Dovecot 10-ssl.conf.
sudo nano /etc/dovecot/conf.d/10-ssl.conf
Вот несколько строк, которые вы можете обнаружить.
ssl_cert =</etc/letsencrypt/live/mail.domain1.com/fullchain.pem ssl_key =</etc/letsencrypt/live/mail.domain1.com/privkey.pem
После этого вставьте следующие строки.
local_name mail.domain1.com < ssl_cert =</etc/letsencrypt/live/mail.domain1.com/fullchain.pem ssl_key =</etc/letsencrypt/live/mail.domain1.com/privkey.pem > local_name mail.domain2.com < ssl_cert =</etc/letsencrypt/live/mail.domain2.com/fullchain.pem ssl_key =</etc/letsencrypt/live/mail.domain2.com/privkey.pem >
Сохраните изменения в файле и закройте его. После этого перезапустите Dovecot.
sudo systemctl restart dovecot
Используйте следующую команду для предоставления доступа к чтению TLS-сертификатов Let’s Encrypt.
sudo setfacl - R - m u:www-data:rx /etc/letsencrypt/live/ /etc/letsencrypt/archive/
Задание Cron
При использовании карты SNI в Postfix после обновления TLS-сертификата необходимо выполнить команду.
sudo postmap - F /etc/postfix/sni_maps
Если это не будет сделано, почтовые клиенты могут уведомить вас о том, что ваш TLS-сертификат просрочен. Для автоматизации процесса вы можете добавить эту команду в файл Crontab.
sudo crontab - e
Клиент веб-сервера Apache:
@daily certbot renew --quiet; /usr/sbin/postmap - F /etc/postfix/sni_maps; systemctl reload postfix dovecot apache2
Пользователь для веб-сервера Nginx:
@daily certbot renew --quiet; /usr/sbin/postmap - F /etc/postfix/sni_maps; systemctl reload postfix dovecot nginx

