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

Данное руководство поможет вам настроить несколько почтовых доменов (виртуальный хостинг) на сервере Debian с использованием PostfixAdmin — веб-интерфейса с открытым исходным кодом для управления и настройки почтового сервера на базе Postfix, поддерживающего работу с множеством доменов и пользователей.

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

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

  • Вы уже завершили настройку PostfixAdmin с одним почтовым доменом.
  • Вы выполнили шаг 4 для настройки SPF и OpenDKIM.
  • Вы успешно настроили Roundcube Webmail для вашего первого почтового домена.

Что необходимо выполнить?

Если планируете использовать несколько почтовых доменов, вам потребуется

  • Добавить почтовый домен и создать нового пользователя через веб-интерфейс PostfixAdmin.
  • Настроить записи MX, A и SPF для нового домена электронной почты.
  • Настроить DKIM-подпись для нового домена.
  • Создайте запись DMARC для нового домена.
  • Конфигурация RoundCube Webmail, Postfix и Dovecot для работы с несколькими доменами.

Обратите внимание: обратная проверка DNS предназначена для подтверждения того, совпадает ли IP-адрес отправителя с именем хоста HELO. При добавлении нового почтового домена добавление еще одной записи PTR не требуется.

Включение дополнительных доменов в интерфейсе PostfixAdmin.

Войдите в панель PostfixAdmin с учетной записью postmaster. ( https://postfixadmin. your-domain.com/ ) Затем перейдите в Список доменов ->Добавьте новый домен для создания нового адреса.

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

Имейте в виду, что для нового домена необходимо наличие DNS-записи типа A, в противном случае 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 для недавно добавленного домена

В части 4 данного учебного курса мы уже установили и настроили OpenDKIM для одного домена. Теперь необходимо настроить OpenDKIM для подписи всех исходящих писем нового почтового домена.

Внесите изменения в файл таблицы подписей OpenDKIM.

sudo nano /etc/opendkim/signing. table

Добавьте второй домен, как указано ниже.

*@domain1.com default._domainkey.domain1.com *@domain2.com default._domainkey.domain2.com

Измените файл с таблицей ключей.

sudo nano /etc/opendkim/key. table

Добавьте второй домен, как указано ниже.

default._domainkey.domain1.com domain1.com:default:/etc/opendkim/keys/domain1.com/default. private default._domainkey.domain2.com domain2.com:default:/etc/opendkim/keys/domain2.com/default. private

Измените документ с доверенными хостами.

sudo nano /etc/opendkim/trusted. hosts

Добавьте второй домен, как указано ниже.

127.0.0.1 localhost .domain1.com .domain2.com

Теперь необходимо создать пару закрытый/открытый ключ для второго домена. Для этого создайте отдельную папку, предназначенную для второго домена.

sudo mkdir /etc/opendkim/keys/domain2.com

Создайте ключи с помощью утилиты opendkim-genkey.

sudo opendkim-genkey - b 2048 - d domain2.com-D /etc/opendkim/ключи/domain2.com - s default - v

Команда, указанная выше, создаст ключи размером 2048 бит. Параметр — d задает домен, а параметр — D указывает каталог для хранения ключей. Мы используем default в качестве селектора (-s). После завершения команды закрытый ключ будет сохранен в файле default. private, а открытый ключ будет записан в файл default. txt.

Читайте также:  Расширенный Bash-скрипт для резервного копирования базы данных MySQL

Установите opendkim в качестве владельца приватного ключа.

sudo chown opendkim:opendkim /etc/opendkim/keys/domain2.com/default. private

Выведите публичный ключ.

sudo cat /etc/opendkim/keys/domain2.com/default. txt

Строка, находящаяся после параметра p, представляет собой открытый ключ.

добавить новый домен в opendkim

В вашем менеджере DNS добавьте TXT-запись для второго домена. В поле имени укажите default._domainkey. Скопируйте всё, что находится в скобках, и вставьте в поле значений. Убедитесь, что все двойные кавычки удалены. (Рекомендуется сначала вставить текст в текстовый редактор, убрать все двойные кавычки, а затем скопировать в менеджер DNS. Ваш DNS-менеджер может также потребовать удаления других недопустимых символов, таких как возврат каретки.)

После внесения изменений проверьте файл TXT, используя эту команду.

dig TXT default._domainkey.domain2.com

Теперь вы можете использовать следующую команду, чтобы убедиться в правильности вашей DNS-записи DKIM.

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-запросов. Большинство доменных имен не используют данный стандарт. Вы можете продолжать следовать этому руководству.

Перезапустите OpenDKIM, чтобы он начал добавлять подписи к электронным письмам для второго домена.

sudo systemctl restart opendkim

Формирование записи DMARC для нового домена.

Для формирования DMARC-записи зайдите в ваш DNS-менеджер и добавьте TXT-запись. Введите _dmarc в поле имени, а в поле значения укажите следующую информацию. Учтите, что необходимо создать электронный адрес [email protected].

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

Представленная выше запись DMARC служит надежной основой. Для получения полного объяснения DMARC, пожалуйста, перейдите к следующей статье.

  • Настройка DMARC-записи для обеспечения безопасности вашего домена от фальсификации электронной почты.

Конфигурация RoundCube, Postfix и Dovecot для работы с несколькими доменами.

Скорее всего, вы настроили веб-почту Roundcube для вашего первого почтового домена.

Пользователям первого домена стоит обращаться к веб-почте RoundCube через mail.domain1.com, а тем, кто использует второй домен, — через mail.domain2.com. В этом руководстве я объясню, как настроить это с помощью Apache и Nginx.

Apache

Если 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_access.log в формате combinedОпции FollowSymLinks, разрешение переопределения - все. Настройки включают следующее: Options FollowSymLinks MultiViews, разрешение на переопределение AllowOverride All, порядок доступа order allow, deny, и разрешение доступа allow from all.

Сохраните файл и закройте его. После этого активируйте данный виртуальный хост, используя:

sudo a2ensite mail.domain2.com.conf

Перезапустите Apache, чтобы обновления начали действовать.

sudo systemctl reload apache2

Nginx

Если 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доступ; расположение /< try_files $uri $uri/ /index.php; >location ~ \.php$ < try_files $uri =404; fastcgi_pass unix:/run/php/ php8.0-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; >>

    Сохраните файл и закройте его. После этого выполните проверку конфигураций Nginx.

    sudo nginx - t

    После успешного завершения тестирования перезапустите Nginx, чтобы новые настройки начали действовать.

    sudo systemctl reload nginx

    Оформление сертификата TLS

    Теперь применяйте Certbot для получения TLS-сертификата для всех ваших почтовых доменов. Это позволит вам получить один сертификат с несколькими доменными именами, благодаря чему почтовые клиенты не будут показывать предупреждения о безопасности.

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

    Совет: Для IMAP можно применять порт 993 с SSL/TLS шифрованием, а для SMTP — порт 465 с тем же типом шифрования. Использование порта 25 для отправки исходящей почты через SMTP не рекомендуется.

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

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

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

    Почтовый сервер Postfix с поддержкой SPF и DKIM на Ubuntu

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

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

    анализатор DMARC, проверка записи DKIM

    Что предпринять, если ваши электронные сообщения продолжают попадать в спам?

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

    rDNS для нескольких доменов электронной почты?

    Обратная система доменных имен (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, SendPulse и так далее. Все они применяют одно имя хоста для одного сервера, и каждый IP-адрес соответствует только одной записи rDNS.

    Не получается получать сообщения от Gmail, Hotmail, Yahoo Mail и других почтовых сервисов.

    Если у вас возникли проблемы с получением писем от Gmail, Hotmail, Yahoo Mail и других сервисов, это могут быть следующие причины:

    1. Некорректная MX-запись или она еще не обновлена в сети.
    2. Имя хоста вашего почтового сервера не имеет DNS A-записи или она еще не обновлена в сети.
    3. Ваш брандмауэр блокирует входящие подключения на порт 25. Возможно, ваш почтовый сервер находится за NAT?
    4. Postfix не принимает подключения на открытом IP-адресе.
    5. Изучите журнал почты (/var/log/mail.log), чтобы определить, существуют ли дополнительные ошибки в настройках Postfix и Dovecot.

    Для проверки доступности вашего SMTP-сервера из Интернета воспользуйтесь инструментом Email Checker от Network Tools. Введите адрес электронной почты вашего домена и нажмите на кнопку «Go». Как показано на приведенном ниже скриншоте, инструмент успешно обнаружил MX-запись моего домена, что подтверждает доступность моего SMTP-сервера в сети.

    проверка электронной почты

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

    Необходимо применить параметр — F в postmap для декодирования каждого значения в карте SNI, закодированного в формате base64. В противном случае Postfix сгенерирует ошибку о некорректном значении BASE64 в файле /var/log/mail.log. Приведенная ниже команда является неправильной.

    sudo postmap /etc/postfix/sni_maps

    Несколько сертификатов TLS для Dovecot.

    При использовании нескольких TLS-сертификатов в Postfix, необходимо также добавить их в Dovecot. Для этого отредактируйте файл 10-ssl.conf в Dovecot.

    sudo nano /etc/dovecot/conf.d/10-ssl.conf

    Вы можете обнаружить следующие фразы.

    ssl_cert =mail.domain1.comssl_key = /fullchain. pemmail.domain1.com/privkey. pem

    После этого вставьте следующие строки.

    local_name mail.domain1.com < ssl_cert =mail.domain1.comssl_key = /fullchain. pemmail.domain1.com/privkey. pem > local_name mail.domain2.com < ssl_cert =mail.domain2.comssl_key = /fullchain. pemmail.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

    Заключение

    Вот и всё! Надеюсь, этот гайд оказался полезным для настройки нескольких доменов электронной почты с помощью PostfixAdmin. Как всегда, если вам понравилась эта статья, подписывайтесь на нашу бесплатную рассылку, чтобы получать больше полезных советов и рекомендаций.