Вътрешна документация · обновено 2026-07-25 · после може да я update-ваме
Накратко
Пощата на WebFactor е на две системи:
Stalwart (новата) на сървър s15 (NetCup) и
mailcow (старата) на сървър s4.
Постепенно всичко се мести от mailcow към Stalwart. Мигрираните домейни ги пазим и на двете места (виж долу).
46
домейни на Stalwart
286
пощенски кутии
~119k
писма (тела)
~540 GB
общо съхранение
🏗️ Архитектура — къде живее едно писмо
Stalwart НЕ пази писмото на едно място. Разделя го на два слоя: „горе" (бърз индекс) и „долу" (тежките тела).
✉️ Входящо писмо → Stalwart (s15)
приема се на порт 25 (MX), проверява спам (Bayes), после се записва разделено:
▼
⬆️ ГОРЕ — Метаданни + индекс s15
PostgreSQL, вътре в Incus контейнер mail на s15. Пази: кой на кого, тема, дата, папки (Inbox/Sent/…), флагове (прочетено/непрочетено), пълнотекстово търсене. Малко, но се чете постоянно и трябва да е БЪРЗО. → локално на s15.
Размер: ~138 GB(от които ~131 GB са СТАРИ тела, останали в PostgreSQL от преди преместването на blob-овете — чакат почистване; реалният индекс е ~7 GB)
+
⬇️ ДОЛУ — Телата на писмата (blob store) s4
MinIO (S3-съвместимо хранилище) на сървър s4 — 100.64.0.26:9000, bucket ovcharovo-blobs. Пази самите тела на писмата + прикачените файлове. Тежко, но се пипа по-рядко → изнесено на голям диск на s4 (3.6 TB).
Размер: ~402 GB
Защо разделено „горе/долу"? Индексът (горе) стои локално на s15 за скорост при отваряне/търсене; тежките тела (долу) са на s4, за да не пълнят малкия бърз диск. Stalwart сглобява писмото при отваряне — тегли метаданните от PostgreSQL (s15) и тялото от MinIO (s4).
Открита слабост: ~131 GB стари тела още стоят и в PostgreSQL (горе), при това дублирани и в MinIO (долу). Това е за почистване (сваля PG от 138 GB към ~7 GB) — чака backup + одобрение. Затова общата цифра „~540 GB" включва дублиране.
🖥️ Къде физически се върти Stalwart
Компонент
Къде
Детайл
Stalwart сървър
Incus контейнер mail на s15
NetCup, публичен IP 159.195.193.41; диск 900 GB (149 GB заети)
Метаданни (горе)
PostgreSQL в същия контейнер (s15)
локално, за скорост
Тела (долу)
MinIO на s4
през вътрешна VPN (Tailscale)
Уебмейл
Roundcube, отделен контейнер на s15
webmail.<домейн>
Вход отвън
HAProxy на s15 host
портове 25/465/587/993/443 → контейнера
Да — всичко е в Incus контейнер (mail) на s15. Uеб/HAProxy са на host-а на s15, телата са на отделен сървър (s4).
🟢 Домейни НА Stalwart (новото, 46)
Тези зареждат пощата от Stalwart (s15). MX сочи mail.<домейн> → 159.195.193.41.
+ още ~85 малки домейна (1–3 кутии) живи на mailcow.
❓ Мигрираните — на старото ли са, на новото, или на двете?
И на двете (нарочно). Когато преместим домейн mailcow → Stalwart:
✔ Пощата се копира на Stalwart (s15) — там е ЖИВАТА поща вече (MX сочи натам).
✔ Старото копие на mailcow (s4) НЕ се трие — само се „деактивира" (active=0), за да не приема нова поща. Стои като бекъп/застраховка.
Ако нещо се обърка → връщаме за секунди (DNS назад + active=1).
Значи за мигрираните домейни (27 бр.) писмата ги има и на mailcow, и на Stalwart. mailcow е старото/бекъп, Stalwart е новото/живо.
Изключение: домейни, дошли от SuperHosting (напр. climaluxvarna, varnahomecenter, aveceramica…) — там старото копие е на SuperHosting (на временна парола), пази се за rollback и се спира след потвърждение от клиента.
🔑 Как влиза клиент (за всеки домейн)
Услуга
Адрес
Порт
Входяща/изходяща поща
mail.<домейн>
IMAP 993 (SSL) · SMTP 465 (SSL)
Уебмейл
webmail.<домейн>
Roundcube (443)
Авто-конфигурация
mailconfig.<домейн>
страница с настройки за телефон/Outlook
Паролите на хората се запазват при местене (внасяме оригиналните хешове) — никой не сменя нищо.