User tools

Website tools


import

This is an old version of the document!


import

overview

One goal in developing Benno MailArchiv 2 was, and remains, to offer customers maximum flexibility in connecting to existing email systems. The interface for importing emails is therefore intentionally simple and generic

E-Mails werden einfach über eine Dateisystem-Schnittstelle importiert. Die zu importierenden E-Mails werden als Dateien im RFC5322 - Internet Message Format (.eml-Dateien - also im Originalformat, wie sie im Internet übertragen werden) in dem Import-Verzeichnis (standardmäßig /srv/benno/inbox) abgelegt. Benno MailArchiv liest diese Dateien ein, archiviert sie und indexiert den Inhalt der E-Mail und der Anhänge.

This method allows for the generic connection of virtually any email/groupware system.

The following points should be noted when importing emails into Benno MailArchiv.

  • atomic copying to the INBOX
  • Import of files with naming patterns (default: *.eml)

Atomic copying

Benno MailArchiv „scannt“ die Inbox (also das Import-Verzeichnis) laufend auf neue, zu archivierende Mails (also: Dateien). Sobald hier eine Datei angelegt ist (und zum Namensmuster der zu importierenden Mails passt - Standard ist .eml - vgl. auch die Installationsanleitung) wird diese Mail bzw. Datei von Benno MailArchiv eingelesen und verarbeitet. Benno MailArchiv erkennt allerdings nicht, ob der Schreibvorgang in die Datei schon vollständig abgeschlossen ist, oder ob das Ablegen der Mail in die Datei zum Zeitpunkt des Lesens noch vor sich geht. Um sicher zu stellen, dass der Schreibvorgang in die Datei abgeschlossen ist (also die Mail vollständig in der Datei abgelegt ist), bedient man sich sinnvollerweise eines kleinen Tricks.

Umgangssprachlich formuliert, wird die Mail zunächst in eine temporäre Datei geschrieben. Diese temporäre Datei wird von Benno MailArchiv ignoriert, da Benno MailArchiv nur Dateien mit einem bestimmten Namensmuster (Standard: *.eml) verarbeitet. Somit kann die temporäre Datei auch genau in dem Moment mit der Mail gefüllt werden, in der Benno MailArchiv nach neuen Mails im Verzeichnis Ausschau hält. Sobald die Mail abgelegt ist (= Schreibvorgang beendet), wird die temporäre Datei geschlossen. Damit Benno MailArchiv sie jetzt auch findet und archiviert, muss sie nur noch „umbenannt“ werden, so dass sie in das Namensschema der Dateien passt, die Benno MailArchiv importiert (*.eml). Das Umbenennen von Dateien mit dem Linux-/Unix-Kommando „mv“ (move) ist nicht zwangsläufig atomar, aus diesem Grunde sollte unbedingt die nachstehend beschriebene Prozedur eingehalten werden, um die Datei mit atomaren Schritten umzubenennen und auf diesem Weg für Benno MailArchiv sichtbar zu machen.

Renaming the file at the atomic level (i.e., without the "mv" prefix) is very easy: A hard link to the file is created. The hard link is necessarily atomic because—simply put—an inode is created in the directory. After the link is created, the temporary file is deleted. This "trick" ensures that the file is renamed in such a way that it is guaranteed to remain closed. This method was chosen to avoid complicated, error-prone, and sometimes non-portable locking implementations when implementing connectors for importing emails.

ACHTUNG: Hardlinks funktionieren nicht über Dateisystemgrenzen hinweg! Dieser Vorgang sollte daher nur innerhalb des „inbox“-Verzeichnisses angewendet werden!!

The following example illustrates the process that should be carried out for each email to be archived:

Example

cp importmail.eml /srv/benno/inbox/importmail.tmp
ln /srv/benno/inbox/importmail.tmp /srv/benno/inbox/importmail.eml
rm /srv/benno/inbox/importmail.tmp

Namensmuster

The naming pattern controls which files from the Inbox directory are imported into the archive. By default, all files with the extension ".eml" are archived.

Das Namensmuster der zu importierenden Dateien wird in der Datei /etc/benno/benno.xml im Tag festgelegt.

Connectoren

Spezifische Informtionen zur Anbindung bestimmter Mail-/Groupwarelösungen

import.1482944171.txt.gz · Zuletzt geändert: 2016/12/28 16:56 von lwsystems