документы + мейл сервер
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
# Почта техподдержки
|
||||
|
||||
Для `support@moon-well.online` используется отдельный контейнер
|
||||
[Stalwart Mail Server](https://stalw.art/). Он предоставляет SMTP, IMAP,
|
||||
антиспам, DKIM и административный интерфейс. Данные и конфигурация хранятся
|
||||
в именованных Docker volumes и переживают пересоздание контейнера.
|
||||
|
||||
## Что требуется от сервера
|
||||
|
||||
- постоянный публичный IPv4-адрес;
|
||||
- возможность принимать TCP-соединения на порты `25`, `465`, `587`, `993`;
|
||||
- разрешённый исходящий TCP-порт `25`;
|
||||
- PTR/rDNS для IP со значением `mail.moon-well.online`;
|
||||
- доступ к управлению DNS-зоной `moon-well.online`.
|
||||
|
||||
Без корректного PTR исходящие сообщения часто попадают в спам. Некоторые
|
||||
хостинги блокируют исходящий порт 25 — это нужно проверить до настройки.
|
||||
|
||||
## Первый запуск
|
||||
|
||||
```bash
|
||||
./scripts/mail-server.sh init
|
||||
```
|
||||
|
||||
Проверь значения в `.env.mail`. Затем создай DNS-запись:
|
||||
|
||||
```text
|
||||
mail.moon-well.online. A <публичный IPv4 сервера>
|
||||
```
|
||||
|
||||
Запусти сервер:
|
||||
|
||||
```bash
|
||||
./scripts/mail-server.sh up
|
||||
./scripts/mail-server.sh credentials
|
||||
```
|
||||
|
||||
Административный HTTP-порт намеренно доступен только на loopback-интерфейсе.
|
||||
Открой туннель со своего компьютера:
|
||||
|
||||
```bash
|
||||
ssh -L 8081:127.0.0.1:8081 <пользователь>@<сервер>
|
||||
```
|
||||
|
||||
После этого открой `http://127.0.0.1:8081/admin` и войди с временными
|
||||
реквизитами из команды `credentials`.
|
||||
|
||||
## Мастер Stalwart
|
||||
|
||||
Используй следующие значения:
|
||||
|
||||
- Server hostname: `mail.moon-well.online`
|
||||
- Default email domain: `moon-well.online`
|
||||
- Automatically obtain TLS certificate: включено
|
||||
- Generate email signing keys: включено
|
||||
- Storage: локальный RocksDB
|
||||
- Directory: Internal Directory
|
||||
- Logging: Console
|
||||
|
||||
Если DNS размещён у поддерживаемого Stalwart провайдера, подключи его в
|
||||
последнем шаге. Тогда сертификат выпускается через DNS-01 без занятия
|
||||
публичного порта 443. Иначе понадобится отдельно передать серверу TLS-сертификат
|
||||
или временно предоставить ему порт 443 для ACME-проверки.
|
||||
|
||||
Сохрани постоянные реквизиты администратора, показанные мастером, и
|
||||
перезапусти контейнер:
|
||||
|
||||
```bash
|
||||
./scripts/mail-server.sh restart
|
||||
```
|
||||
|
||||
Создай обычный пользовательский аккаунт `support@moon-well.online`.
|
||||
Административный аккаунт нельзя использовать в почтовом клиенте.
|
||||
|
||||
## DNS после мастера
|
||||
|
||||
В панели Stalwart открой:
|
||||
|
||||
`Management → Domains → Domains → moon-well.online → View DNS Zone file`
|
||||
|
||||
Перенеси предложенные записи в DNS-панель. В обязательный минимум входят:
|
||||
|
||||
- MX;
|
||||
- SPF;
|
||||
- DKIM;
|
||||
- DMARC;
|
||||
- записи автоконфигурации, которые предложит Stalwart.
|
||||
|
||||
Значение DKIM нужно брать только из созданной установки: ключ генерируется
|
||||
индивидуально. Не копируй DKIM из примеров.
|
||||
|
||||
## Настройка почтового клиента
|
||||
|
||||
```text
|
||||
Адрес: support@moon-well.online
|
||||
IMAP-сервер: mail.moon-well.online
|
||||
IMAP-порт: 993
|
||||
Шифрование IMAP: SSL/TLS
|
||||
SMTP-сервер: mail.moon-well.online
|
||||
SMTP-порт: 465
|
||||
Шифрование SMTP: SSL/TLS
|
||||
SMTP-аутентификация: включена
|
||||
Логин: support@moon-well.online
|
||||
```
|
||||
|
||||
## Подключение Laravel
|
||||
|
||||
После создания ящика укажи в production `.env`:
|
||||
|
||||
```dotenv
|
||||
MAIL_MAILER=smtp
|
||||
MAIL_SCHEME=smtps
|
||||
MAIL_HOST=mail.moon-well.online
|
||||
MAIL_PORT=465
|
||||
MAIL_USERNAME=support@moon-well.online
|
||||
MAIL_PASSWORD=<пароль ящика>
|
||||
MAIL_FROM_ADDRESS=support@moon-well.online
|
||||
MAIL_FROM_NAME="${APP_NAME}"
|
||||
```
|
||||
|
||||
Затем сбрось и пересобери кэш конфигурации:
|
||||
|
||||
```bash
|
||||
docker compose exec -T laravel.test php artisan optimize:clear
|
||||
docker compose exec -T laravel.test php artisan config:cache
|
||||
```
|
||||
|
||||
## Резервное копирование
|
||||
|
||||
В бэкап должны попадать оба именованных volume:
|
||||
|
||||
- `stalwart-config`;
|
||||
- `stalwart-data`.
|
||||
|
||||
Перед восстановлением используй ту же minor-версию образа Stalwart, что указана
|
||||
в `compose.mail.yaml`.
|
||||
Reference in New Issue
Block a user