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>
111 lines
5.5 KiB
Markdown
111 lines
5.5 KiB
Markdown
# Бэклог задач
|
||
|
||
> Задачи по приоритету. Обновляй этот файл при добавлении/завершении задач.
|
||
> Последнее обновление: 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
|