Инструменты пользователя

Инструменты веб-сайта


импорт

Импорт интерфейсов

Описание импорта

Одной из целей разработки Benno MailArchiv 2 было и остается предоставление клиентам максимальной гибкости при подключении к существующим почтовым системам. Поэтому интерфейс для импорта электронных писем намеренно прост и универсален

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.

Этот метод позволяет осуществлять универсальное подключение практически любой системы электронной почты/группового программного обеспечения.

При импорте электронных писем в Benno MailArchiv следует учитывать следующие моменты.

  • атомарное копирование во входящие
  • Импорт файлов с использованием шаблонов именования (по умолчанию: *.eml)

Атомное копирование

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.

Переименование файла на атомарном уровне (то есть без префикса "mv") очень просто: создаётся жёсткая ссылка на файл. Жёсткая ссылка обязательно является атомарной, поскольку — проще говоря — в каталоге создаётся inode. После создания ссылки временный файл удаляется. Этот "трюк" гарантирует, что файл будет переименован таким образом, что он гарантированно останется закрытым. Этот метод был выбран для того, чтобы избежать сложных, подверженных ошибкам и иногда непереносимых реализаций блокировки при создании коннекторов для импорта электронной почты.

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

Следующий пример иллюстрирует процесс, который необходимо выполнить для архивирования каждого электронного письма:

Пример скрипта командной оболочки

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

Шаблон именования импорта

Шаблон именования определяет, какие файлы из папки «Входящие» будут импортированы в архив. По умолчанию архивируются все файлы с расширением «.eml».

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

импорт.txt Последнее изменение: 02.09.2020 12:04 lwsystems