Email processor (email)

Описание

Процессор обмена email-сообщениями с почтовыми серверами.

Обеспечивает коммуникацию с почтовыми серверами (IMAP, STMP). Мониторит включенные IMAP каталоги, поступающие от отправителей сообщения размещает в коллекции модели данных /rest/v1/model/email/Messages, а создаваемые в ней сообщения `sending` отправляет получателям посредством SMTP.

Формирует коллекции/классы: email/Profiles, email/Accounts, email/Folders, email/Messages. Допускает их дальнейшую модификацию в сторону расширения состава свойств и вариантов значений перечислимых полей.

Взаимодействие с внешней бизнес-логикой осуществляется с использованием статусов сообщений (`sending`, `sent`, `error`, `received`, `raw`).

Table 1. Системные характеристики

Код

email

Режим работы

Сервис

Режим резервирования

Active-Passive.

Типы сайтов

Любые

Слой

Адаптер/процессор

Размещение

Внутренний

Сохранение и восстановление состояния при перезагрузке

Нет

Приложение

era_email

Возможности

  • Почтовые сообщения могут быть текстовыми, html или содержащими оба альтернативных варианта.

  • Вложения сохраняются в виде вложений к сущности email/Messages (поле file) и доступны через /rest/v1/model/email/Messages/ID_MESSAGE/attachments.

  • HTML содержимое также сохраняется в виде вложения в поле html и доступно через /rest/v1/model/email/Messages/ID_MESSAGE/html.

  • Все инлайны (файлы, используемые в рамках HTML) сохраняются в виде вложений в поле inlines и доступны через /rest/v1/model/email/Messages/ID_MESSAGE/inlines.

  • При получении сообщения его исходное содержимое RFC822 сохраняется в сущности в поле rawMessage в виде вложения и доступно через /email/Message и доступно через /rest/v1/model/email/Messages/ID_MESSAGE/rawMessage.

  • В случае, если сообщение не может быть распарсено и разложено по полям, то в сохраняется его неразобранное содержимое, и выставляется специальный статус `raw`

  • При создании аккаунта (/rest/v1/model/email/Accounts) и наличия соответствующего ему профиля (/rest/v1/model/email/Profiles) производит опрос состава каталогов и размещает их в выключенном виде в коллекцию email/Folders). После включения каталога начинается его мониторинг на предмет поступающих сообщений, а также мониторинг коллекциии email/Messages с фильтром по каталогу на предмет готовых к отправке сообщений.

Ограничения

  • Работает в режиме периодического опроса IMAP-сервера на предмет наличия входящих сообщений. Таймаут между опросами составляет по умолчанию 30 секунд. Управляется с помощью значения `after_read_timeout` в поле options по убыванию: /email/Folder, /email/Account, /email/Profile.

  • За удаление писем в IMAP каталоге отвечает параметр `deleteOnServer` сущности каталога.

Параметры

Table 2. Параметры
Имя Тип Умолчание Описание

name

str

required

Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы.

roletype

str

required

Тип роли. Возможные значения: "email".

iface

str

required

Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие ролей между собой.

ext

json

empty

Дополнительные опции роли. Содержит json объект или список.

enabled

bool

empty

Флаг активности роли. При установке в false роль не участвует в валидации и не запускается.

group

int

required

Номер группы.
В рамках горизонтального масштабирования роль может быть разделена на несколько групп на сайте, в каждой из которых активен только один экземпляр, а остальные зарезервированы.
Ответственность между группами разделяется по доменным множествам. Вместе все группы обслуживают полное доменное множество. Все роли одной группы должны иметь одинаковую ответственность.
Целое число от 1 до 9999999.

order

int

required

Порядок экземпляра роли в рамках группы.
Определяет в каком порядке будет происходить перетекание в режиме Active-Passive.

include_domains

array<str>

empty

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

Пример конфигурации

Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.

Конфигурация содержит раздел для описания всех экземпляров всех ролей. Параметры определяются для каждого конкретного экземпляра роли.

Пример узла
{
  "name": "im1",
  "roletype": "im",
  "iface": "eth0",

  "group": 11330,
  "order": 1
}

См. также