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