Проект

Общее

Профиль

Приложение 2. Алгоритм обработки сессий SMTP

Tegu обладает максимально гибкой архитектурой.

Информация о всех объектах (их типах и размещении) хранится в базе данных конфигурации.
Выполняя свою работу, модули запрашивают в БД конфигурации необходимые параметры.
Коннекторы обеспечивают доступ к объектам в необходимом формате.

Рассмотрим алгоритм подробнее:

  1. Сессия SMTP начинается с блока Blacklist/Greylist, который получив IP адрес и домен сендера, проверяет их в базе данных конфигурации. Хранение данных конфигурации каждого домена возможно в нескольких вариантах. С этой целью менеджер базы данных конфигураций находит путь и выбирает соответствующий коннектор для подключения к локальной базе или СУБД.
  2. На этапе RCPT TO сервер должен выполнить авторизацию получателя. С этой целью процесс обращается к базе данных конфигураций (которых, как описано выше может быть несколько в разных хранилищах), находит тип и расположение одной из баз, которая хранит данные нужного пользователя и через соответствующий коннектор подключается к базе пользователей (таковыми могут быть любое количество локальных баз или LDAP3-серверов).
  3. Авторизовав пользователя и на этапе команды DATA сервер находит в конфигурации расположение антивирусного/антиспамового сервера и отправляет ему сообщение по протоколу Milter. Milter агент (сервер) выполняет проверку на вирусы, проверку на спам, а также выполняет любой кастомный сценарий обработки, написанный на языке LUA. В финале Milter-агент заполняет метрику и возвращает сообщение MTA.
  4. МТА определяет в базе конфигураций расположение очередей и помещает полученное сообщение в очередь на обработку.
  5. Очередь разбирает сообщения, выполняя для каждого сначала глобальные правила обработки (заданные администратором), затем локальные правила обработки (заданные пользователем). После передает сообщение на доставку.
  6. Процессы доставки определяют в базе конфигурации расположение хранилища для данного ящика, после чего осуществляет доставку (сохранение сообщение в ящике пользователя).

Все описанные процессы асинхронные, создаются сервером автоматически в нужном количестве и могут быть выполнены любой вычислительной нодой кластера.

Благодаря такой архитектуре, Tegu поддерживает авторизацию по любому протоколу любого типа (количество неограничено), включая локальный (автономный) в формате JSON. А любой почтовый яшик может хранится в любом формате на любом хранилище.