--- date: 2026-03-03 type: decision tags: [decision, mail] --- # Сценарий настройки почтового сервера (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= comment="SMTP" /ip firewall nat add chain=dstnat dst-port=465 protocol=tcp action=dst-nat to-addresses= comment="SMTPS" /ip firewall nat add chain=dstnat dst-port=587 protocol=tcp action=dst-nat to-addresses= comment="Submission" /ip firewall nat add chain=dstnat dst-port=993 protocol=tcp action=dst-nat to-addresses= comment="IMAPS" /ip firewall nat add chain=dstnat dst-port=995 protocol=tcp action=dst-nat to-addresses= comment="POP3S" /ip firewall nat add chain=dstnat dst-port=4190 protocol=tcp action=dst-nat to-addresses= comment="Sieve" ``` > Порты 80/443 НЕ пробрасываем если NPM уже занимает их. ### 2. NPM — proxy host для mail.domain.com - Создать proxy host: `mail.` → `https://: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 # A запись для mail (если нет) python3 spaceweb-dns-api.py add-a mail # MX python3 spaceweb-dns-api.py add-mx mail. 10 # SPF python3 spaceweb-dns-api.py add-txt @ "v=spf1 mx a:mail. ~all" # DMARC python3 spaceweb-dns-api.py add-txt _dmarc "v=DMARC1; p=none; rua=mailto:admin@" # DKIM (получить ключ из Mailcow → Configuration → ARC/DKIM) python3 spaceweb-dns-api.py add-txt dkim._domainkey "" ``` > ⚠️ Капча: после 2-3 запросов подряд нужна новая сессия (перезапустить скрипт). ### 4. Mailcow — домен и ящики Через API (X-API-Key) или веб-интерфейс: 1. Добавить домен 2. Получить DKIM ключ (Configuration → ARC/DKIM) 3. Создать ящики ### 5. Пароль admin ```bash # Через API: curl -X POST https://mail./api/v1/edit/admin \ -H "Content-Type: application/json" \ -H "X-API-Key: " \ -d '{"items":["admin"],"attr":{"password":"","password2":""}}' ``` ### 6. PTR (rDNS) Обратиться к провайдеру: `` → `mail.` ### 7. Nextcloud SMTP (если есть) Администрирование → Основные параметры → Email: - SMTP, хост: ``, порт: 587 - STARTTLS, LOGIN auth - Логин: noreply@, пароль ### Проверка ```bash dig mail. A +short # → dig MX +short # → mail. dig TXT +short # → v=spf1 ... dig _dmarc. TXT +short # → v=DMARC1 ... dig dkim._domainkey. 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 |