infra/docs/BACKLOG.md
jack 1e638055c8
Some checks failed
CI/CD / syntax-check (push) Successful in 1m23s
CI/CD / deploy (push) Has been cancelled
feat(mail): rename mail→mx, webmail→mail.csrx.ru + reliability
Rename:
- docker-mailserver: hostname mail → mx, OVERRIDE_HOSTNAME → mx.csrx.ru
- Traefik route: webmail/domain_webmail → mail/domain_mail
- domain_webmail removed, domain_mail + domain_mx added to main.yml
- certbot cert: mail.csrx.ru → mx.csrx.ru

Email reliability improvements:
- certbot renewal cron (03:15 + 15:15 daily)
- deploy-hook: auto-reload Postfix+Dovecot after cert renewal
- POSTFIX_MESSAGE_SIZE_LIMIT=26214400 (25 MB)
- SPF hardened: ~all → -all
- DMARC hardened: p=none → p=quarantine, added ruf + fo=1 + adkim/aspf strict
- autodiscover/autoconfig CNAME records for mail client setup
- dns-zone.zone fully updated with architecture comments

Docs:
- STATUS.md: full mail architecture section, client settings, DNS table
- BACKLOG.md: rDNS task + DNS migration steps
- DECISIONS.md: mx/mail split rationale

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 20:07:59 +07:00

111 lines
5.5 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.

# Бэклог задач
> Задачи по приоритету. Обновляй этот файл при добавлении/завершении задач.
> Последнее обновление: 2026-03-22
---
## 🔴 Критично (сделать как можно скорее)
- [ ] **rDNS (PTR-запись) для 85.193.83.9** в панели Timeweb
Установить: `85.193.83.9 → mx.csrx.ru`
Без PTR Gmail/Yandex будут отклонять или помечать наши письма как спам.
Путь: Timeweb → Cloud VPS → tools-сервер → Сеть → Обратная DNS-запись
- [ ] **Обновить DNS в Cloudflare** после деплоя:
- Удалить старую A `mail` → 85.193.83.9 (DNS-only)
- Добавить A `mx` → 85.193.83.9 (DNS-only, orange cloud OFF)
- Изменить MX запись: `csrx.ru MX 10 mx.csrx.ru.`
- Обновить SPF: `v=spf1 mx -all`
- Обновить DMARC: `v=DMARC1; p=quarantine; rua=mailto:admin@csrx.ru; ...`
- Добавить CNAME `autoconfig``mx.csrx.ru`
- Добавить CNAME `autodiscover``mx.csrx.ru`
- A `mail` → 87.249.49.32 (proxied, уже есть — оставить)
A `dash``87.249.49.32` (proxied). Grafana сейчас недоступна по домену.
- [ ] **Бэкап tools-сервера**
Добавить в `roles/backup/` или создать отдельный скрипт для tools-сервера:
- outline-db (PostgreSQL dump)
- n8n_data (Docker volume)
- mailserver/config (DKIM ключи, аккаунты)
- snappymail/data
- [ ] **plane-minio не бэкапится**
Вложения и файлы из Plane не входят в текущий бэкап. Нужен dump MinIO bucket `uploads`.
---
## 🟡 Высокий приоритет
- [ ] **Мониторинг tools-сервера**
Добавить node-exporter на tools-сервер и scrape-конфиг в Prometheus.
- [ ] **mem_limit для plane-worker и plane-beat**
Сейчас без ограничений памяти, риск OOM. Добавить `mem_limit: 256m`.
- [ ] **Проверить работу swap**
`roles/base/tasks/swap.yml` должен создавать 2GB swap. Проверить что он реально создан на сервере.
- [ ] **Верификация бэкапов**
Добавить еженедельную проверку: скачать последний бэкап из S3, сделать test restore в Docker.
---
## 🟢 Обычный приоритет
- [ ] **Алерты на сбой бэкапа**
Если `backup-services` завершился с ошибкой — отправить алерт в Telegram.
- [ ] **Алерты на истечение TLS-сертификатов**
Добавить Prometheus правило: предупреждение за 7 дней до истечения сертификата.
- [ ] **Prometheus → tools-сервер**
Настроить federated scraping или remote_write для получения метрик tools-сервера.
- [ ] **Бакет S3 `visual-backup`**
Убедиться что бакет создан в Timeweb как "холодное хранилище" (тип: COLD).
---
## 📋 Бэклог (без срока)
- [ ] **Обновление образов**
Регулярно проверять новые версии (образы запинены в `defaults/main.yml`):
- Forgejo (сейчас `:9`)
- Traefik (сейчас `v3.3`)
- Plane (сейчас `:stable`)
- Authelia (сейчас `4.38`)
- [ ] **Автоматическое обновление Cloudflare IP-списков**
UFW разрешает только Cloudflare IPs. Список захардкожен — нужен cron для обновления.
- [ ] **Логи mail-сервера в Loki**
Добавить promtail pipeline для сбора логов mailserver с tools-сервера.
- [ ] **Двухфакторная аутентификация для n8n**
n8n сейчас доступен только с rate-limit middleware, без 2FA через Authelia.
---
## ✅ Сделано
- [x] Traefik с wildcard TLS через Cloudflare DNS-01
- [x] Vaultwarden (менеджер паролей)
- [x] Forgejo + CI/CD через Forgejo Actions
- [x] Plane (управление проектами)
- [x] Outline wiki с email magic link авторизацией
- [x] n8n автоматизация
- [x] docker-mailserver (Postfix + Dovecot), аккаунты: noreply, admin, jack
- [x] SnappyMail вебмейл, переименован на mail.csrx.ru (было webmail.csrx.ru)
- [x] docker-mailserver переименован на mx.csrx.ru (было mail.csrx.ru)
- [x] Certbot авторотация сертификата (cron 2x/день + deploy-hook для перезагрузки Postfix/Dovecot)
- [x] DMARC ужесточён до p=quarantine (было p=none)
- [x] SPF ужесточён до -all (было ~all)
- [x] DKIM/SPF/DMARC DNS-записи для почты
- [x] Мониторинг (Prometheus + Grafana + Loki + AlertManager)
- [x] CrowdSec IDS + fail2ban
- [x] Authelia 2FA SSO
- [x] Uptime Kuma статус-страница
- [x] Бэкап каждый час → S3 cold `data/`, 7 дней хранения
- [x] Удаление Syncthing (домен, firewall правила, образ, переменные)
- [x] cloudflare_zone_id перенесён из main.yml в vault