В настоящем документе приведено описание архитектуры корпоративной электронной почты Почта VK WorkSpace.
Данный документ предназначен для технических специалистов, которые внедряют или поддерживают приведенные технологические решения:
- системные администраторы;
- специалисты по информационной безопасности.
Документ предполагает наличие технических знаний в области проектирования систем, однако будет полезен и специалистам бизнес-подразделений.
Наименование | Определение |
|---|---|
СУБД | Система управления базами данных |
ЦОД | Центр обработки данных |
Сниппет | Фрагмент исходного текста, применяемый в поисковых запросах |
AD | Active Directory - служба каталогов пользователей |
LDAP | Lightweight Directory Access Protocol - облегченный протокол доступа к каталогам, открытый стандартизированный протокол, применяемый для работы с различным реализациям служб каталогов, в том числе и Active Directory |
Почта VK WorkSpace может быть установлена как на площадке заказчика, так и в облачном сервисе VK Cloud Solutions.
Архитектура системы позволяет выполнить установку как в полностью закрытый контур для работы только внутри корпоративной сети, так и в контур с возможностью работы из внешних сетей.
На схеме ниже представлены возможные интеграции с Почта VK WorkSpace:
LDAP, AD
Система работает со службами каталогов по LDAP, клиент предоставляет только путь и пароль на чтение. Из инфраструктуры клиента в систему выгружаются и сохраняются все пользователи, группы и группы рассылок, организационно-штатная структура. Администратор настраивает синхронизацию, и дальнейшая аутентификация происходит в AD через LDAP — в почтовой системе пароли не хранятся.
В дополнение к данным из AD в почтовой системе можно вручную создавать пользователей, импортировать данные из CSV-файла.
SIEM
Система управления информационной безопасностью и событиями безопасности. Сервисы Почта VK WorkSpace логируют события безопасности, которые могут быть интегрированы с корпоративной подсистемой SIEM. Для интеграции с SIEM используется сервис управления логами Rsyslog, передача логов поддерживается по протоколам TCP, UDP.
DLP
Интеграция с DLP-системами возможна в разрыв с MX. В почтовой системе МХ настраивается на DLP-систему (собственные базовые проверки отключаются), в результате осуществляется пересылка всех писем из DLP-системы в почтовую систему (даже тех писем, которые отправлены внутри почтовой системы).
Антивирус/Антиспам
Используются внешние решения (например, DrWeb, Kaspersky) с целью экономии ресурсов клиента. (Встроенная антивирус / антиспам-система была бы очень ресурсоемка для клиентов, занимает много места, требует большого трафика входящей почты для качественного анализа, что не всегда возможно у клиента.)
NTP
Используется для синхронизации времени. Возможно использование внешних серверов, если нет сложностей с прохождением сетевых фильтров.
DNS
Используется для соотношения IP-адресов и доменных имен, находящихся в базе данных сервера.
IMAP-сервера
Используется для взаимодействия с внешними почтовыми серверами для отправки/получения и синхронизации почты.
Почтовые сервера/SMTP
Используется для взаимодействия с внешними или внутренними корпортавными почтовыми серверами для отправки/получения почты.
Верхнеуровневая архитектура системы представлена на рисунке ниже:
Запросы пользователей поступают на балансировщик, который отвечает за прием и распределение пользовательских запросов между фронтендом и бэкендом, в свою очередь балансировщик отправляет запросы на отдачу динамически генерируемых веб-страниц и статических файлов для передачи в веб-клиент.
Фронтенд и Бэкенд продукта Почта VK WorkSpace состоит из множества различных компонентов (будут рассмотрены ниже), которые отвечают за определенную часть бизнес-логики.
Архитектура продукта Почта VK WorkSpace позволяет выполнить масштабирование — в зависимости от потребностей клиента. При необходимотси масштабирования хранилищ и баз данных в Почта VK WorkSpace предусмотрена репликация и шардирование баз данных.
Схема компонентов продукта Почта VK WorkSpace представлена на рисунке ниже:
На схеме компоненты Почта VK WorkSpace разделены на три логических уровня:
-
Уровень клиентского доступа — отвечает за прием всех форм клиентских покдлючений (запросов), а также выполняет роль бансировки нагрузки и маршрутизации запросов. Подключение клиентов напрямую к уровню приложений и хранению данных — исключено.
-
Уровень приложений — отвечает за реализацию бизнес-логики, обеспечивает контроль прав доступа.
-
Уровень хранения данных и файлов — отвечает за организацию надежного хранения информационных ресурсов и предоставления гарантированного доступа к ним. Подключение к данному уровню обеспечивается только с уровня приложений.
Сервисы компонента pub являются входной точкой в Почту VK WorkSpace и выполняют различные проверки входных и выходных данных, в том числе авторизуют запросы пользователей.
Общая схема сервисов комнонента pub приведена на рисунке ниже:
Подробное описание потоков данных приведено в разделе Диаграммы потоков данных.
Описание сервисов компонента pub приведено в таблице ниже:
Наименование сервиса | Назначение |
|---|---|
pub (web) | Прокси-сервис для почтового трафика при отправке почты через веб-клиента, для внешних и внутренних пользователей |
pub-mx | Прием и фильтр SMTP-запросов от внешних неаутентифицированных пользователей |
pub-imap | Прокси почтового трафика по IMAP-протоколу для отправки/получения и синхронизации почты |
pub-smtp | Прием и фильтр SMTP-запросов от внутренних и внешних аутентифицированных пользователей |
Применение fedman — работа системы Почта VK WorkSpace при размещении в двух и более ЦОД, в рамках одного Заказчика. При этом в каждом ЦОД выполняется самостоятельная отказоустойчивая инсталляция продукта Почта VK WorkSpace и которая обслуживает пользователей, относящихся к каждой из инсталляций. В каждом ЦОД создаются самостоятельные кластеры.
Сервис fedman применяется только для почтового трафика.
В качестве СУБД сервис fedman использует Tarantool. Создается кластер Tarantool в режиме синхронной репликации.
Общая схема сервисов приведена на рисунке ниже:
Описание сервисов авторизации и аутентификации приведено в таблице ниже:
Наименование сервиса | Назначение |
|---|---|
swa | Группа сервисов аутентификации (clauth, GoCube, UMI) выдача, хранение и валидация сессионных токенов для пользователей |
adloader | Сервис интеграции с LDAP — синхронизирует списки пользователей и групп рассылок, проверяет пароль в LDAP |
Последовательность прохождения аутентификации и авторизации пользователя:
- Пользователь отправляет запрос на аутентификациию по протоколу IMAP/SMTP/HTTP.
- Pub идентифицирует запрос и выполяет перенаправление в сервисы swa.
- Swa выполняет проверку учетной записи, если пользователь локальный — осуществляет проверку логина и пароля в хранилище пользовательских аккаунтов, если пользователь из внешнего каталога, то выполняет проверку учетной записи через adloader, который отправляет запрос по протоколу LDAP в AD.
- В случае успешной аутентификации swa передает сессионный токен в ответ пользователю.
Общая схема сервисов приведена на рисунке ниже:
Описание сервисов MTA приведено в таблице ниже:
Наименование сервиса | Назначение |
|---|---|
smtp | Агент пересылки почтовых сообщений от внутренних и внешних аутентифицированных пользователей |
relay | Сервис пересылки почтовых сообщений без авторизации для внешнего и внутреннего трафика |
mx | Агент пересылки сообщений от внешних неаутентифицированных пользователей |
dlp | DLP-система для обработки внешнего/внутреннего почтового трафика |
Основной сервис для отправки и получения почтовых сообщений по протоколу HTTP для авторизованных пользователей.
Сервис mailapi взаимодействует с :
- сервисом mescalito — для получения писем из хранилища;
- с агентом пересылки почтовых сообщений по gRPC — для отправки почтовых сообщений на внешний почтовый сервер и отправки писем между внутренними сотрудниками.
Основной сервис для получения почтовых сообщений по протоколу IMAP для авторизованных пользователей.
Сервис imapd взаимодействет с :
- прокси сервисом pub-imap — для доставки почтовых сообщений по протоколу IMAP в почтовый клиент;
- сервисом mescalito — для получения писем для отправки по IMAP.
Сервисы транспортных правил отвечают за управление потоками входящих и исходящих писем (проверка доменов получателя, проверка темы и текста письма, проверка размера вложения и др.).
Описание сервисов транспортных правил приведено в таблице ниже:
Наименование сервиса | Назначение |
|---|---|
dlp | Обработчик писем системы транспортных правил |
dlp-pg | База данных системы транспортных правил |
dlp-api | API системы транспортных правил |
Резервное копирование в продукте Почта VK WorkSpace выполняется с помощью bmwclient — это клиент для выполнения запросов к gRPC API. Основные функции клиента: резервное копирование и восстановление почтового ящика, облака, календарей, профилей пользователей и адресных книг.
Описание сервисов резервного копирования приведено в талице ниже:
Наименование сервиса | Назначение |
|---|---|
bmw | Сервис бэкапирования данных различных компонентов решения |
bmw-tnt | База данных сервиса резервного копирования |
Сервис для поиска контактов одновременно по доменной и личной адресным книгам.
В поиске реализовано две последовательности действий (процессов):
- Индексация новых писем.
- Обработка поисковых запросов.
Описание сервисов, используемых при индексации писем приведено в таблице ниже:
Наименование сервиса | Назначение |
|---|---|
storage | Условное наименование нескольких хранилищ данных разного назначения |
extract-http | API извлечения текста из документов (например, .docx) |
crow-frontend | API поиска в почте |
crow-index | Хранилище поисковых индексов |
crow-usershards | База данных связей: пользователь, индекс, хранилище индексов |
Общая схема сервисов при индексации приведена на рисунке ниже:
При получении нового письма пользователем storage формирует и отправляет уведомление о новом письме в crow-frontend.
Сервисом crow-frontend выполняется следующая последовательность действий:
- получает тело письма со storage;
- чистит письмо от лишнего (html, css и др.), оставляет только текст;
- выполняет токенизацию, лемматизацию и т.д.;
- если в письме был приложен документ, то извлекается текст из документа с помощью сервиса extract-http;
- преобразует найденные лексемы в формат, пригодный для сохранения в поисковый индекс пользователю;
- сохраняет очищенный текст в сервис storage (этот текст называется поисковый сниппет, в дальнейшем он используется для визульной подсветки результатов поиска);
- сохраняет выделенные лексемы в оба индексатора.
Общая схема сервисов при индексации приведена на рисунке ниже:
При выполнении поисковых запросов пользователем сервисом crow-frontend выполняется следующая последовательность действий:
- запрос токенизируется и лемматизируется, как и при индексации письма (в результате получается набор токенов, которые можно искать в индексаторах);
- crow-frontend с помощью crow-usershards выполняет поиск ip-индексаторов и отправляет запрос в один из них crow-usershards;
- если запрос слишком долгий или неудачный, то выполняется такой же запрос в парный индексатор;
- когда ответ получен, то он содержит id писем, которые искал пользователь (т.е. в этих письмах есть запрошенные пользователем фразы);
- crow-frontend отправляет запрос в storage для получения поисковых сниппетов;
- клиенту отдается ответ, включающий сниппеты, подсветку наиболее релевантных результатов поиска, id писем, подходящих под поисковый запрос.
Сервис для загрузки больших вложений в почтовое сообщение. Более подробное описание сервиса приведено в документе Архитектура VK Диск.
Общая схема сервисов приведена на рисунке ниже:
После обработки внешнего и внутреннего почтового трафика сервисами MTA (smtp, mx) выполняется пересылка почтового трафика в DLP-систему. После успешено пройденной проверки в DLP-системе выполняется передача почтового трафика (сервисом relay) в сервис deliveryd для доставки в почтовое хранилище.
Описание сервисов приведено в таблице ниже:
Наименование сервиса | Назначение |
|---|---|
deliveryd | Сервис доставки почтовых сообщений в хранилище |
storage | Условное наименование нескольких хранилищ данных разного назначения |
Сбор пользовательской статистики осуществляется сервисом rebecca на БД PostgreSQL.
Сервис rebecca позволяет искать события без привязки к пользователю, то есть просматривать все события из определенной группы.
В рамках продукта Почта VK WorkSpace с помощью сервиса rebecca выполняется сбор действий пользователя, которые сопровождаются отправкой событий. События делятся на следующие группы:
- MailAdmin — действия администратора в Почте.
- Mail — события почты и авторизации.
- Alias — события алиасов почтовых ящиков.
В системе Почта VK WorkSpace мониторинг реализован с помощью следующих инструментов:
- Grafana — платформа для визуализации и анализа метрик, поддерживает множество источников данных (Prometheus, VictoriaMetrics, ClickHouse и др.).
- Victoria Metrics — высокопроизводительная СУБД для хранения и обработки временных рядов, альтернатива Prometheus с оптимизированным хранилищем.
- ClickHouse — колоночная аналитическая СУБД, часто используется для хранения и агрегации метрик (особенно в связке с Graphite/Carbon).
- Carbon-clickhouse — прокси-сервер для Graphite, который записывает метрики напрямую в ClickHouse вместо Whisper/Carbon.
- Graphite-clickhouse — Graphite-совместимый бэкенд для хранения метрик в ClickHouse.
- Carbonapi — высокопроизводительный API-сервер для Graphite, поддерживает разные бэкенды (включая ClickHouse).
- Carbon-c-relay — быстрый и легковесный ретранслятор для Carbon (Graphite), поддерживает балансировку и шардирование.
- Telegraf — агент для сбора метрик (CPU, память, сети и др.)
- Cadvisor — инструмент от Google для мониторинга контейнеров (Docker, Kubernetes), собирает данные о ресурсах.
- Node-exporter — экспортер для Prometheus, собирает метрики с Linux-серверов (диски, сеть, CPU и т.д.).
Общая схема сервисов мониторинга приведена ниже:
Системы хранения данных — в документе содержится информация о принципах работы системы хранения данных и описание сервисов хранения данных.
Требования к ресурсам серверного обородования приведены в документации по установке:
- Полная установка — в документе описана процедура установки Почты VK WorkSpace в минимальной рабочей конфигурации на одну виртуальную машину.
- Кластерная установка — в документе описана процедура кластерной установки Почты VK WorkSpace.
- Тестовая установка — в документе описана тестовая установка Почты VK WorkSpace на одну виртуальную машину.