infra/docs/STATUS.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

5.9 KiB
Raw Blame History

Статус инфраструктуры

Обновляй этот файл при каждом значимом изменении. Последнее обновление: 2026-03-22


Серверы

Сервер IP Роль Состояние
main 87.249.49.32 Основные сервисы + мониторинг Работает
tools 85.193.83.9 Wiki + автоматизация + почта Работает

Сервисы

Основной сервер (main, 87.249.49.32)

Сервис Домен Статус Заметки
Traefik Реверс-прокси, TLS wildcard *.csrx.ru через Cloudflare DNS-01
Vaultwarden vault.csrx.ru Менеджер паролей
Forgejo git.csrx.ru Git-сервер, SSH на порту 2222
Forgejo Actions CI/CD runner, деплой через push в master
Plane plane.csrx.ru Управление проектами
Grafana dash.csrx.ru Дашборды мониторинга (нет DNS-записи — нужно добавить A→87.249.49.32)
Prometheus Сбор метрик, 30 дней хранения
Loki + Promtail Сбор логов
AlertManager Алерты в Telegram
CrowdSec IDS, банит злоумышленников
Authelia auth.csrx.ru 2FA SSO, защищает traefik dashboard и plane/god-mode
Uptime Kuma status.csrx.ru Публичная страница статуса
Бэкап Каждый час → S3 cold visual-backup/data/

Tools-сервер (tools, 85.193.83.9)

Сервис Домен Статус Заметки
Outline wiki.csrx.ru Wiki, аутентификация через email magic link
n8n n8n.csrx.ru Автоматизация workflow
docker-mailserver mail.csrx.ru Postfix + Dovecot, порты 25/465/587/993
SnappyMail mail.csrx.ru Веб-клиент почты (ранее webmail.csrx.ru)

Почта (@csrx.ru)

Аккаунты:

Аккаунт Назначение
noreply@csrx.ru Системные письма (Outline magic link)
admin@csrx.ru Администратор
jack@csrx.ru Личный

Архитектура почты:

Входящая:  internet → port 25 → mx.csrx.ru (85.193.83.9) → Postfix → Dovecot → IMAP
Исходящая: Outlook/SnappyMail → port 587 (STARTTLS) → mx.csrx.ru → Postfix → internet
Outline:   outline контейнер → mailserver:587 (Docker mail-internal сеть) → noreply@

Настройки почтового клиента:

  • IMAP: mx.csrx.ru порт 993 (SSL/TLS)
  • SMTP: mx.csrx.ru порт 587 (STARTTLS) или 465 (SSL/TLS)
  • Веб-клиент: https://mail.csrx.ru (SnappyMail)

DNS-записи для почты (все должны быть в Cloudflare):

A     mx             → 85.193.83.9           DNS-only (НЕ proxied!)
A     mail           → 87.249.49.32          Proxied (webmail через Traefik)
MX    @          10  → mx.csrx.ru.
TXT   @              → "v=spf1 mx -all"
TXT   _dmarc         → "v=DMARC1; p=quarantine; rua=mailto:admin@csrx.ru; ..."
TXT   mail._domainkey → "v=DKIM1; k=rsa; p=<KEY>"  (генерируется при деплое)
CNAME autoconfig     → mx.csrx.ru.           для Thunderbird autodiscover
CNAME autodiscover   → mx.csrx.ru.           для Outlook autodiscover

rDNS (PTR-запись) — настроить в панели Timeweb: 85.193.83.9 → mx.csrx.ru (критично для доставки в Gmail/Yandex!)

Автообновление TLS-сертификата:

  • certbot renew cron: каждый день в 03:15 и 15:15
  • deploy-hook: после обновления автоматически перезагружает Postfix+Dovecot

CI/CD

  • Репозиторий: git.csrx.ru/jack/infra
  • Триггер: push в master запускает ansible-playbook playbooks/deploy.yml + playbooks/tools.yml
  • Runner: act_runner на основном сервере
  • Правило: все изменения только через git, никаких ручных правок на сервере

Известные проблемы

Проблема Статус
Нет DNS-записи для dash.csrx.ru ⚠️ Нужно добавить в Cloudflare вручную: A dash → 87.249.49.32
Tools-сервер не бэкапится ⚠️ outline-db и n8n не входят в скрипт бэкапа
Tools-сервер вне мониторинга ⚠️ Prometheus не скрейпит tools-сервер

Сети Docker

Основной сервер

  • proxy — публичная, только для Traefik (нужна для ACME)
  • backend — internal, Traefik ↔ сервисы
  • forgejo-db — internal, Forgejo ↔ PostgreSQL
  • forgejo-ssh — публичная, для SSH-клиентов
  • plane-internal — internal, все компоненты Plane
  • runner-jobs — публичная, для job-контейнеров CI/CD
  • monitoring — internal, стек мониторинга
  • authelia-internal — internal, Authelia ↔ Redis

Tools-сервер

  • front — публичная, для port binding хоста
  • outline-internal — internal, Outline ↔ DB ↔ Redis
  • n8n-internal — internal, n8n изоляция
  • mail-internal — internal, Outline → mailserver (SMTP без auth)
  • webmail-internal — internal, SnappyMail изоляция