Dieser Projektteil basiert ganz wesentlich auf dem Standard IMAP für den Zugriff auf E-Mail-Konten.
Wer in einem Webmail-Frontend ohne SMTP/IMAP eingesperrt ist ohne die Möglichkeit,
darf → diesen Link drücken.
Wenn wenigstens eine automatische Weiterleitung an eine andere E-Mail-Adresse (Vertretungsregelung, Filter) möglich ist, gibt es einen Hack auf eigene Verantwortung. Dazu später mehr.
Deshalb: Sowohl für das Archivieren der ausgehenden Mails als auch später ggf. für „Fax/Scan to E-Mail“ brauchen wir einen zusätzlichen IMAP-Mailaccount. Dann können wir auch gleich diesen Account nutzen, um die auf den Mailkonten eingehenden Mails in Unterordnern zu sammeln.
Vorteile:
Hier haben es Brandenburger Schulen gut: Das Lehrer- oder Schulmail-System ermöglicht Schulen relativ einfach, zusätzliche datenschutzkonforme Mailaccounts einzurichten. Stichwort: „sonstiges pädagogisches Personal“. Nicht weitersagen
Alle anderen müssen schauen:
Im Folgenden haben wir einen solchen Account und nennen ihn archiv@schule.de.
Auf diesen greifen wir mit einem E-Mail-Clienten zu und richten für jeden Mailaccount einen eigenen Unterordner ein:
Hier gibt es nur eine einzige praktisch sinnvolle Möglichkeit:
Einrichten eines Standard-BCC-Empfänger in allen Mailclienten.
Die üblichen „echten“ Mailclients wie Thunderbird, Claws_Mail, der eM Client aber auch FairEmail für Android und sogar das echte Outlook können das. Hier muss dann natürlich als Ziel archiv@schule.de eingetragen werden.
Ohne diese Funktion können ausgehende E-Mails nicht archiviert werden, siehe wieder → hier.
Man könnte lokal einen eigenen SMTP-Mailserver einrichten1), dann den ausgehenden Mailverkehr darüber lenken und im Transfer Kopien an das Archiv schicken. Könnte man. Will man aber nicht. So einen SMTP-Server zu betreiben ist eine richtige Aufgabe. Sie wurden gewarnt.
Im Archiv-Account müssen die Kopien im Posteingang landen (Kontrolle mit Client). Das Verschieben in den richtigen Unterordner macht später imapfilter automagisch.
PS: Bei jeder neuen Mail kann dann der Nutzer individuell entscheiden, ob eine ausgehende Mail doch nicht im Archiv landet.
Hier gibt es nun einen Vorteil: Praktisch alle Mail-Provider bieten an, eingehende Mails bereits auf dem Server mit Filtern vorzuverarbeiten. Zugang zu diesen Filtern hat man über das Webfrontend des Providers (Webmail). Das nutzen wir natürlich erbarmungslos aus
Leider ist der Funktionsumfang verschieden. Bei uns gibt es zwei Varianten:
⚙️ → Einstellungen → E-Mail → Filterregeln → [ + Neue Regel hinzufügen ]
Gibt es bereits weitere Filterregeln, muss diese neue Regel ganz nach oben geschoben werden. Fertig.
Obwohl hier der gleiche Server läuft (Open-Xchange), ist der Umleiten-Filter anders konfiguriert: Er nimmt „umleiten“ wörtlich und löscht das Original. Passt nicht für das Archivieren 8-(
Dafür ist hier [Kopieren nach…] aktiviert2). Also richten wir einen Unterordner „Archivieren“3) ein und konfigurieren den Filter:
⚙️ → E-Mail → Filterregeln → [ + Neue Regel hinzufügen ]
Gibt es bereits weitere Filterregeln, muss diese neue Regel ganz nach oben geschoben werden. Fertig.
Das Verschieben in den Archivaccount macht dann imapfilter (s. u.).
Liegt der Mailaccount bei einem anderen Provider, muss genau geschaut und getestet werden, welche Aktionen für Filter angeboten werden und wie diese funktionieren. Das Prinzip sollte mit den beiden obigen Beispielen klar sein.
Jetzt müssen die gefilterten Mails „nur noch“ in die passenden Ordner des Archivaccounts verschoben werden. Hierfür kommt nun die Software imapfilter ins Spiel. Diese läuft auf unserem Archivrechner und sortiert regelmäßig um. Wir melden uns also am Rechner an und wecheln zu root.
Installieren geht sehr schnell:
root@archiv.local:~# apt install imapfilter
In der Grundeinstellung arbeitet imapfilter das Lua-Script $HOME/.imapfilter/config.lua ab. Dort könnten wir jetzt alles reinschreiben. Machen wir aber nicht.
Der Ordnung und der Flexibilität wegen richten wir einen neuen Ordner unter /opt ein und legen dort einzelne Lua-Scripte für jeden Mailaccount an:
# cd /opt # mkdir imapfilter # cd imapfilter # touch archiv-schulleiter.lua archiv-stellvertreterin.lua archiv-ostko.lua archiv-sekretariat.lua archiv-schulaufsicht.lua
Mit dem mc geht das natürlich auch interaktiv.
Am einfachsten öffnet man jetzt eins der angelegten Scripte mit dem mc und F4 und kopiert über die Zwischenablage dieses Script als Vorlage ein:
-- Sekretariat: Strato-Account, direkte Weiterleitung an Archiv -- Alle Nachrichten liegen schon im Posteingang des Archivaccounts. -- Account archiv = IMAP { server = 'imap.provider.de', username = 'archiv@schule.de', password = 'GEHEIM', ssl = 'auto' } -- ------------------------------------------------------------- -- Actions -- ------------------------------------------------------------- -- eingehende Mails inklusive BCC eingang = archiv.INBOX:match_to('.*[sS]ekretariat@schule\\.de.*') + archiv.INBOX:match_cc('.*[sS]ekretariat@schule\\.de.*') + archiv.INBOX:match_header('.*BY: [sS]ekretariat@schule\\.de.*') + archiv.INBOX:match_header('.*for .*[sS]ekretariat@schule\\.de.*') eingang:mark_seen() eingang:move_messages(archiv['Sekretariat']) -- ausgehende Mails ausgang = archiv.INBOX:match_from('.*[sS]ekretariat@schule\\.de.*') ausgang:mark_seen() ausgang:move_messages(archiv['Sekretariat'])
Hinweise:
Für das automatische Abarbeiten ist es natürlich notwendig, die Passwörter in den Scripten abzulegen. Wird das Projekt nicht von einem Schulleitungsmitglied betreut, empfehle ich eine schriftliche Vereinbarung wegen Vertraulichkeit/Verschwiegenheit und so…
Nach allen Anpassungen an die eigenen Daten kann das Script auf der Kommandozeile getestet werden:
# imapfilter -c /opt/imapfilter/archiv-sekretariat.lua
Wenn im Posteingang bereits passende Nachrichten liegen, müssten Statusmeldungen zum Verschieben erscheinen. Mit einem Mail-Client sollte kontrolliert werden, dass alle Mails von diesem Account tatsächlich im richtigen Unterordner liegen4).
Ansonsten geht die Fehlersuche los… Kennen die Informatiker.
Hier liegen die eingegangenen Nachrichten noch nicht im Posteingang des Archivs, sondern im Unterordner „Archivieren“ des Originalaccounts. Die Nachrichten müssen also von imapfilter verschoben werden:
-- Accounts ostko = IMAP { server = 'imap.provider.de', username = 'ostko@schule.de', password = 'GEHEIM', ssl = 'auto', } archiv = IMAP { server = 'imap.provider.de', username = 'archiv@schule.de', password = 'GEHEIM', ssl = 'auto', } -- ------------------------------------------------------------- -- Actions -- ------------------------------------------------------------- ostko:unsubscribe_mailbox('Archivieren') eingang = ostko['Archivieren']:select_all() eingang:mark_seen() eingang:move_messages(archiv['OSTKO']) ausgang = archiv.INBOX:match_from('.*ostko@schule\\.de.*') ausgang:mark_seen() ausgang:move_messages(archiv['OSTKO']) -- -------------------------------------------------------------
Hinweise:
Nach obigen Mustern und ggf. notwendigen Anpassungen richtet man nun für jeden zu archivierenden Account so ein Lua-Script ein und testet es einzeln sorgfältig.
Man kann in die obigen Scripte auch zusätzlich einen Spam-Schutz einbauen oder Mails, die eindeutig erkennbar sind und gar nicht archiviert werden sollen, vor der Verarbeitung löschen.
Wir haben z. B. ein Ticketsystem, welches einen Haufen Erinnerungsmails verschickt. Die werden rausfliegen.
Oder der Bürokopierer schickt nervige „Toner fast alle“ Meldungen oder …
Den Einbau dieser Erweiterungen überlasse ich euch als Übung …
Alle diese Scripte müssen nun regelmäßig aufgerufen werden, um die Mails einzusammeln und in die richtigen Ordner einzuordnen. Hierzu nutzen wir den auf jedem Linux-Rechner vorhandenen Cron-Dienst, bearbeiten dafür die Datei /etc/crontab und hängen ganz unten an:
#- E-Mail-Archivierung ------------------------------------------------------------------ */5 * * * * root /usr/bin/imapfilter -c /opt/imapfilter/archiv-ostko.lua > /dev/null */5 * * * * root /usr/bin/imapfilter -c /opt/imapfilter/archiv-sekretariat.lua > /dev/null ... usw.
Dann verschicken wir ein paar Testmails hin und her und beobachten gespannt mit einem Mail-Clienten im Archivaccount, ob Kopien da landen wo sie hingehören.
Im Dauerbetrieb müssen die Scripte nicht alle 5 Minuten laufen und könnten sogar zeitlich entzerrt nach Dienstschluss laufen:
#- E-Mail-Archivierung ------------------------------------------------------------------ 10 18 * * * root /usr/bin/imapfilter -c /opt/imapfilter/archiv-ostko.lua > /dev/null 20 18 * * * root /usr/bin/imapfilter -c /opt/imapfilter/archiv-sekretariat.lua > /dev/null ... usw.
Dann wird auch der Import in Paperless-ngx entzerrt (nicht alles auf einmal).
Wir haben einen Mailaccount „Archiv“, in welchem in Unterordnern regelmäßig und automatisch Kopien aller ein- und ausgehenden E-Mails der zu archivierenden Mailaccounts gesammelt werden.
Die Arbeit der Kolleg/-innen wird dabei nicht gestört oder beeinflusst. Soweit muss das funktionieren.
PS: Mit Thunderbird z. B. kann man sich im linken Fensterteil bei den Ordnern die Anzahl und die Gesamtgröße anzeigen lassen und schon mal schauen, was da so in einer Woche aufläuft…