Почтовый сервер
Модуль «Почта» даёт проекту собственную почту на своём домене — support@ваш-домен, noreply@ваш-домен и сколько угодно других ящиков — без сторонних сервисов. Домены, ящики и алиасы вы заводите в админке (Админка → Почта), а сам почтовый сервер (Postfix + Dovecot + OpenDKIM) читает их напрямую из базы CMS: создали ящик на сайте — он сразу принимает письма.
Установка
Почтовый сервер ставится вместе с CMS: запустите установщик с переменной CMS_MAIL=1 (нужен root):
CMS_MAIL=1 bash install.sh
Профиль полной установки (CMS_FULL=1) включает почту сам; при обычной интерактивной установке скрипт просто спросит «Поставить почтовый сервер (Postfix + Dovecot + OpenDKIM)?». Что делает установщик:
- ставит Postfix (отправка и приём, SMTP), Dovecot (доступ к ящикам, IMAP), OpenDKIM (подпись писем) и настраивает их на чтение доменов/ящиков/алиасов из базы CMS;
- открывает почтовые порты в файрволе (25, 465, 587, 143, 993);
- ставит веб-почту Roundcube и, если веб-сервером управляет установщик, сразу настраивает для неё поддомен
mail.<домен>с сертификатом.
Сбой почтового шага не прерывает установку CMS — почту можно донастроить позже. После первичной настройки сайта (/setup) добавьте домены в админке и нажмите «Применить к серверу» (см. ниже).
Домены и DKIM
Админка → Почта → Домены. Введите домен и нажмите «Добавить домен».
У каждого домена должна быть DKIM-подпись — без неё письма уходят в спам. Нажмите «сгенерировать» в колонке DKIM: CMS создаст пару ключей RSA-2048. Приватный ключ хранится в базе в зашифрованном виде и попадает на сервер кнопкой «Применить к серверу»; публичный превращается в готовую DNS-запись (селектор — mail), она появится на странице DNS домена.
Ящики и алиасы
Числа в колонках «Ящики» и «Алиасы» — ссылки на управление ими.
Ящики: имя (часть до @), пароль (минимум 8 символов) и квота (по умолчанию 1024 МБ). Пароль хранится только в виде хеша — восстановить его нельзя, но можно в любой момент задать новый кнопкой смены пароля. Этими же логином (полный адрес) и паролем входят в веб-почту и почтовые программы.
Алиасы — пересылки: письма на адрес-источник доставляются на адрес назначения (можно внешний). Если оставить имя пустым, получится catch-all — вся почта на несуществующие адреса домена уйдёт на указанный ящик.
DNS-записи
Кнопка DNS у домена показывает готовую таблицу записей — каждую можно скопировать одним кликом:
| Тип | Имя | Значение | Зачем |
|---|---|---|---|
| A | mail.<домен> |
IP сервера | хост почтового сервера |
| MX | <домен> |
10 mail.<домен> |
приём почты |
| TXT | <домен> |
v=spf1 mx ~all |
SPF — кто вправе слать от домена |
| TXT | _dmarc.<домен> |
v=DMARC1; p=quarantine; rua=mailto:postmaster@<домен> |
DMARC — политика для чужих серверов |
| TXT | mail._domainkey.<домен> |
v=DKIM1; k=rsa; p=… |
DKIM-подпись (появляется после генерации ключа) |
| PTR | IP сервера | mail.<домен> |
обратная запись |
Куда прописывать: все записи, кроме PTR, добавляются в DNS-зону домена — в панели регистратора или DNS-хостинга, где вы управляете доменом. PTR — исключение: обратная запись настраивается в панели хостера VPS (у него же вы арендуете IP), а не в зоне домена.
Записи вступают в силу не мгновенно — обновление DNS может занять от минут до часов. В будущем модуль «DNS» сможет публиковать эти записи автоматически, без ручного копирования к регистратору.
«Применить к серверу»
Кнопка «Применить к серверу» на странице доменов переносит настройки из CMS в системные сервисы. Под капотом выполняется одна команда mail:apply, которая:
- записывает конфиги, через которые Postfix и Dovecot читают домены/ящики/алиасы из базы CMS;
- выгружает приватные DKIM-ключи всех доменов в файлы OpenDKIM вместе с его таблицами;
- перезагружает Postfix, Dovecot и OpenDKIM.
Нажимайте её после добавления домена, генерации DKIM и смены пароля базы данных. Сами ящики и алиасы применять не нужно — сервер видит их сразу.
Кнопка работает, если у веб-процесса есть право sudo на эту единственную команду (установщик настраивает это сам). Если прав нет, панель подскажет ручной вариант — выполнить на сервере:
php artisan mail:server-config && php artisan mail:dkim-export
systemctl restart postfix dovecot opendkim
Веб-почта Roundcube
Установщик разворачивает Roundcube на поддомене mail.<домен> (адрес хранится в Настройках → Почта; если установщик не управлял веб-сервером, направьте поддомен на Roundcube и впишите адрес туда вручную). Страница «Веб-почта и клиент» в разделе почты открывает веб-почту одной кнопкой.
Вход — полным адресом ящика (user@домен) и его паролем. Там же приведены настройки для Thunderbird и телефона:
- сервер:
mail.<домен>; - IMAP (входящие): порт 993, SSL/TLS;
- SMTP (исходящие): порт 587, STARTTLS;
- логин — полный адрес ящика.
TLS-сертификат
Чтобы почтовые программы не ругались на сертификат, выпустите его через модуль «Сертификаты»: он получает бесплатный сертификат Let's Encrypt сразу на домены сайта и почты и сам подставляет его в Postfix и Dovecot, после чего перезагружает оба сервиса. Обновление сертификата тоже проходит через этот модуль — отдельно настраивать TLS почты не нужно.
Советы по доставляемости
Чтобы письма попадали во «Входящие», а не в спам:
- Настройте PTR у хостера. Обратная запись IP →
mail.<домен>— первое, что проверяют принимающие серверы; без неё крупные почтовики отклоняют письма. - Доведите DNS до конца: MX, SPF, DKIM и DMARC из таблицы выше должны быть прописаны все. Проверить себя можно, отправив письмо на Gmail и открыв «Показать оригинал» — SPF/DKIM/DMARC должны быть
PASS. - Убедитесь, что хостер не блокирует порт 25. Многие VPS-провайдеры закрывают исходящий SMTP по умолчанию — открывается по запросу в поддержку.
- Прогревайте домен. Новый домен без репутации не должен сразу слать сотни писем: начните с малых объёмов (регистрационные письма, ответы поддержки) и наращивайте постепенно. Массовые рассылки с первого дня — прямой путь в спам-листы.
- Для рассылок используйте отдельный адрес (например,
news@), аnoreply@— только для служебных писем: жалобы на рассылку не утянут за собой репутацию всей почты.