In diesem Artikel wird die Konfiguration eines Benno MailArchiv Systems mit mehreren Mandanten beschrieben, bei der die E-Mails von eine einzelne Importquelle (z.B. ein einzelnes Mailgateway mit MILTER-Anbindung) importiert werden.
Setups mit mehreren Importquellen wie z.B. mehreren Mailgateways mit MILTER-Schnittstelle und/oder Microsoft Exchange- oder IMAP-Servern erfordern eine etwas angepasste Konfiguration.
Die Standard-Konfiguration mit einem Mandanten ist ebenfalls gesondert beschrieben.
Alle zu importierenden E-Mails aller Mandenten werden im Inbox-Verzeichnis /srv/benno/inbox gespeichert. Im Beispiel sind zwei Mandanten mit jeweils einem Container konfiguriert.
Innerhalb der logischen Struktur des Archivers werden die Mandanten anhand des Identifier des Containers unterschieden (Mandant1 bzw. Mandant2).
Für Mandant1 werden zwei Domains im gleichen Container archviert. Die Domains werden im <conditions /> Tag des Containers festgelegt.
Der Archiver liest alle Dateien, die auf das Muster *.eml passen und analysiert die Header der E-Mail. Falls einer der <senderheaders /> oder <recipientheaders /> eine Adresse mit der Domain „mandant1.de“ oder „mandant2.de“ enthält, wird die E-Mail dem entsprechenden Container zugeordnet und weiter verarbeitet.
Im vorliegenden Fall wird eine E-Mail, die von oder an die Domain „mandant1.de“ geschickt wurde, unterhalb des Verzeichnissess /srv/benno/archives/mx1/Mandant1/repo
gespeichert und indexiert. Die indexierten Inhalte werden zusätzlich im zugeordneten Index-Verzeichnis gespeichert.
Nachdem eine E-Mail alle passenden Container durchlaufen hat, wird sie aus dem Inbox-Verzeichnis gelöscht. Falls eine E-Mail keinem der Container zugeordnet werden kann, wird sie ohne weitere Speicherung gelöscht. (Somit werden nur die E-Mails tatsächlich archiviert, die ins Archiv gelangen sollen bzw. Mails anderer Domains, die nicht archiviert werden sollen, werden auf diesem Wege verworfen).
Die benötigten Verzeichnisse für „repo“ und „index“ werden automatisch angelegt. Hier muss nur sichergestellt werden, daß der Benutzer „benno“ die entsprechenden Schreibberechtigungen auf dem Dateisystem besitzt.
<benno> <configuredarchives> <containerarchive> <identifier>mailsrv_1</identifier> <conditions> <all /> </conditions> <directorywatcher directory="/srv/benno/inbox" pattern=".*.eml"> <mailfile> <senderheaders> <name>X-REAL-MAILFROM</name> <name>X-BENNO-GW</name> <name>From</name> </senderheaders> <recipientheaders> <name>X-REAL-RCPTTO</name> <name>BCC</name> <name>To</name> <name>Cc</name> </recipientheaders> <secretheaders> <name>X-REAL-MAILFROM</name> <name>X-REAL-RCPTTO</name> <name>X-BENNO-GW</name> <name>BCC</name> </secretheaders> </mailfile> </directorywatcher> <configuredcontainers> <!-- CONTAINER 1 ######################################################## --> <simplecontainer> <identifier>Mandant1</identifier> <conditions> <or> <domain sender="true" recipient="true" from="true" to="true" cc="true">mandant1.de</domain> <domain sender="true" recipient="true" from="true" to="true" cc="true">mandant1.com</domain> </or> </conditions> <luceneindex version="LUCENE_36"> <directory>/srv/benno/archives/mx1/Mandant1/index</directory> </luceneindex> <yearlyfsbox> <fshexbennobox> <monthlyfsjournal/> <directory>/srv/benno/archives/mx1/Mandant1/repo</directory> <subdirs>3</subdirs> <dirlength>2</dirlength> <compression>gzip</compression> </fshexbennobox> </yearlyfsbox> </simplecontainer> <!-- CONTAINER 2 ######################################################## --> <simplecontainer> <identifier>Mandant2</identifier> <conditions> <domain sender="true" recipient="true" from="true" to="true" cc="true">mandant2.de</domain> </conditions> <luceneindex version="LUCENE_36"> <directory>/srv/benno/archives/mx1/Mandant2/index</directory> </luceneindex> <yearlyfsbox> <fshexbennobox> <monthlyfsjournal/> <directory>/srv/benno/archives/mx1/Mandant2/repo</directory> <subdirs>3</subdirs> <dirlength>2</dirlength> <compression>gzip</compression> </fshexbennobox> </yearlyfsbox> </simplecontainer> <!-- /End containers --> </configuredcontainers> </containerarchive> </configuredarchives> <bennoRest> <jettyConfig>/etc/benno/jetty.xml</jettyConfig> <!-- shareSecret should be written in first line of "passwdFile" --> <passwdFile>/etc/benno/rest.secret</passwdFile> <!-- deprecated sharedSecret configuration <sharedSecret>nichtzuerratendeslaengerespasswort</sharedSecret> --> <indexCacheTTL>300000</indexCacheTTL> </bennoRest> </benno>