Benutzer-Werkzeuge

Webseiten-Werkzeuge


konfigurationsbeispiele:anbindung_provisioning

Dies ist eine alte Version des Dokuments!


Die einfach skalierbare Architektur von Benno MailArchiv bietet eine einfache Anbindung der Benno MailArchiv Teilsysteme an Komponenten von Drittherstellern.

Beispiel-Setup

Im Folgenden ist im Sinne eines „proof of concept“ beschrieben, wie die Anbindung von Benno MailArchiv in eine bestehende Hosting-Infrastruktur in der Praxis beispielhaft implementiert werden kann. Hierbei werden die folgenden Konfigurationen beschrieben.

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, Passwort, Mailadresse(n), usw.) exemplarisch in der SQLite-Datenbank provisioning.sqlite gespeichert. Die Provisioning-Datenbank ist hier beispielhaft mit vier Tabellen abgebildet.

Weder Login-Namen, Mailadressen noch Aliasadressen des Kunden sind in diesem fiktiven Szenario den Kunden-Mailboxen fest zugeordnet, wie dies in der Praxis häufig der Fall ist. In diesem Beispiel-Setup können E-Mail-Adressen und Aliase des Kunden daher jederzeit flexibel zwischen den Konten des Kunden hin und her verschoben 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.

Automatische Provisionierung

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

Die Kopien der E-Mails werden als .eml-Dateien vom MILTER auf dem Mail-Gateway (MTA) im Verzeichnis /milter/spool/dir gespeichert.

Der Cron-Job milter2smtp liest die .eml-Dateien. Mit Hilfe des Wertes des X-REAL-RCPTTO-Headers wird dann die Mailbox-Zuordnung aus der Provisioning-Datenbank ermittelt.

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.

Authentisierung

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.1510657851.txt.gz · Zuletzt geändert: 2017/11/14 11:10 von lwsystems