StrangeCraft CMS PlaVER

Почтовый сервер

Модуль «Почта» даёт проекту собственную почту на своём домене — 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, которая:

  1. записывает конфиги, через которые Postfix и Dovecot читают домены/ящики/алиасы из базы CMS;
  2. выгружает приватные DKIM-ключи всех доменов в файлы OpenDKIM вместе с его таблицами;
  3. перезагружает 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@ — только для служебных писем: жалобы на рассылку не утянут за собой репутацию всей почты.