Схемы Что нового

Почта и домены

Свой почтовый сервер, домены и DNS, автонастройка почтовых ящиков сотрудников и организаций.

Содержание раздела

Почтовый сервер (SmitMailServ)

URL: /admin/settings/mailserver/ — собственный почтовый сервер SmitMailServ: приём и отправка писем, антиспам, хранение и веб-почта. Ящики, домены и роли хранятся в базе биллинга — завели ящик в разделе, и почтовый сервер видит его сразу, без правки конфигов. Раздел открыт суперпользователю и группам администраторов.

Пять вкладок: Обзор, Домены, Ящики, Страница входа и Настройки сервера.

Почтовый сервер — вкладка «Обзор»
Вкладка «Обзор»: состояние сервера, разрез по организациям и готовность доменов к отправке.
Обучающее видео 3:00

Где заводить ящики, зачем домену организация, что делает роль ящика и куда смотреть, когда «почта не работает».

1920×1080 с озвучкой Скачать

Вкладка «Обзор»

Сводка по всем организациям; если выбрать организацию в шапке, цифры сузятся до неё.

Вкладка «Ящики»

Список всех ящиков сервера: кто владелец, сколько занято, что ящик обслуживает. Строки подгружаются AJAX-ом, поиск идёт по адресу и имени.

Список ящиков: тулбар, организации, роли
Одна строка тулбара: домен, «Персонал» и «Системные», поиск, колонки, добавление. На снимке оставлены только системные ящики — щит у адреса значит, что ящик нельзя удалить.

Что показывает таблица

КолонкаЧто в ней
АктивностьТочка: зелёная — ящик принимает и отправляет письма, серая — выключен. Колонка без подписи, самая узкая, скрыть её нельзя.
Орг.Организация домена — тот же бейдж, что в остальных списках биллинга (мультиорг).
EmailАдрес. У системных ящиков — щит: их нельзя удалить, на них держатся выписки, рассылка и приём обращений. Скрыть колонку нельзя.
ИмяОтображаемое имя — оно же уходит в подпись и в адресную книгу почты.
КвотаЗанято из выделенного. По умолчанию колонка скрыта, значение видно в подсказке к счётчику писем.
ПисемНепрочитанных из всех. Клик открывает ящик в почте без ввода пароля.
СозданДата создания, полностью, без сокращения.
ЧейСотрудник-владелец с аватаркой. У системного ящика владельца нет — прочерк.
РолиЧто ящик обслуживает: приём обращений, голосовая почта, рассылки, банковские выписки. Нажатие переключает роль.
Ред.Меню строки: войти в ящик, редактировать, сменить пароль, включить или выключить, удалить.
Набор колонок настраивается под себя. Кнопка «Колонки» прячет ненужные, заголовки можно перетаскивать и тянуть за правый край — выбор сохраняется в профиле. По умолчанию скрыты «Квота» и «Кем создан»: без них таблица целиком влезает в экран. Служебные колонки (отметка выбора, активность, счётчик писем, дата, меню) заданной ширины — их не тянут и не прячут, чтобы значения не обрезались.
Выбор колонок списка ящиков
Выбор колонок: подсвечены показанные, служебные (выбор строк, активность, меню) не отключаются.
Меню действий над ящиком
Меню строки: вход в ящик, редактирование, пароль, выключение. У системного ящика удаление недоступно.

Роли ящика

Роль — это ответ на вопрос «что этот ящик делает для биллинга». Назначенная роль показана подписью, остальные остаются значком с подсказкой: в списке на сотню строк важно видеть включённое, а не перечень возможного.

flowchart LR
  BOX["Ящик
ask@вашдомен.ru"] BOX -->|Поддержка| TICKETS["Обращения
письмо → тикет"] BOX -->|Голосовая| VOICE["Голосовая почта
запись → заявка"] BOX -->|Рассылка| SEND["Уведомления и рассылки
отправитель писем"] BOX -->|Выписки| BANK["Банковские выписки
разбор вложений"] classDef on fill:#e8f7ef,stroke:#43b77a,color:#1b5e3f classDef box fill:#f4f6f8,stroke:#adb5bd,color:#212529 class BOX box class TICKETS,VOICE,SEND,BANK on
Роль настраивает ящик сама. При включении роли параметры IMAP и SMTP, защита и расписание разбора прописываются автоматически — вручную ничего дописывать не нужно. Роль занята одним ящиком в организации: назначили другому — с прежнего она снимается.

На телефоне

Сверху остаётся то, за чем в раздел заходят: выбор домена и «Добавить». Ниже — поиск, «Фильтры» и обновление в одну строку; фильтр по типу ящика открывается шторкой снизу. Таблица превращается в карточки — по строке на ящик, без горизонтальной прокрутки.

Список ящиков на телефоне
Телефон: домен и «Добавить», под ними поиск с «Фильтрами».
Шторка фильтров списка ящиков
Шторка «Фильтры»: персонал и системные ящики.
flowchart TB
  subgraph D["Десктоп"]
    T["Одна строка тулбара:
домен · тип ящика · поиск · колонки · добавить"] TB["Таблица:
настраиваемые колонки, роли в строке"] T --> TB end subgraph M["Телефон"] P["Домен + Добавить"] S["Поиск + Фильтры + Обновить"] SH["Шторка: тип ящика"] C["Карточки ящиков"] P --> S --> C S -.-> SH end D -.->|те же элементы, другая раскладка| M

Добавление ящика

Кнопка «Добавить ящик» открывает окно:

Окно «Добавить ящик»
Окно «Добавить ящик»: адрес, доставка, квота, пароль и роль.

Вкладка «Домены»

Почтовые домены сервера и организация, которой принадлежит каждый. Организация домена определяет, чьи реквизиты и фирменный стиль получат ящики этого домена: подпись письма, цвета веб-почты, страницу входа.

Вкладка «Домены»
Домены сервера по организациям; «Добавить домен» заводит новый.

При добавлении домена DNS-записи почты (MX, SPF, DKIM, DMARC) можно прописать одной кнопкой, если для организации настроен Cloudflare — см. «Домены и DNS».

Вкладка «Страница входа»

Как выглядит вход в веб-почту на адресе mail.<домен>: фон, картинка, заголовок и значок вкладки. Слева — домены входа, справа — настройки выбранного и предпросмотр. Страница входа не требует авторизации, поэтому оформление отдаётся публично и кэшируется.

Вкладка «Страница входа»
Домены входа и настройки оформления выбранного домена.

REST API внутри биллинга

EndpointНазначение
GET /admin/settings/mailserver/api/status/Состояние API (status/version/quota/mailbox-counts)
GET /admin/settings/mailserver/api/test-connection/Проверка соединения (с возвратом версии)
GET /admin/settings/mailserver/api/dkim/DKIM/SPF/DMARC статусы по доменам
GET /admin/settings/mailserver/api/domains/Список доменов с метаданными (mailboxes, max_mailboxes, aliases, active, is_default) — питает все <select> доменов
GET /admin/settings/mailserver/api/mailbox/?domain=…Список ящиков домена
POST /admin/settings/mailserver/api/mailbox/create/Создание ящика
POST /admin/settings/mailserver/api/mailbox/<email>/edit/Редактирование (имя/квота/active)
POST /admin/settings/mailserver/api/mailbox/<email>/password/Смена пароля (с авто-sync в SystemSettings для системных)
DELETE /admin/settings/mailserver/api/mailbox/<email>/Удаление (server-side защита системных)
POST /admin/settings/mailserver/api/archive/save/Срок хранения писем на диске (дни)
POST /admin/settings/mailserver/api/archive/run/Архивировать сейчас — все ящики или один (email)

Все endpoint'ы за @user_passes_test(_is_superadmin) — только суперадмин. Каждая CRUD-операция пишет в AuditOperations с table_name='MAILSERVER'.

Как это работает: ящики, домены и роли лежат в базе биллинга, а почтовый сервер читает их оттуда напрямую. Действия, которым нужен сам сервер (перезапуск части почты, проверка DNS, архив писем), биллинг выполняет на хосте почты по SSH.

Веб-почта: календарь, контакты, брендинг

Сотрудники работают с почтой в браузере по адресу https://mail.<домен>/ (например mail.вашдомен.ru). Кроме писем там есть календарь, задачи и адресная книга. Интерфейс подхватывает данные из биллинга: имя сотрудника, его фото, подпись, контакты коллег и фирменные цвета организации, которой принадлежит домен.

Войти можно двумя способами: обычным логином и паролем от биллинга либо из админки — раздел «Почтовый сервер» → вкладка «Ящики» → меню строки → «Войти в ящик» (вход без ввода пароля, каждый такой вход пишется в аудит; возможность отключается настройкой, см. «Настройки сервера»).

flowchart LR
    U["Сотрудник
браузер"] --> HN["nginx хоста
mail.домен"] HN --> MN["nginx почты
статика + брендинг"] MN --> SG["SOGo
веб-интерфейс"] SG --> DV["Dovecot
письма IMAP"] SG --> PF["Postfix
отправка SMTP"] SG --> PG[("Настройки SOGo
база sogo")] SG --> BV[("Биллинг
ящики и контакты")] MN -. "цвета, логотип" .-> API["API брендинга
биллинга"] API --> ORG[("Карточка
организации")]

Брендинг по организации

Почта каждой организации выглядит по-своему: цвет интерфейса и логотип берутся из карточки организации, к которой привязан почтовый домен (раздел «Организации» → «Брендинг»). Ничего настраивать отдельно для почты не нужно — поменяли фирменный цвет в карточке, он появился и в почте.

Что окрашивается: верхняя панель и шапка списка, кнопка создания, ссылки, выделение выбранной папки, а в календаре — сегодняшний день, колонка текущего дня и события личного календаря. Логотип организации встаёт в левый край верхней панели.

sequenceDiagram
    participant B as Браузер
    participant N as nginx почты
    participant A as API биллинга
    participant O as Карточка организации
    B->>N: открыть почту
    N-->>B: страница SOGo + скрипт брендинга
    B->>A: какой брендинг у почтового домена
    A->>O: домен → организация
    O-->>A: цвет, логотип, название
    A-->>B: настройки брендинга
    B->>B: перекрасить интерфейс, вставить логотип
Календарь почты СмИТ
Домен СмИТ: сегодняшний день отмечен плашкой фирменного цвета, выходные приглушены.
Календарь почты ИТ Консалтинга
Тот же календарь на домене ИТ Консалтинга — свой цвет и логотип, настройка отдельно не нужна.

Справка внутри почты

В правом верхнем углу, слева от кнопки выхода, есть значок «?» — он открывает этот раздел документации.

Кнопка справки слева от кнопки выхода
Кнопка справки соседствует с выходом — там, где её ищут.

Имя, подпись и фото из профиля

Ящик сотрудника берёт данные из его профиля в биллинге: не нужно отдельно заполнять имя отправителя и вручную набирать подпись.

Данные обновляются сами: при сохранении профиля, смене фото, создании ящика и смене владельца. Разовый прогон по всем ящикам — команда manage.py sync_mail_identities (ключ --dry-run покажет, что получится, без записи).

flowchart TD
    P["Профиль сотрудника
ФИО, телефон, фото"] --> S{"Синхронизация"} O["Организация домена
название, сайт, телефон"] --> S S --> N["Имя отправителя"] S --> G["Подпись письма"] S --> F["Фото в интерфейсе
и в подписи"] S --> C["Личная книга и календарь
названы по организации"]
Блок «Почта» в профиле сотрудника
Блок «Почта» в профиле: ящики сотрудника с организацией и входом в почту, переключатели уведомлений, создание ящика в доступном домене и адрес пересылки.
Пароль от ящика совпадает с паролем входа в биллинг и меняется вместе с ним — отдельно его помнить не нужно. Поэтому в открытом виде он нигде не хранится.

Адресная книга из биллинга

В почте есть общая книга «Контакты». Она только читается — данные ведутся в биллинге:

Поиск работает и по имени, и по адресу — достаточно начать набирать фамилию в поле получателя, и адрес подставится сам. Личная книга и календарь названы по организации домена (например «Контакты СмИТ Поддержка») вместо стандартного «Personal Address Book».

Вкладка «Почта» в панели уведомлений

Чтобы прочитать письмо, не обязательно открывать веб-почту: в панели уведомлений биллинга (колокольчик в правом верхнем углу) есть вкладка «Почта». Там лента писем из всех ящиков сотрудника — с отправителем, адресом, папкой и временем («15 минут назад», «вчера»). Избранные письма закреплены сверху.

Письмо открывается в правой колонке. Оттуда же можно:

Ответ уходит от ящика сотрудника, поэтому получатель отвечает ему, а не на общий адрес; ящик-отправитель выбирается списком, если ящиков несколько. Какие ящики показывать в ленте, каждый выбирает у себя в профиле; вкладку целиком можно выключить в «Настройках сервера».

Вкладка «Почта» в панели уведомлений с открытым письмом
Лента писем и открытое письмо с полем ответа.

Настройки сервера

Раздел «Почтовый сервер» → вкладка «Настройки сервера». Кроме технических параметров (имя сервера, размер письма, лимит отправки, relay, DKIM) там есть переключатели, которые влияют на повседневную работу:

НастройкаЧто делает
Сбор почтовых метрик, мин Как часто пересчитывать занятое место и число писем для колонок «Квота» и «Писем». Обход идёт по файлам ящиков, поэтому чаще, чем раз в 10–15 минут, смысла нет; 0 — не собирать.
Разрешить персоналу создавать email В профиле сотрудника появляется блок создания ящика в доступных ему доменах.
Показывать вкладку «Почта» в уведомлениях Общий выключатель ленты писем в панели уведомлений.
Брать имя и подпись из профиля Ящик подписывается ФИО владельца, в письма подставляется подпись с должностью, телефоном, фото и реквизитами организации.
Показывать клиентов в адресной книге Добавляет клиентов в книгу «Контакты». Это персональные данные — по умолчанию выключено.
Разрешить вход в ящик без ввода пароля Кнопка «Войти в ящик» открывает чужую почту от имени владельца. Каждый вход пишется в аудит; если такой доступ не нужен — выключите.

Здоровье сервера и доставляемость

Вкладка «Настройки сервера» отвечает на два вопроса: работает ли почта прямо сейчас и дойдут ли письма до получателя, а не в спам.

Здоровье сервера — по строке на каждую часть почты. Все строки зелёные — почта принимается и отправляется. Очередь показывает, сколько писем ждёт отправки; норма — ноль. Кнопка с круговой стрелкой перезапускает одну упавшую часть, не трогая остальные.

flowchart LR
  NET["Интернет"] -->|SMTP| PF["Приём и отправка
postfix"] PF --> RS["Антиспам
rspamd"] RS --> DC["Хранение и чтение
dovecot"] DC --> SG["Веб-почта
sogo"] SG --> NG["Веб-почта, сайт
sogo-nginx"] NG -->|браузер| USER["Сотрудник"] RD["Кэш
redis"] --- RS RD --- SG BIL["Биллинг"] -->|IMAP: обращения, выписки| DC BIL -->|SMTP: уведомления| PF
Как читать схему. Письмо снаружи проходит приём, антиспам и попадает в хранилище; сотрудник видит его через веб-почту. Биллинг подключается к тем же частям: читает обращения и выписки по IMAP, отправляет уведомления через SMTP. Поэтому красная строка «Приём и отправка» означает и молчащие уведомления, а красное «Хранение и чтение» — необработанные обращения.

Письма доходят, а не в спам — четыре проверки на каждый домен: подпись писем, разрешение на отправку, защита от подделки и запись приёма почты. Все зелёные означают, что письма с этого домена принимают Gmail, Mail.ru и Яндекс; красная — письма могут уходить в спам, и настраивать её нужно в разделе «Домены и DNS».

Здоровье почтового сервера
Состояние частей почты и очередь отправки.
Проверки доставляемости по домену
Четыре проверки на домен: подпись, разрешение, защита, приём.

Резервный архив писем

Каждую ночь (02:30) ящики копируются в облако GCS зашифрованными архивами. Бакет публичный на чтение, поэтому архив шифруется ключом, который хранится только в настройках биллинга: по ссылке отдаётся нечитаемый набор байт. Отключить архив нельзя — это политика безопасности.

Поле «Переносить в архив письма старше N дней» задаёт, сколько писем держать на диске сервера. Старшие письма уходят в облако и удаляются с диска; 0 — ничего не удалять, только копировать.

Блок «Резервный архив писем»
Срок хранения на диске и ручной запуск архивации.

В облаке у каждого ящика своя папка mail-archive/<домен>/<ящик>/:

ФайлЧто в нёмСколько хранится
ГГГГ-ММ-ДД.tar.gz.encНочной снимок всего ящикаПоследние 7
deleted-ГГГГ-ММ-ДД_ЧЧММСС.tar.gz.encПисьма, удалённые в эту ночь с диска по срокуВсегда — других копий этих писем нет
flowchart TB
  subgraph R1 [" "]
    direction LR
    BOX["Ящик на диске"] --> SNAP["Снимок ящика
дата.tar.gz.enc"] SNAP --> KEEP["В облаке хранятся
7 последних снимков"] end subgraph R2 [" "] direction LR OLD["Письма старше
N дней"] --> PACK["Архив удаляемых
deleted-….tar.gz.enc"] PACK --> CHECK{"Выгружен и
число писем сошлось?"} CHECK -->|да| DEL["Удалить с диска
ровно эти письма"] CHECK -->|нет| STAY["Письма остаются
на диске до след. ночи"] end R1 --> R2 style R1 fill:none,stroke:none style R2 fill:none,stroke:none
С диска удаляется только то, что уже лежит в облаке. Список старых писем фиксируется до выгрузки; письмо удаляется, только если архив выгружен и число файлов в нём совпало с найденным. Если облако недоступно, удаление в эту ночь пропускается целиком. Восстановление: скачать нужный .enc, расшифровать ключом архива и распаковать в каталог ящика.

Письма не приходят: что проверить

Если в ящик перестали приходить письма извне, а отправка и веб-почта работают, идите по цепочке снаружи внутрь — каждое звено можно проверить отдельно.

flowchart TB
  subgraph R1 [" "]
    direction LR
    S["Сервер
отправителя"] --> DNS["DNS: MX домена
→ mail.домен"] DNS --> NET["Сеть: порт 25
открыт снаружи"] end subgraph R2 [" "] direction LR PF["Приём
postfix"] --> RS["Антиспам
rspamd"] RS --> DV["Доставка в ящик
dovecot"] end R1 --> R2 style R1 fill:none,stroke:none style R2 fill:none,stroke:none
  1. DNS. MX домена указывает на mail.<домен>, а тот — на адрес почтового сервера. Проверка — «Проверить DNS» на вкладке «Обзор».
  2. Порт 25 снаружи. Проверяйте внешним сервисом проверки портов, а не со своего компьютера: домашние провайдеры часто перехватывают исходящий порт 25, и проверка «проходит», хотя до сервера пакеты не доходят. Если снаружи 25 закрыт, а 587 и 993 открыты, порт режет сетевое оборудование перед сервером — сам сервер тут ни при чём. Фильтр бывает и выборочным: письма крупных почтовиков приходят, а проверка с хостинга и отдельные отправители — нет. Какие источники дошли, видно в журнале антиспама.
  3. Здоровье сервера. Строки «Приём и отправка», «Антиспам» и «Хранение и чтение» в «Настройках сервера» должны быть зелёными, очередь — около нуля.
  4. Сам ящик. Ящик активен, а у ящиков с ролью проверьте и выключатель в Поддержке — это разные флаги: один выключает разбор писем, другой — сам ящик.
Отправители не теряют письма сразу. Если сервер недоступен, почтовые серверы отправителей повторяют доставку несколько дней, так что после восстановления приёма большая часть писем придёт сама. Коды подтверждения к тому времени обычно истекают — их нужно запросить заново.

Колонка «Писем» в списке ящиков

В списке ящиков рядом с квотой показывается «непрочитанных / всего». Клик по счётчику открывает ящик в почте. Пока сбор не отработал, вместо чисел стоит прочерк — это не то же самое, что «писем нет».

Список ящиков с колонками «Квота» и «Писем»
Колонка «Писем» в списке ящиков: прочерк — сбор ещё не отработал.
Как это устроено внутри. Количество писем и занятое место считаются обходом почтовых каталогов по расписанию, а не запросом при каждом открытии страницы: у сотни ящиков это заняло бы секунды на каждый рендер. Поэтому значения обновляются с задержкой, равной выбранному интервалу сбора.

Домены и DNS (Cloudflare)

URL: /admin/settings/dns/ — управление DNS-зонами через Cloudflare API прямо из биллинга: зоны и записи (CRUD), сценарии в один клик и диагностика.

Cloudflare API из России. Запросы к Cloudflare идут через прокси — прямой доступ с российских IP блокируется.

Автонастройка почтовых ящиков и DNS

Единый сервис провижинга (billing/services/mailbox_provisioning.py) создаёт почтовый ящик, прописывает DNS-записи и заполняет настройки подключения — одной кнопкой. Работает везде, где системе нужен ящик.

Требования. Кнопка «Автонастроить ящик» появляется, если включён модуль «Почтовый сервер» и настроен Cloudflare API для домена организации (раздел «Домены и DNS»). Иначе поля SMTP/IMAP заполняются вручную.

Что делает автонастройка

  1. Регистрирует домен в почтовом сервере (идемпотентно — повторный запуск безопасен).
  2. Создаёт ящик <имя>@<домен> с сгенерированным паролем. Если ящик уже существует — переиспользует его пароль, ничего не сбрасывая.
  3. Прописывает DNS-записи почты в Cloudflare: A (mail.домен), MX, SPF, DKIM, DMARC.
  4. Заполняет параметры подключения (SMTP и/или IMAP) в том модуле, откуда запущена.

Где доступна

РазделЧто настраиваетПроверка
Организации → вкладка «Почта (SMTP)» ящик noreply@ + SMTP организации «Проверить» (коннект + авторизация), «Отправить тест-письмо» (HTML на ваш e-mail)
Поддержка → карточка ящика → вкладка «Почта» ящик приёма обращений + IMAP и SMTP «Проверить IMAP», «Отправить тест»
Банковские выписки ящик bank@ + IMAP приёма выписок «Проверить» IMAP-подключение
Профиль сотрудника личный ящик сотрудника вход в веб-почту одной кнопкой
Домены и DNS поддомен (A/CNAME) проверка DNS-резолва хоста

Ящик сотрудника и пересылка

В профиле (/admin/settings/profile/) сотрудник создаёт себе ящик, если включена настройка «Разрешить персоналу создавать email». Логин подставляется из имени пользователя, пароль генерируется автоматически — достаточно нажать «Создать ящик». Опционально указывается адрес пересылки: копии входящих уходят на внешний адрес, оригинал остаётся в ящике.

Блок «Почта» в профиле сотрудника
Ваши ящики, уведомления по каждому и создание нового ящика в доступном домене.
flowchart TB
  subgraph R1 [" "]
    direction LR
    PR["Профиль сотрудника
«Создать ящик»"] --> CH{"Настройка
«Разрешить персоналу
создавать email»"} CH -->|включена| NEW["Ящик логин@домен
1 на домен"] end subgraph R2 [" "] direction LR PW["Пароль = пароль
входа в биллинг"] --> BELL["Письма во вкладке
«Почта» уведомлений"] BELL --> FW["Пересылка копий
на внешний адрес"] end R1 --> R2 style R1 fill:none,stroke:none style R2 fill:none,stroke:none
Служебные имена защищены. Сотруднику нельзя занять admin, info, postmaster и другие зарезервированные логины; лимит — один ящик на домен.