User tools

Website tools


Configuration examples: provisioning connection

This is an old version of the document!


Benno MailArchiv's easily scalable architecture offers simple integration of Benno MailArchiv subsystems with third-party components.

Example setup

The following is a proof of concept describing how the integration of Benno MailArchiv into an existing hosting infrastructure can be implemented in practice. The following configurations are described.

Die Beispiele erläutern mit einfach nachvollziehbaren Shell-Skripten und einfachen Textdateien als Ersatz für an dieser Stelle typischerweise eingesetzte Datenbanken (oder Directory-Systeme usw.) die Anbindung an die jeweiligen Backend-Systeme eines Hosters.

Aus den hier dargelegten Skripten und „Beispiel-Datenbanken“ kann eine Integration in die eigenen Hosting-Systeme schnell abgeleitet und in einer beliebigen Programmiersprache der eigenen Wahl implementiert werden.

Backend System des Hosters (Provisioning-Datenbank)

In dem in diesem Proof of Concept (PoC) verwendeten fiktiven Backend-System (Provisioning-Datenbank) unseres fiktiven Hosters werden die Daten (Benutzername, Mailadresse, usw.) exemplarisch in der SQLite-Datenbank provisioning.sqlite gespeichert. Die Provisioning-Datenbank ist hier beispielhaft mit vier Tabellen abgebildet.

In diesem Szenario unseres fiktiven Hosters sind weder Login-Namen, Mailadressen noch Aliasadressen fix den Kunden-Mailboxen zugeordnet, wie dies in der Praxis häufig der Fall ist. In diesem Beispiel-Setup können E-Mail-Adressen und Aliase des Kunden jederzeit flexibel zwischen den Konten des Kunden hin und her geschoben werden. Das nachfolgende Datenbankschema ist daher etwas umfangreicher, als bei einem einfachen Setup, wo E-Mail-Adresse (+ Alias-Adressen) = Mailbox ist.

Mail setup

Alle ein- und ausgehenden E-Mails werden über ein Mail-Gateway (MTA) geroutet. Auf diesem ist ein benno-milter konfiguriert, der von jeder E-Mail eine Kopie zwischenspeichert.

Die zwischengespeicherten E-Mails werden per SMTP an den auf dem Benno MailArchiv-Server laufenden benno-smtp Daemon übermittelt. Die lokale Kopie der Mail auf dem MTA wird nach Übergabe an Benno MailArchiv gelöscht.

Automatic provisioning

Falls ein Kunde das Produkt Benno MailArchiv im Online-Portal des Hosters bucht, wird die Option in der Datenbank des Provisioning-Systems des Hosters eingetragen und anschließend die Aktualisierung der Benno MailArchiv Konfiguration getriggert. Die Konfigurationsdatei benno.xml wird dabei von benno-writeconfig.sh automatisch aus der Datenbank heraus erstellt (generiert). Anschließend wird die Konfiguration der Benno-Dienste neu geladen, so dass die um den neuen Kunden ergänzte Konfiguration aktiviert wird.

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

Das obige Skript benno-writeconfig.sh generiert die Konfigurationsdatei benno.xml, in der die zu archivierenden Mandanten konfiguriert sind, automatisch aus den Template-Dateien xml_header.tpl, xml_container.tpl, xml_footer.tpl. Im Container-Template wird der Name des Kunden sowie die Domain(s), die in diesem Container archiviert werden sollen, eingesetzt.

Danach wird die Konfiguration der Dienste benno-archive und benno-rest neu geladen. Die neue Konfiguration ist damit in Benno MailArchiv aktiv.

Mail import

Copies of the emails are stored as .eml files by MILTER on the mail gateway (MTA) in the directory /milter/spool/dir .

The cron job milter2smtp reads the .eml files. Using the value of the X-REAL-RCPTTOheader, the mailbox mapping is then determined from the provisioning database.

Im Beispiel-Setup liefert die Abfrage für den Alias info@hansen-und-meyer.de die Mailbox-Id „m3“. Diese Information wird vor dem Übertragen der E-Mail an benno-smtp als zusätzlicher Header in die E-Mail eingetragen. Somit wird die Zuordnung der einzelnen Mail zur Empfänger-Mailbox zum Zeitpunkt der Zustellung in Index und Archiv festgehalten.

Authentication

Bei der Authentisierung am Web-Interface von Benno MailArchiv wird dem Benutzer, dem die Mailbox m3 zugeordnet ist, die E-Mail Adresse m3@benno-mailarchiv.local als für ihn gültige Adresse übergeben. Damit kann er auf die oben importierte E-Mail zugreifen.

Der für diese Zwecke beim Archivieren in die Mail eingefügte Header X-Benno-MAILBOXID wird von Benno MailArchiv bei Anzeige oder Download der Mail aus dieser entfernt.

konfigurationsbeispiele/anbindung_provisioning.1510657300.txt.gz · Zuletzt geändert: 2017/11/14 11:01 von lwsystems