Дано:
- домен example.com - этот домен используется всеми для примера, такого сайта не существует ))),
- сайт работает через Cloudflare,
- панель управления - FastPanel.
Почта будет пригодна для рассылок, со всякими DKIM, DMARC и SPF и сертификатами, чтобы письма не попадали в спам и можно было подключить внешний сборщик почты, например Thunderbird.
Сам часто забываю весь процесс, поэтому памятка скорее для меня самого.
Кратко шаги, которые необходимо выполнить:
- Создаём обычный поддомен mail.example.com
- Создаём ДВА почтовых домена: example.com и mail.example.com (зачем именно два - дальше дал объяснение).
- Выпускаем сертификаты.
- Создаём почтовый ящик, например [email protected].
- Добавляем DNS записи в Cloudflare.
- Profit.
Соединение будет происходить через поддомен, получать его сертификат и затем уже запрашивать нужный Вам почтовый ящик из основного домена.
Таблица содержимого
Шаг 1: создаём поддомен mail.example.com
Это исключительно технический шаг. Непосредственной необходимости в нём нет, однако он используется для выпуска сертификата.
Переходим на главную FastPanel > Create Site > Create site manually:
- В название домена вводим mail.example.com
- Галочку на Add www alias снимаем.
На следующем шаге отключаем базу данных, FTP аккаунт а в качестве Backend можно выбрать Static Content - для почтового домена это ничего не нужно. Он будет использоваться только для осуществления соединения.

Шаг 2: создаём почтовые домены
В панели упрваления выбираем основной домен, на который хотим повесить почту, выбираем Mail > New domain и создаём поочерёдно два домена:
- example.com (да, основной почтовый домен должен повторять основной домен сайта),
- mail.example.com
Создать их можно, перейдя в раздел Mail в панели управления доменом:

Создаём оба домена.
▲Шаг 3: получаем SSL сертификаты для почтовых доменов
Только после того, как почтовые домены созданы, можно получить для них SSL сертификаты.
Подойдёт любой, можно бесплатный от Lets Encrypt.
Карточка сайта > SSL Certificates:

На открывшейся странице - New certificate:

Длину ключа (key length) можно оставить по умолчанию - 2048. Более длинный ключ - безопасней, но чуть дольше соединение.
После сохранения в списке появится новая запись со статусом "Creating":

Через несколько секунд она сменится на "Valid", что будет означать, что сертификат создан:

Сертификаты нужно выпустить для каждого домена!
Затем в списке ПОЧТОВЫХ доменов нажимаем на шестерёнку рядом с каждым из них:

На этом шаге почтовому домену необходимо присвоить SSL сертификат. Для каждого из доменов нужно выбрать сертификат, выданный для основного домена.
Другими словами в выпадающем списке выбираем сертификат, соответствующий названию текущего домена.

DKIM оставляем включенным!
Если сертификат не создаётся из-за ошибки
Иногда сертификат может не создаваться по какой-то неведомой причине. Лучше всего - посмотреть логи и выявить причину, но проблема в том, что логи частенько ничего интересного не расскажут.
У меня домен был подключен через Cloudflare, проверьте следующие моменты:
- В FastPanel > Management > DNS domains - тут НЕ должно быть записи с вашим почтовым поддоменом. Если есть - удалите её. Не стоит волноваться, удаление DNS записи сам домен не тронет. Удалить нужно так как управление DNS в текущем случае происходит через Cloudflare и еще одна запись на хостинге просто путает систему.
- В Cloudflare:
- проверить правильность добавленных записей - тип, домен, IP адрес;
- если есть проверки, блокировки, какие-то специфические Page rules или анти-бот защита - временно отключите это всё.
После создания сертификата можно будет вернуть все фильтры обратно, но помните, что сертификат Lets encrypt выдаётся временно, обычно 90 дней, после чего необходимо получить новый. Это будет происходить автоматически, но из-за той же бот защиты может фейлится. Короче проверяйте регулярно сертификаты.
▲Зачем нужно два почтовых домена?
Чтобы объяснить, придётся забежать немного вперёд.
На первый взгляд кажется, что достаточно одного, но на практике именно такая схема избавляет от проблем с сертификатами и подключением почтовых клиентов.
Основной почтовый домен (example.com) cоздаётся всегда. Через него формируются ящики:
Если завести только основной домен - почта будет работать: отправка и приём через веб-интерфейс (Roundcube) обычно не вызывают проблем.
Почтовый поддомен (mail.example.com) нужен для того, чтобы почтовые клиенты (Thunderbird, Outlook, приложения на телефоне и модули CMS) могли подключаться без ошибок сертификата.
Дело в том, что при подключении по SMTP/IMAP клиент проверяет соответствие имени сервера и SSL-сертификата. Если в настройках указать mail.example.com, а сертификат выпущен только на example.com - будет ошибка.
FASTPANEL автоматически создаёт и привязывает отдельный SSL-сертификат к поддомену mail.example.com, но только если он заведён в панели как почтовый домен.
Exim и сертификаты
Когда в FASTPANEL создаётся почтовый домен и почтовые ящики, за кулисами работает специальная программа - Exim.
Exim - это почтовый сервер (Mail Transfer Agent, MTA). Его задача - доставлять письма туда, куда они должны прийти:
- если письмо адресовано вашему ящику ([email protected]), Exim принимает его от внешнего сервера и передаёт во внутреннее хранилище;
- если письмо отправляется из вашего ящика, Exim решает, как его доставить адресату — на другой сервер или на другой ящик внутри системы.
Когда почтовый клиент подключается к серверу, он проверяет SSL-сертификат, который как раз отдаёт Exim. Если сертификат не совпадает с именем сервера - возникает ошибка. Если сайт (например, на Drupal или WordPress) отправляет письма через SMTP, он фактически работает напрямую с Exim. Неверные настройки SSL или неправильный почтовый домен тут же приводят к ошибке.
Сертификаты почтовых доменов создаются автоматически и размещаются обычно по этому пути: /etc/exim4/ssl/
Если создать только один почтовый домен example.com, то и сертификат будет создан только для него.
Но для бест практики и для разделения ролей принято привязывать почтовый сервер к поддомену mail.example.com. Можно в целом обойтись только им, но тогда ящики будут вида [email protected] - выглядит не очень красиво.
Поэтому в FASTPANEL мы создаём два почтовых домена: example.com и mail.example.com.
Второй нужен именно для того, чтобы панелька автоматически выдала сертификат и положила его в нужное место и Exim всегда отдавал корректный сертификат для mail.
Ящики на поддомене mail.example.com создавать не требуется, он будет использоваться просто для обработки самого подключения почтового клиента.
▲Шаг 4: создаём почтовый ящик
Надо перейти в Mailboxes (ссылка рядом с шестеренкой) > New mailbox:

По сути здесь надо указать только логин и пароль.
Логин - это то, что будет идти перед собачкой @. Всю почту целиком указывать не надо.
▲Шаг 5: добавляем почтовый поддомен в Cloudflare
Этот шаг можно пропустить, если не пользуетесь этим сервисом.
Нужно добавить ДВЕ записи в DNS: A и MX. Порядок их создания не важен.
В клауде переходим в DNS > Records > Add record и добавляем MX запись:

- Type: MX
- Name: @ (собачка используется для основного домена)
- Mail server: mail.example.com
- TTL: Auto
- Priority: 10
- Жмякаем Save
Теперь добавляем A запись:

- Type: A
- Name: mail
- IPv4 address: нужно указать IP адрес вашего хостинга
- Proxy status: снимаем галочку, чтобы было DNS only
- TTL: Auto
По завершению в списке должно быть две новые записи:

Шаг 6: добавляем DKIM, DMARC и SPF записи
Это специальные DNS записи, которые подтверждают, что почта действительно была отправлена с указанного сайта.
Это крайне важно, потому что без них письма будут попадать в спам адресатов или вовсе не доходить до них (в зависимости от настроек безопасности почтового сервера).
- DKIM — это цифровая подпись писем, которая помогает почтовым сервисам (Gmail, Яндекс, Outlook и др.) проверить, что письмо действительно отправлено с вашего домена и не было подделано по пути.
- DMARC — это правило для почтовых сервисов, которое говорит: «если письмо от моего домена не прошло проверку SPF и/или DKIM — что с ним делать?»
- SPF — это список разрешённых серверов, которые могут отправлять письма от имени вашего домена.
DKIM
DKIM можно получить на странице с первого шага этого туториала, там где список почтовых доменов:

Рядом с каждой записью есть DKIM ссылка, по нажатию на которую откроется модалка со всеми необходимыми данными:

Идём снова в управление DNS Cloudflare и добавляем эту запись:

- Type: TXT
- Name: dkim._domainkey
- Content: вставляем всю портянку данных
DMARC
В больнишстве случаев DMARC запись будет одинаковой для любого домена.
Добавляем новую TXT DNS запись:

- Type: TXT
- Name: _dmarc
- Content: v=DMARC1; p=none; aspf=r; sp=none
Что означает эта запись:
- v=DMARC1 — это обязательный тег, указывающий, что используется протокол DMARC версии 1. Без него запись не будет распознана как DMARC. Все DMARC-записи должны начинаться с этого тега.
- p=none — политика для основного домена (policy), которую почтовые серверы должны применять к письмам, не прошедшим DMARC-проверку (т.е. не прошедшим SPF и/или DKIM.
Значения могут быть:- none — не предпринимать никаких действий, только собирать отчёты. Это режим мониторинга.
- quarantine — помечать письмо как подозрительное (например, отправлять в спам).
- reject — полностью отклонять письмо.
- aspf=r — выравнивание SPF (Alignment mode for SPF). Необязательный тег, если не указан - по умолчанию используется r.
DMARC требует не только прохождения SPF, но и выравнивания домена из SPF с доменом в заголовке From: письма.
Значения:- r — relaxed (расслабленное): домены должны быть на одном уровне (например, mail.example.com и example.com считаются выровненными).
- s — strict (строгое): домены должны совпадать точно (например, mail.example.com и example.com — не выровнены).
- sp=none — политика для поддоменов (subdomain policy). Определяет, какую политику применять к письмам, отправленным с поддоменов вашего домена, если они не прошли DMARC-проверку.
none значит, что для поддоменов тоже не предпринимается никаких действий, только сбор отчётов.
SPF
SPF - это еще одна небольшая TXT запись:

- Type: TXT
- Name: @
- Content: v=spf1 mx -all
mx -all - означает, что отправлять письма от имени домена могут сервера, указанные в A и MX-записях этого домена, а письма, отправленные от других серверов должны быть удалены.
▲Шаг 7: проверяем
Самый простой способ - это попробовать отправить и получить письмо.
Но есть вариант лучше - использовать специальный сервис, например learndmarc.com:

Сайт выполнен в стиле пошагового чат бота с подсказками. Чтобы начать необходимо отправить любое письмо на предоставленный тестовый адрес. Сервис получит его и по порядку пройдётся по всем аспектам и при необходимости предложит варианты решения найденных проблем.
Если всё ок, все тесты должны быть зелёными и финальный статус PASS:

Или другой сервис, попроще - mail-tester.com. Нужно так же отправить письмо на специальный ящик, а потом можно проверить "очки", выданные сервисом:

Добавить комментарий