Как настроить несколько почтовых доменов в PostfixAdmin на Ubuntu

В данном руководстве представлено, как организовать работу нескольких почтовых доменов (виртуальный хостинг) на сервере Ubuntu, используя PostfixAdmin. Этот инструмент с открытым исходным кодом служит интерфейсом для настройки и управления почтовым сервером на платформе Postfix, позволяя эффективно управлять множеством доменов и пользователей.

Начальные условия

Для успешного выполнения данного руководства предполагается, что

  • Вы уже сконфигурировали 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/ ) Затем перейдите в Список доменов ->Новый адрес для добавления дополнительного домена.

Postfixadmin для управления несколькими доменами

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

Недействительный домен domain2.com, и/или не обнаруживается в DNS

Затем необходимо внести пользователя в новый домен.

Добавление новой почтовой ящики в Postfixadmin.

Настройка записей 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-менеджер. Возможно, вам потребуется также удалить другие недопустимые символы, такие как возврат каретки.)

Читайте также:  Простой способ настройки DNS резольвера с использованием TLS и Nginx на Ubuntu

После внесения изменений убедитесь в правильности 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].

создать TXT-запись DMARC

Указанная запись 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-сертификата, который охватит все ваши почтовые домены. Это позволит иметь единый сертификат с несколькими доменными именами, что предотвратит появление предупреждений о безопасности в почтовых клиентах.

Читайте также:  Полное руководство по созданию и настройке LVM в Linux для оптимального управления

Обратите внимание, что в вышеуказанной команде мы использовали имя сертификата, основанное на первом почтовом домене, который будет присутствовать в пути к файлу. Это позволяет избежать необходимости вносить изменения в путь к файлу в конфигурациях Postfix или Dovecot.

Если вас попросят обновить текущий сертификат для добавления нового домена, введите U и нажмите Enter.

Сертификаты для нескольких доменов с использованием Certbot и IredMail.

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

IredMail Nginx поддержка нескольких доменов.

Введите следующую команду, чтобы разрешить доступ к сертификатам 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. В качестве метода аутентификации выберите стандартный пароль.

postfixadmin-multiple-domain-postfix-dovecot

Рекомендуется применять порт 993 с SSL/TLS для IMAP и порт 465 с SSL/TLS для SMTP. Порт 25 не следует использовать для отправки исходящих писем через SMTP.

Хотя SMTP-сервер Postfix и IMAP-сервер Dovecot обращаются к первому почтовому домену (mail.domain1.com) при взаимодействии, теперь они применяют многодоменные сертификаты, что исключает появление предупреждений о сертификате в почтовом клиенте.

Проверка SPF и DKIM записей

Теперь вы можете воспользоваться настольным почтовым клиентом или веб-интерфейсом для отправки тестового письма на адрес [email protected], чтобы получить бесплатный отчет по аутентификации электронной почты. Вот отчет, который я получил от port25.com.

постфикс, spf, dkim на ubuntu

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

Если проверка DKIM не была успешной, вы можете посетить сайт https://www.dmarcanalyzer.com/dkim/dkim-check/, чтобы выяснить, имеются ли проблемы в вашей DKIM-записи.

Проверка записи DKIM с помощью анализа DMARC.

Вот несколько дополнительных рекомендаций, которые я хотел бы предложить в этой статье: 7 действенных способов избежать попадания ваших электронных писем в спам. Хотя это потребует определённых усилий и времени, в итоге ваши письма окажутся в папке «Входящие», если вы будете следовать этим советам.

Обратный DNS для нескольких почтовых доменов?

Обратный DNS (rDNS), или PTR-запись, служит для подтверждения соответствия IP-адреса отправителя имени хоста HELO. При добавлении нового почтового домена дополнительную PTR-запись создавать не требуется. Ваш rDNS должен быть настроен на одно имя хоста, которое установлено в Postfix, и это можно отобразить с помощью следующей команды.

postconf myhostname

rDNS представляет собой запись, предназначенную для IP-адресов, а не для доменных имен. Если у вас имеется только один IP-адрес, вам потребуется всего одна запись rDNS, которая будет ссылаться на конкретное имя хоста. Процесс проверки обратного DNS не анализирует, какое доменное имя указано в поле From: вашего электронного письма. Если для вашего IP-адреса существует запись rDNS и имя хоста может быть успешно сопоставлено обратно с этим IP-адресом, вы сможете пройти проверку обратного DNS.

Читайте также:  Настройка Monit на Linux: Пошаговое руководство

Кроме того, вам не требуется изменять указанные настройки в 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