Konfigurationsdatei: /etc/benno/benno.xml
Container der die in diesem Benno System konfigurierten Archive enthält.
Einfaches Archiv ohne Container.
Name des Archivs zur Verwaltung
OR-Verknüpfung verschiedener Kriterien.
Alle nicht gesetzten Attribute sind per Default auf true gesetzt.
Ein Semikolon „;“ ist laut RFC2822 und RFC2822 kein Trenner einzelner Adressen, sondern dient in Verbindugn mit dem „:“ dazu eine Gruppe einzuklammern.
<conditions> <not> <address sender="true" recipient="true" from="true" to="true" cc="true">blockme@hansen-und-meyer.de</address> </not> </conditions>
Hier wird jede E-Mail, die die Adresse blockme@hansen-und-meyer.de in einem der Sender- oder Empfänger Header enthält nicht archiviert! Dieses ist unabhängig davon, ob die E-Mail per CC an eine Adresse geschickt wurde, die archiviert werden soll.
<domain sender=„true“ recipient=„true“ regex=„true“>(?i)^((?!\blw-systems\.net\b).)*$</domain>
Der regläre Ausdruck wird als Java-Regex interpretiert.
Aus den konfigurierten Headern für Sender- und Empfänger werden die eigentlichen Adressen (der Form „personal@domain“) als Token extrahiert. Nur dieser String wird mit der konfigurierten Adresse verglichen. Vor dem Vergleich werden die „<“ und „>“ ebenfalls entfernt. Bei der Prüfung wird die Groß- und Kleinschreibung nicht beachtet.
Die Prüfung der Token erfolgt einzeln gegen jeden der konfigurierten logischen Ausdrücke. Bei der Prüfung wird der Zustand (State) der E-Mail nicht gespeichert, so daß keine Entscheidung der Form WENN abc@domain UND NICHT def@domain getroffen werden kann.
Alle E-Mails der Inbox werden gelöscht! Dieses betrifft auch E-Mails, auf die keines der Kriterien zutrifft.
Jede E-Mail durchläuft alle konfigurierten Archive und Container. Sobald ein Kriterium zutrifft, wird die jeweilige E-Mail indexiert und im entsprechenden Repository gespeichert.
Nach Durchlauf aller konfigurierten Komponenten wird die E-Mail gelöscht.
Archiv ist abgeschlossen.
Überwachung eines Verzeichnisses zum Mailimport.
<directorywatcher directory="/srv/benno/inbox" pattern=".*\.eml"> <mailfile>...</mailfile> </directorywatcher>
Parser für Standard Mailfiles, eventuell mit zusätzlichen Headern.
<mailfile> <senderheaders> <name>X-REAL-MAILFROM</name> </senderheaders> <recipientheaders> <name>X-REAL-RCPTTO</name> </recipientheaders> <secretheaders> <name>X-REAL-MAILFROM</name> <name>X-REAL-RCPTTO</name> <name>BCC</name> </secretheaders> <customhash> <name>From</name> <name>To</name> <name>Subject</name> <name>Date</name> <name>Message-Id</name> </customhash> </mailfile>
Die Zuordnung von Sender- und Empfängerdaten erfolgt innerhalb der Tags <senderheaders /> bzw. recipientheaders />.
Alle Header, die im Tag <secretheaders /> aufgeführt sind, werden vor Berechnung der Checksumme und dem Speichern aus der E-Mail entfernt. Diese Informationen sind ausschließlich im Index vorhanden.
Parser für Bennomailfiles (Mit Envelope Informationenen im zusätzlichen Header und Checksumme)
<bennomailfile> <senderheaders> <name>X-REAL-MAILFROM</name> </senderheaders> <recipientheaders> <name>X-REAL-RCPTTO</name> </recipientheaders> <secretheaders> <name>X-REAL-MAILFROM</name> <name>X-REAL-RCPTTO</name> <name>BCC</name> </secretheaders> </bennomailfile>
Die secretheaders werden vor der Indexierung und Archivierung aus der eigentlichen E-Mail entfernt.
<luceneindex version=“LUCENE_36“> <directory>/srv/mailarchive/default/index</directory> <indexTimeout>120</indexTimeout> </luceneindex>
VERALTET Wird in zukünftigen Versionen entfallen!
Eine einzelne Box wird konfiguriert und verwendet.
<singlefsbox> <fshexbennobox> <monthlyfsjournal/> <directory>/srv/benno/archive/repo</directory> <subdirs>3</subdirs> <dirlength>2</dirlength> <compression>gzip</compression> </fshexbennobox> </singlefsbox>
Konfiguration für jährliche Boxerstellung. Der Grundpfad wird in der Beispielkonfiguration der Box angegeben, für die echten Boxen wird jeweils eine Konfiguration mit dem erweiterten Pfad „…/2011/“ erstellt. Damit befinden sich die eigentlichen Boxen in Unterverzeichnissen des in der Beispielkonfiguration angegebenen Pfads.
<yearlyfsbox> <Box /> </yearlyfsbox>
Box in der die Nachrichten im Bennomailformat (Mail mit vorangestellten zusätzlichen Headern mit Envelope Informationen und Checksumme) abgelegt werden. Der Pfad wird aus der Hex Darstellung des Hashwertes generiert, pro Unterverzeichnisebene werden jeweils „dirlength“ Zeichen verwendet, es gibt „subdirs“ Unterverzeichnisebenen.
<fshexbennobox> <Journal /> // Journal dieser Box. Es wird im Unterverzeichnis „.../journal“ angelegt. <id>boxname</id> // Name der Box, wird bei generierten Boxen meist automatisch vergeben. <compression>none</compression> // Kompression der Mails in der Box. // Unterstützt werden „none“ und „gzip“. <directory>/srv/mailarchive/box</directory> // Verzeichnis in dem die Box ihre Dateien ablegt <subdirs>3</subdirs> // Anzahl der Unterverzeichnisebenen bis zur Maildatei <dirlength>2</dirlength> // Anzahl der Zeichen, die eine Unterverzeichnisebene bilden </fshexbennobox>
Relativer Pfad: …/repo/2012/14/F9/66/4704AB5AA55D479A1EAFEB65FDCF58587DE609D316D08152AEE2B1DAC100.gz
Sender: j.elixmann@hansen-und-meyer.de Recipient: j.kohning@hansen-und-meyer.de Size: 895 Date: 2012-06-21 09:01:08 UTC ===== Hash: 14F9664704AB5AA55D479A1EAFEB65FDCF58587DE609D316D08152AEE2B1DAC1 Message-ID: <4AC1H8JKNSKJKHKH787876E624.5000408@web.de> Date: Thu, 21 Jun 2012 11:01:08 +0200 From: j.elixmann@hansen-und-meyer.de User-Agent: Mozilla-Thunderbird 2.0.0.22 (X11/20090706) MIME-Version: 1.0 To: j.kohning@hansen-und-meyer.de Subject: Termin kommende Woche Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit ...
<benno management="2555"> <configuredarchives> <!-- ARCHIV1 --> <containerarchive> <identifier>LWsystems</identifier> <conditions><all /></conditions> <readonly>true</readonly> <directorywatcher directory="/srv/benno/inbox" pattern=".*\.eml"> <!-- Parser der Eingangsdokumente (mailfile|bennomailfile) --> <mailfile> <senderheaders> <!-- Header, die den Sender-Envelope enthalten --> <name>X-REAL-MAILFROM</name> <name>RECIPIENT-FROM</name> </senderheaders> <recipientheaders> <!-- Header, die den Empfänger-Envelope enthalten --> <name>X-REAL-RCPTTO</name> <name>RECIPIENT-TO</name> <name>BCC</name> </recipientheaders> <secretheaders> <!-- Diese (Envelope-) Header werden aus dem Kopf der Mail entfernt --> <name>X-REAL-MAILFROM</name> <name>RECIPIENT-FROM</name> <name>X-REAL-RCPTTO</name> <name>RECIPIENT-TO</name> <name>BCC</name> </secretheaders> </mailfile> </directorywatcher> <!-- Container innerhalb des Archivs --> <configuredcontainers> <simplecontainer> <identifier>LWsystems</identifier> <conditions> <!-- welche Mails werden diesem Container zugeordnet --> <!-- Angabe, welche Kriterien (sender, recipient, ...) zur Zuordnung überprüft werden. --> <domain sender="true" recipient="true" from="true" to="true" cc="true">lw-systems.de</domain> </conditions> <readonly>true</readonly> <luceneindex version="LUCENE_33"> <directory>/srv/benno/archives/lw-systems.de/index</directory> </luceneindex> <yearlyfsbox> <fshexbennobox> <monthlyfsjournal/> <directory>/srv/benno/archives/lw-systems.de/repo</directory> <subdirs>3</subdirs> <dirlength>2</dirlength> <compression>gzip</compression> </fshexbennobox> </yearlyfsbox> </simplecontainer> </configuredcontainers> </containerarchive> </configuredarchives> </benno>