Files
knowledge-base/decisions/2026-03-03-mailserver-setup-scenario.md
Claude Code 066855ce28 mail.niikn.com: DNS настроен, сценарий задокументирован для dttb.ru
- README НИИКН: обновлён Mailcow (пароль, DNS, порты, ящик)
- changelog: добавлена запись о настройке mail.niikn.com
- credentials: добавлены Spaceweb, Mailcow НИИКН, NPM НИИКН
- decisions: сценарий настройки почтового сервера (шаблон для dttb.ru)
- snippets: скрипт spaceweb-dns-api.py для управления DNS

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 22:34:52 +00:00

98 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Сценарий настройки почтового сервера (Mailcow)
> Отработан на niikn.com (2026-03-03). Следующий: dttb.ru.
## Предусловия
- Mailcow установлен и запущен (docker compose)
- Белый IP есть
- Домен на Spaceweb DNS
## Шаги
### 1. MikroTik — проброс почтовых портов
```
/ip firewall nat add chain=dstnat dst-port=25 protocol=tcp action=dst-nat to-addresses=<MAILCOW_IP> comment="SMTP"
/ip firewall nat add chain=dstnat dst-port=465 protocol=tcp action=dst-nat to-addresses=<MAILCOW_IP> comment="SMTPS"
/ip firewall nat add chain=dstnat dst-port=587 protocol=tcp action=dst-nat to-addresses=<MAILCOW_IP> comment="Submission"
/ip firewall nat add chain=dstnat dst-port=993 protocol=tcp action=dst-nat to-addresses=<MAILCOW_IP> comment="IMAPS"
/ip firewall nat add chain=dstnat dst-port=995 protocol=tcp action=dst-nat to-addresses=<MAILCOW_IP> comment="POP3S"
/ip firewall nat add chain=dstnat dst-port=4190 protocol=tcp action=dst-nat to-addresses=<MAILCOW_IP> comment="Sieve"
```
> Порты 80/443 НЕ пробрасываем если NPM уже занимает их.
### 2. NPM — proxy host для mail.domain.com
- Создать proxy host: `mail.<DOMAIN>``https://<MAILCOW_IP>:443`
- Scheme: https (Mailcow сам обслуживает HTTPS)
- SSL: Let's Encrypt через NPM
- ssl_forced: true
### 3. DNS записи через Spaceweb API
Скрипт: `snippets/spaceweb-dns-api.py`
```bash
# Получить текущие записи
python3 spaceweb-dns-api.py info <DOMAIN>
# A запись для mail (если нет)
python3 spaceweb-dns-api.py add-a <DOMAIN> mail <PUBLIC_IP>
# MX
python3 spaceweb-dns-api.py add-mx <DOMAIN> mail.<DOMAIN> 10
# SPF
python3 spaceweb-dns-api.py add-txt <DOMAIN> @ "v=spf1 mx a:mail.<DOMAIN> ~all"
# DMARC
python3 spaceweb-dns-api.py add-txt <DOMAIN> _dmarc "v=DMARC1; p=none; rua=mailto:admin@<DOMAIN>"
# DKIM (получить ключ из Mailcow → Configuration → ARC/DKIM)
python3 spaceweb-dns-api.py add-txt <DOMAIN> dkim._domainkey "<DKIM_KEY>"
```
> ⚠️ Капча: после 2-3 запросов подряд нужна новая сессия (перезапустить скрипт).
### 4. Mailcow — домен и ящики
Через API (X-API-Key) или веб-интерфейс:
1. Добавить домен
2. Получить DKIM ключ (Configuration → ARC/DKIM)
3. Создать ящики
### 5. Пароль admin
```bash
# Через API:
curl -X POST https://mail.<DOMAIN>/api/v1/edit/admin \
-H "Content-Type: application/json" \
-H "X-API-Key: <API_KEY>" \
-d '{"items":["admin"],"attr":{"password":"<PASS>","password2":"<PASS>"}}'
```
### 6. PTR (rDNS)
Обратиться к провайдеру: `<PUBLIC_IP>``mail.<DOMAIN>`
### 7. Nextcloud SMTP (если есть)
Администрирование → Основные параметры → Email:
- SMTP, хост: `<MAILCOW_IP>`, порт: 587
- STARTTLS, LOGIN auth
- Логин: noreply@<DOMAIN>, пароль
### Проверка
```bash
dig mail.<DOMAIN> A +short # → <PUBLIC_IP>
dig <DOMAIN> MX +short # → mail.<DOMAIN>
dig <DOMAIN> TXT +short # → v=spf1 ...
dig _dmarc.<DOMAIN> TXT +short # → v=DMARC1 ...
dig dkim._domainkey.<DOMAIN> TXT +short # → v=DKIM1 ...
```
https://www.mail-tester.com/ — отправить письмо, проверить оценку.
## Применение для dttb.ru
| Параметр | niikn.com (выполнено) | dttb.ru (план) |
|----------|----------------------|----------------|
| Mailcow IP | 192.168.1.128 | ? (новая VM или LXC) |
| MikroTik | 192.168.1.1 (AI/OL260380eg) | 10.0.0.250 или роутер dttb |
| NPM | 192.168.1.22 | 10.0.0.195 |
| Публичный IP | 85.235.181.190 | ? |
| DNS домен | niikn.com | dttb.ru |