Легко масштабируемая архитектура Benno MailArchiv обеспечивает простую интеграцию подсистем Benno MailArchiv с компонентами сторонних производителей.
Ниже представлен концептуальный пример, описывающий практическую реализацию интеграции Benno MailArchiv в существующую хостинговую инфраструктуру. Описаны следующие конфигурации.
В примерах объясняется подключение к соответствующим внутренним системам хостинг-провайдера с использованием простых и понятных скриптов командной оболочки и текстовых файлов в качестве замены обычно используемых здесь баз данных.
Представленные здесь скрипты и «примеры баз данных» позволяют быстро интегрировать их в ваши собственные хостинговые системы и реализовать на любом языке программирования по вашему выбору.
В этом концептуальном исследовании (PoC) используется вымышленная серверная система, которая хранит данные в базе данных SQLite, provisioning.sqlite . База данных показана здесь в качестве примера с четырьмя таблицами.
В этом сценарии с нашим вымышленным хостинг-провайдером ни логины, ни адреса электронной почты, ни псевдонимы не привязаны к почтовым ящикам клиентов постоянно, как это часто бывает на практике. В этом примере настройки адреса электронной почты и псевдонимы клиента могут гибко перемещаться между учетными записями клиента в любое время. Поэтому следующая схема базы данных несколько более обширна, чем в простой конфигурации, где адрес электронной почты (+ адреса псевдонимов) = почтовый ящик.
Все входящие и исходящие электронные письма проходят через почтовый шлюз (MTA). benno-milter , который временно хранит копию каждого электронного письма.
Кэшированные электронные письма передаются по протоколу SMTP на benno-smtp, работающий на сервере Benno MailArchiv. После этого локальная копия письма на сервере MTA удаляется.
Если клиент подписывается на Benno MailArchiv через онлайн-портал хостинг-провайдера, эта опция вносится в базу данных системы управления ресурсами, после чего обновляется конфигурация Benno MailArchiv. Файл конфигурации benno.xml автоматически создается (генерируется) из базы данных скриптом benno-writeconfig.sh . Затем конфигурация сервиса перезагружается.
#!/bin/sh # # benno-writeconfig.sh ( cat xml_header.tpl sqlite provisioning.sqlite \ 'SELECT c.displayname,m.maildomain FROM customer AS c ,maildomain AS m WHERE c.customer_id=m.customer_id;' | \ while read -d\ | domain customer; do cat xml_container.tpl | sed -e "s/###CUSTOMER###/ $customer /g" -e "s/###DOMAIN###/ $domain /" ; done cat xml_footer.tpl ) > / etc / benno / benno.xml service benno-archive reload service benno-rest reload
Скрипт benno-writeconfig.sh создает файл benno.xml на основе файлов шаблонов xml_header.tpl , xml_container.tpl и xml_footer.tpl . Шаблон контейнера содержит имя клиента и домен(ы), которые должны быть заархивированы в этом контейнере.
конфигурация сервисов benno-archive и benno-rest .
Копии электронных писем сохраняются системой MILTER на почтовом шлюзе (MTA) в каталоге /milter/spool/dir .
Задание cron milter2smtp считывает файлы .eml. Используя значение X-REAL-RCPTTO , определяется соответствие почтовых ящиков на основе базы данных инициализации.
В приведенном примере запроса к псевдониму info@hansen-und-meyer.de идентификатор почтового ящика " m3 ". Эта информация добавляется в электронное письмо в качестве дополнительного заголовка перед его передачей в benno-smtp . Это гарантирует, что привязка каждого письма к почтовому ящику получателя будет зафиксирована в индексе и архиве в момент доставки.
При аутентификации в веб-интерфейсе Benno MailArchiv пользователю, назначенному почтовому ящику m3 адрес электронной почты m3@benno-mailarchiv.local в качестве действительного адреса. Это позволяет ему получить доступ к электронной почте, импортированной выше.
X-Benno-MAILBOXID, который вставляется в электронное письмо для целей архивирования, удаляется программой Benno MailArchiv при просмотре или загрузке письма .