Kopano-Mailmigration für LD4.0
Anleitung nur für LogoDIDACT 4.0
Die nachfolgenden Schritte beschreiben, wie Daten aus Kopano exportiert und in die IServ Schulplattform importiert werden können. Dies betrifft konkret:
- Kalender
Voraussetzungen
- Vor dem Export muss eine externe Festplatte oder ein sonstiger Speicherort am ldhost angeschlossen und eingehängt werden. Aufgrund der einfachen Handhabung geht die Dokumentation im Folgenden davon aus, dass eine externe USB-Festplatte mit einem ext4 Linux-Dateisystem und dem Label "USB-Backup" verwendet wird. Eine Sicherung auf ein anderes Medium ist ebenfalls möglich.
- Die Mailmigration wird in zwei Teilen gemacht: 2-3 Tage vor dem Umstellungstermin wird der erstmalige Export angestoßen. Am Tag der Umstellung wird derselbe Export erneut gestartet, hier erfolgt ein finaler Abgleich.
LogoDIDACT Postfach-Export vorbereiten
Zur Durchführung des Postfach-Datenexports werden verschiedene Tools und ergänzende Ubuntu-Pakete im LXC-Container kopano-g2 installiert. Auch im Konfigurationssystem puppeteer-g3 sind Einstellungen per YAML-Konfigurationsdatei festzulegen. Damit wird einleitend begonnen, eine SSH-Verbindung zum LogoDIDACT Server herzustellen und die nachfolgenden Konfigurationsabschnitte im Puppeteer hinzugefügt.
| ldhost | |
|---|---|
- Vorhandene Datei
/etc/logodidact/hiera/custom.d/kopano-g2.yamlmit einem Texteditor bearbeiten - Zusätzliche Einstellungen zur YAML-Datei hinzufügen und die sonstigen, bereits vorhandenen Einstellungen unberührt lassen.
Hier wird eine Anpassung der OpenLDAP Attributsfelder vorgenommen, damit in den Kopano-Konten neben der Mailadresse auch der normale Linux-Accountname sowie die Unique-ID als Benutzereigenschaften zur Verfügung stehen. Außerdem wird ein zusätzlicher IMAP-Dienst am Server eingerichtet, der User-Postfächer an der Shell (ohne Angabe der einzelnen Benutzer-Kennwörter) exportierbar macht. Die obigen Firewall-Einstellungen begrenzen die Erreichbarkeit auf die lokale Zone (loopback Device).
Die Änderungen wie üblich unterhalb des Verzeichnis /etc/logodidact/ ins GIT speichern.
| puppeteer-g3 | |
|---|---|
Zurück im ldhost muss der LXC-Container kopano-g2 kurzzeitig angehalten werden. Dies dient dem Zweck, die Backup-Festplatte einzuhängen und im Namespace des LXCs verfügbar zu machen.
| ldhost | |
|---|---|
ACHTUNG
Das Label oder der Pfad zur Backup-Partition muss auf Ihre Gegebenheiten angepasst werden.
Anschließend in den LXC-Container kopano-g2 wechseln und die Änderungen per prun anwenden.
| ldhost | |
|---|---|
Nun erfolgt die Installation der zusätzlich benötigten Tools, die für den Export verwendet werden:
Info
Um den manuellen Aufwand zu reduzieren, steht hierzu ein Shell-Skript zur Verfügung, welches im Container heruntergeladen werden kann.
| kopano-g2 | |
|---|---|
Innerhalb des Skriptes sind nun verschiedene Optionen wählbar. Diese können entweder einzeln oder gesammelt mit dem Parameter --all aufgerufen werden. Das Skript läuft diese Schritte automatisch ab, einzelne Schritte können jedoch über den genannten Weg wiederholt werden.

Nun wird die Installation angestoßen, bitte die Konsolenausgabe beachten.
| kopano-g2 | |
|---|---|
Neben der Installation von Paketen finden durch das Setup-Skript einige weitere Schritte automatisch statt. Es werden auch zusätzliche Migrationsskripte ins Verzeichnis /opt/export-tools/ entpackt, um den Vorgang zu vereinfachen. Ein gewisser Komplexitätsgrad bleibt beim Übertragen von E-Mail-Postfächern dennoch übrig, es muss in jedem Fall sehr sorgfältig gearbeitet werden. Durch das Entpacken weiterer Tools nach /opt/export-tools/ ist es möglich, Aktionen darin durch Feedback zu verbessern.
Der letzte Schritt 6 weist nach der Ausführung darauf hin, dass YAML-Einstellungen im puppeteer-g3 festgelegt werden müssen. Dies ist bereits geschehen, wenn man dieser Anleitung gefolgt ist. Daher muss lediglich noch der hinzugefügte systemd-Service kopano-gateway-bypassauth.service gestartet werden, um die Ergänzungen im Mail-Container abzuschließen.
| kopano-g2 | |
|---|---|
Sofern der Dienst nun als aktiv gekennzeichnet wird, sind die Vorbereitungen abgeschlossen und der eigentliche Export kann gestartet werden.
1. Ausführen des ersten Exportes
Info
Zur Durchführung des IMAP-Exportes wird ein weiteres, eigenständiges Shell-Skript task2_export-kopano-stores.sh zur Verfügung gestellt, um einen Teil der Aufgaben zu automatisieren. Es empfiehlt sich, diese in einer Screen-Sitzung auszuführen, um ungewollte Abbrüche zu verhindern.
Dies soll den Export vereinfachen, es ist davon auszugehen, dass der Postfach-Export viele Stunden zur Abarbeitung benötigt und das Shell-Skript soll hierbei unterstützen, damit diese Aktionen im Hintergrund, ohne weitere manuelle Eingriffe, stattfinden können.
| kopano-g2 | |
|---|---|
Analog zum Setup-Skript aus dem vorherigen Schritt, liefert auch das Export-Skript verschiedene Parameter mit, um einzelne Schritt gezielt auszuführen:

1.1 Übersicht der einzelnen Schalter
--step1
Erstellt bzw. erneuert ein Komplettbackup der gesamten Kopano-Installation in einem proprietären Kopano-Datenbankformat (MAPI-Objekte im Binärformat). Diese Daten sind ausschließlich als Fallback gedacht und werden nicht für die Migration nach IServ verwendet. Das Backup wird in einem Berkeley-DB-Format gespeichert und benötigt entsprechenden Speicherplatz.
--step2
Erstellt eine Kopano-Benutzerliste als kopano.userlist.csv (mit Kopano-Name, Linux-Account, IServ-Account). Grundlage für alle weiteren Exporte und das spätere Mapping nach IServ.
--step3
Erzeugt auf Basis der kopano.userlist.csv Konfigurationsdateien für die Export-Tools (z. B. offlineimap/vdirsyncer). Muss erneut ausgeführt werden, wenn sich die kopano.userlist.csv geändert hat.
--step4 (Kalender)
Exportiert bzw. aktualisiert die Kalenderdaten (ICS-Dateien) der Benutzer auf der Backup-Festplatte.
--step5 (Kontakte)
Exportiert bzw. aktualisiert die Kontaktdaten (VCF-Dateien) der Benutzer auf der Backup-Festplatte.
--step6
Erzeugt oder aktualisiert weitere Konfigurationsdateien für die verwendeten Tools (Import/Export), ebenfalls auf Basis der aktuellen kopano.userlist.csv. Nach Änderungen an der CSV erneut ausführen.
--step7
Exportiert bzw. aktualisiert die E-Mail-Nachrichten (Maildir-Struktur) der Benutzer auf der Backup-Festplatte.
Besonderer Hinweis!
In Kombination mit --use-imapsync können Mails direkt von Kopano zu IServ synchronisiert werden (Echtzeit, ohne Zwischenspeicher). Beide Systeme müssen parallel laufen und sich per Netzwerk erreichen!
--step8
Erstellt zusätzliche Metadaten, z. B. die Datei kopano.userlist-extra.yaml mit Alias-Adressen und Verteilerlisten („Distribution Lists“). Hilfreich, um Aliasse und Verteiler später in IServ manuell nachzubilden.
1.2 Funktionsweise von task2_export-kopano-stores.sh
Das Shell-Skript verwendet für den E-Mail-Nachrichtenexport das IMAP-Tool offlineimap3. Es ist so aufgebaut, dass es mehrfach aufgerufen werden kann, um nachträglich neue Nachrichten (differenziell) zu synchronisieren.
Bei sehr großen E-Mail-Postfächern kann der Export entsprechende Zeit in Anspruch nehmen. offlineimap3 ermöglicht zwar das parallele Exportieren mehrerer Postfächer (Threads), das Exportieren eines einzelnen großen Postfachs kann trotzdem mehrere Stunden in Anspruch nehmen.
Daher ist es empfehlenswert, den Export der IMAP-Postfächer bereits einige Tage vor dem vereinbarten Migrationstermin zu starten und zum eigentlichen Migrationstermin nur noch die zwischenzeitlich neu eingegangenen Nachrichten nachzusynchronisieren.
Dem Hilfetext des Skripts ist außerdem zu entnehmen, dass vor dem Nachrichtenexport weitere Schritte ausgeführt werden, z. B.:
- Export von Kalenderobjekten
- Export von Kontaktobjekten
Diese Exporte erfolgen über das Tool kopano-rfcdump.py in den Schritten 4 und 5. Sie sind bewusst vorgezogen, da sie im Vergleich zum Nachrichtenexport deutlich schneller ablaufen.
1.3 Konfigurationsdatei für task2_export-kopano-stores.sh
Das Skript task2_export-kopano-stores.sh benötigt zwingend eine individuelle Konfigurationsdatei. Darin werden unter anderem folgende Angaben hinterlegt:
- Pfade für den Datenexport auf die bereits eingehängte Backup-Festplatte.
- ein LogoDIDACT-Admin (für den Export),
- ein IServ-Admin (für den späteren Import).
Wichtig
Diese Admin-Konten sind keine generischen Accounts; sie müssen über die nötigen Rechte verfügen, um auf alle Postfächer zugreifen zu können.
Die Konfigurationsdatei sollte im gleichen Verzeichnis liegen wie das Skript, also im Ordner /root/migration/ im LXC-Container kopano-g2.
Der Dateiname sollte kopano_backup.config lauten, wie in der dazugehörigen Abbildung gezeigt.
Solange diese Konfigurationsdatei nicht existiert, bricht das Skript beim Start mit einem Fehler ab und gibt Beispielzeilen für eine Konfiguration auf der Konsole aus. Zunächst eine Beispiel-Konfigurationsdatei erzeugen durch Aufruf des folgenden Kommandos:
| kopano-g2 | |
|---|---|
Die erzeugte Konfigurationsdatei kopano_backup.config muss nun mit einem Texteditor bearbeitet, mit sinnvollen Werten ergänzt und anschließend wieder abgespeichert werden.
Im unteren Bereich der Konfigurationsdatei werden die Zugangsdaten für den LogoDIDACT-Admin und den IServ-Admin eingetragen.
Die konkrete Vergabe der notwendigen Rechte für den IServ-Admin wird später in der Anleitung beschrieben. Für den Export der Postfachdaten unter LogoDIDACT sind jedoch bereits jetzt die korrekten Rechte des LogoDIDACT-Admins entscheidend.

1.4 Kopano-Adminrechte des LogoDIDACT-Admins prüfen und setzen
Ob der LogoDIDACT-Admin die benötigten Kopano-Adminrechte besitzt, kann im LXC-Container mit dem Kommandozeilen-Tool kopano-admin geprüft werden.
(häufig admin@schule.local oder admin@maildomain-der-schule.de)
In der Ausgabe muss ersichtlich sein, dass der betreffende Benutzer Kopano-Administrator ist:

1.5 Nachträglichen Kopano-Admin einrichten
Wichtig
Dieser Schritt muss lediglich dann erfolgen, wenn keine Administratorberechtigungen gelistet sind.
- Im Browser am LD Control Center als admin anmelden.
- Bereich „Benutzerverwaltung“ öffnen.
- Im linken Menü „Verwaltung → Benutzer“ wählen.
- In der Tabelle das admin-Konto suchen, markieren und per Doppelklick bearbeiten.
- Das Konto als „Kopano-Administrator“ festlegen und speichern.
Diese Rolle ist Voraussetzung, bevor das Skript task2_export-kopano-stores.sh für Exportvorgänge verwendet werden kann.

1.6 Erster vollständiger Export aller Kopano-Postfächer
Sind Konfigurationsdatei und Rechte korrekt eingerichtet, kann der erste vollständige Export gestartet werden.
Um alle Kopano-Benutzer zu exportieren, wird das Skript mit dem Schalter --all aufgerufen.
Gefährlich
Um ungewollte Abbrüche zu verhindern, sollte das Skript in einer Screen-Sitzung gestartet werden!
1.7 Skript ausführen
| kopano-g2 | |
|---|---|
Nach erfolgreichem Durchlauf befinden sich die exportierten Daten im Verzeichnis /backup/ld-kopano-stores/ (wie in der Konfiguration angegeben).
Die Exportstruktur ist typischerweise:
mailboxes/– E-Mail-Nachrichten im Maildir-Formatcalendars/– Kalenderdaten im ICS-Format (*.ics)contacts/– Kontakte im vCard-Format (*.vcf)
Zur Zuordnung der Inhalte sind jeweils Unterordner pro Kopano-Benutzer vorhanden, und zwar sowohl unter mailboxes/ als auch unter calendars/ und contacts/

Im Rahmen von Schritt --step8 legt das Skript zusätzlich die Datei kopano.userlist-extra.yaml auf der Backup-Festplatte ab.
Diese Datei enthält:
-
Informationen zu E-Mail-Aliasadressen,
-
Informationen zu Kopano-Verteilergruppen (Distribution Lists).
Diese Informationen sind hilfreich, zum Beispiel wenn:
-
Benutzer in IServ wieder mit Mail-Aliasadressen ausgestattet werden sollen,
-
Verteilerlisten in IServ manuell neu angelegt werden müssen.
Ein Automatismus für die Rekonstruktion von Verteilern in IServ existiert nicht, die Neuanlage kann aber über den entsprechenden Menüpunkt erfolgen (sofern das Modul "Verteilerlisten" installiert ist).
Zur Veranschaulichung ist der Export von Kopano-Postfächern in einem Beispiel-Video demonstriert.
Hinweis!
In produktiv genutzten LogoDIDACT Installationen ist - anders als im Demo-Video - davon auszugehen, dass jeder Schritt sehr viel mehr Zeit in Anspruch nehmen wird. Speziell der Schritt 7 "IMAP-Nachrichtenexport" unter Umständen beim ersten Durchlauf auch mehr als 1 Tag, falls extrem große Postfächer existieren.
2. Weitere Exportdurchläufe (differentielle Nachsynchronisierung)
Wenn zwischen dem ersten Export und dem finalen Migrationstermin noch Zeit liegt, kann das Skript später erneut ausgeführt werden, um geänderte Daten nachzuziehen. Dabei können einzelne Schritte ausgelassen werden, die bereits erledigt wurden.
Typischer Ablauf für einen zweiten oder weiteren Export:
| ldhost | |
|---|---|
Hinweise
Statt einen Komplettablauf mit --all zu wiederholen, können nun gezielt einzelne Schritte des Skripts genutzt werden (z. B. --step4 für Kalender, --step5 für Kontakte, --step7 für E-Mails).
Die Neuerstellung der Kopano-Benutzerliste (Schritt --step2) ist nur notwendig, wenn seit dem ersten Export neue Benutzer auf dem LD-Server angelegt wurden. Andernfalls kann auf die bestehende kopano.userlist.csv zurückgegriffen werden.
Diese CSV-Datei kann auch im Texteditor bearbeitet werden, um Konten zu entfernen, deren Daten nicht nach IServ migriert werden sollen.

3. Abschließende Arbeiten unter LogoDIDACT zum Migrationszeitpunkt
Sobald alle Kopano-Exportdaten auf dem gewünschten Stand sind und die Umschaltung des Mailsystems bevorsteht, werden folgende Schritte durchgeführt.
Achtung
Ab diesem Zeitpunkt dürfen die Export-Tools nicht mehr verwendet werden!
3.1 SMTP-Empfang auf LogoDIDACT blockieren
In /etc/shorewall/ die Datei rules am Anfang der Regeln um eine Zeile erweitern, die externe SMTP-Verbindungen blockiert (keine neue Einlieferung von E-Mails).
| ldhost | |
|---|---|
| /etc/shorewall/rules | |
|---|---|
| ldhost | |
|---|---|
3.2 Exportierte Daten an IServ anpassen
Dies läuft über ein weiteres Skript, welches in Python umgesetzt ist.
| kopano-g2 | |
|---|---|
Das Skript übernimmt unter anderem:
- Umwandlung von IMAP-UTF7-Ordnernamen nach UTF-8 (wichtig für Umlaute und Sonderzeichen),
- Umbenennung deutscher Standardordner in englische Standardordner (passend zu IServ),
- Entfernung ungültiger Sonderzeichen in Ordnernamen,
- weitere Umbenennungen für die Zuordnung, z. B. Benutzername/calendar in Benutzername/home.
Vor jeder Umbenennung werden die geplanten Aktionen angezeigt und müssen bestätigt werden. Die Änderungen werden in Logdateien unterhalb von /backup/ld-kopano-stores/logs/ protokolliert.
Nach Abschluss werden zusätzlich Kalender-Ordnernamen normalisiert (--calendars) und vorgeschlagene Kontakte mit einem weiteren Aufruf von migrate_mailboxes.py bei Bedarf gelöscht (--delete-suggested-contacts).
3.3 Ausführung
| ldhost | |
|---|---|
3.4 Backup-Festplatte trennen
| ldhost | |
|---|---|
Die Backup-Festplatte vom Mountpunkt /var/backups/lxc/kopano-g2 aushängen.
| ldhost | |
|---|---|
Danach den Kopano-LXC wieder starten oder den LD-Server herunterfahren – abhängig vom geplanten Migrationsszenario.
4. DNS-Anpassungen für den Umstieg auf IServ
Für einen reibungslosen Umstieg müssen:
- alle bisherigen Mailadressen in IServ wieder so angelegt werden, wie sie zuvor existiert haben
- passende Zielpostfächer für den Import der Kopano-Daten bereitstehen.
Im DNS der verwendeten Maildomäne müssen insbesondere folgende Einträge angepasst werden:
- MX-Record (Zustellung eingehender E-Mails),
- TXT-SPF-Record (Autorisierung der IServ-Mailrelay-Server).
4.1 Beispiel MX-Anpassung
Vorher:
meine-schul-maildomain.de MX 10 pmg.schulkennung.logoip.de
Nachher:
meine-schul-maildomain.de MX 10 iserv-hostname.xyz
meine-schul-maildomain.de MX 50 offline.iserv.eu
Wichtig
iserv-hostname.xyz muss durch den tatsächlichen IServ-Hostname der Schule ersetzt werden.
Eventuell vorhandene zusätzliche MX-Records sollten entfernt werden, sofern sie nicht mehr benötigt werden.
4.2 Beispiel SPF-Anpassung
Vorher:
meine-schul-maildomain.de TXT "v=spf1 a mx -all"
Nachher:
meine-schul-maildomain.de TXT v=spf1 a mx a:relay1.iserv.eu a:relay2.iserv.eu a:relay3.iserv.eu a:relaybs.iserv.eu ?all"
Info
Je nach TTL und DNS-Infrastruktur können die Änderungen typischerweise zwischen einer Stunde und einem Tag benötigen, bis sie weltweit wirksam sind. Die Einlieferung neuer E-Mails in die Domain ist unabhängig von den bereits migrierten Postfachdaten. Bereits importierte Nachrichten bleiben erhalten.
Weiterführende Informationen zur DNS-Konfiguration können Sie hier finden: IServ DNS Doku
5. Mail-Import in IServ
Hinweis
Vor dem Import müssen in der IServ-Verwaltung alle Benutzerkonten angelegt sein, für die Kopano-E-Maildaten wiederhergestellt werden sollen. Ohne diese Benutzer existieren keine Zielpostfächer.
In der IServ-Dokumentation finden Sie alle Hinweise zum Importieren von Benutzern: IServ Benutzer Import
Alternativ finden Sie unter LD-User-Export (Nutzerübernahme) eine Anleitung zur Übernahme der Konten direkt aus LogoDIDACT.
5.1 IServ vorbreiten
Nun wird die Festplatte an den Server angeschlossen, im IServ nach /mnt gemountet und anschließend die benötigten Importtools über den apt-Paketmanager hinzugefügt.
| IServ | |
|---|---|
Hinweis
Der Pfad zur Partition der Backup-Disk muss ggf. angepasst werden.
5.2 Identitätsabgleich
Im eingehängten Pfad /mnt/ld-kopano-stores/ befindet sich die Datei kopano.userlist.csv mit drei Spalten:
- Kopano-Benutzername (LogoDIDACT),
- Linux-Accountname (LogoDIDACT),
- IServ-Benutzername (Zielkonto).
Wir gehen im Weiteren davon aus, dass die IServ-Benutzernamen dem Schema vorname.nachname entsprechen. Bei Abweichungen (Lehrerkürzel, sehr lange Namen etc.) muss die Datei angepasst werden.

Mittels des Skriptes ld-iserv-usermapping.sh kann nun die Mapping-Datei kopano.userlist.csv verarbeitet/angepasst werden.
Wichtig
Es empfiehlt sich, den Modus --check unter Angabe der CSV-Mappingdatei /mnt/ld-kopano-stores/kopano.userlist.csv mindestens einmal auszuführen. Dabei prüft das Skript, ob alle IServ-Benutzernamen (aus Spalte 3) bereits angelegt sind. Sollten Benutzer fehlen, gibt das Skript einen Fehler aus und listet die Zeile des fehlenden Benutzers auf.

Zur Überprüfung der Benutzernamen also den Check-Modus aufrufen.
5.3 Beispielausgabe nach Fehlermeldung
Das nachfolgende Bild zeigt, dass der Nutzer "tte" nicht gefunden werden konnte. Es handelt sich möglicherweise um ein Lehrerkonto, welches in LogoDIDACT mittels Lehrerkürzel als Accountnamen importiert wurde und innerhalb der IServ Schulplattform unter dem Schema Vorname.Nachname angelegt wurde:

Um nun die Datenmigration zu ermöglichen, muss die Mapping-Datei bearbeitet werden um darin in der Zeile des betroffenen Benutzers (line 6) einen gültigen IServ Account in der Spalte 3 (Zielkonto) zu hinterlegen.
Dieser Vorgang wird nun wiederholt, bis --check keine Fehlermeldung mehr anzeigt. Anschließend kann mittels des Parameters --patch die Korrektur überführt werden.
Hinweis
Bei Unklarheiten existiert im Backup-Pfad (/mnt/ld-kopano-stores/) eine zusätzliche YAML-Datei kopano.userlist.yaml, welche ausführliche Informationen zu den LogoDIDACT Benutzerkonten beinhaltet. Diese Datei muss nicht bearbeitet werden, sie dient ausschließlich dem Heranziehen zusätzlicher Informationen.
5.4 Import-Konfigurationsdateien patchen
Sind alle Namen korrekt, wird der Modus --patch verwendet, um die Importkonfigurationen anzupassen:
| IServ | |
|---|---|
Betroffene Dateien im Backupverzeichnis /mnt/ld-kopano-stores/:
- offlineimap.iserv.mailboxes.importlist.config – wird für den IMAP-Mailimport verwendet. Die Datei wird durch die Schalter
--patch=mailboxessowie--patch=allaktualisiert. - vdirsyncer.iserv.calendars.importlist.config – wird für den Kalenderimport per CalDAV verwendet. Die Datei wird durch die Schalter
--patch=calendarssowie--patch=allaktualisiert.
Hinweis
Der Patch-Modus sollte auch dann einmal aufgerufen werden, wenn keine Änderungen in der Mapping-Datei kopano.userlist.csv erfolgt sind. Im Patch-Modus wird nämlich auch nach Konten gesucht, die ggf. nicht im IServ angelegt sind, beispielsweise weil es sich um ausgeschiedene Benutzer handelt. Solche Konten können im Patch-Modus auskommentiert werden durch eine Abfrage während der Verarbeitung.
Die erste Anpassung, für die Postfach Import-Konfigurationsdatei:

Die zweite Anpassung, für die Kalender Import-Konfigurationsdatei:

6. Importieren der IMAP-Postfächer mittels Import-Skript
Die nachfolgenden Schritte beschreiben den Import der Postfächer in die IServ Schulplattform. Für den Datenimport wird u.a. auf das Tool offlineimap3 zurückgegriffen.
6.1 Einbinden der Backup-Festplatte vor dem Postfach-Import
Hinweis
Dieser Schritt kann übersprungen werden, wenn dieser Dokumentation chronologisch gefolgt wurde, da das Backup-Verzeichnis in diesem Fall schon eingehängt ist.
(Label/Pfad zur Backup-Partition ggf. anpassen)
| IServ | |
|---|---|
6.2 Import der Postfächer mittels import-to-iserv-helper.sh
Es wird ein Import-Skript import-to-iserv-helper.sh zur Verfügung gestellt, welches den Import aus den Kopano-Backupdaten ins IServ ermöglicht. Das Skript besitzt mehrere Modi, die über den Hilfe-Text eingesehen werden können und abhängig vom Modus unterschiedliche, zusätzliche Angaben erfordern.

Wichtig
Vor diesem Schritt muss der Identitätsabgleich, also das Mapping der Benutzeraccounts aus dem vorherigen Abschnitt 5. ohne Fehler durchgelaufen sein, damit alle Postfächer den ursprünglichen Nutzern zurückgespielt werden können! Ebenfalls muss der Patch-Modus aufgerufen worden sein, um die Zielkonten in der Import-Konfigurationsdatei offlineimap.iserv.mailboxes.importlist.config zu aktualisieren.
Für den Nachrichtenimport der Postfächer gibt es im Import-Skript import-to-iserv-helper.sh einen eigenen Ausführungsmodus. Das Skript arbeitet darin folgende Schritte ab:
- Es dient als Wrapper for offlineimap3 und führt einige Vorbereitungen im IServ automatisch durch, bevor der Datenimport erfolgt.
- Vorab wird automatisch ein temporärer Import-Benutzer
iserv-ld-maildata-importangelegt, der administrative Rechte für den Zugriff auf Postfächer + Kalender von Benutzern erhält. - Ebenfalls werden die Verbindungsdaten in der Konfigurationsdatei
offlineimap.iserv.mailboxes.importlist.configausgetauscht, damit sie zur lokalen IServ Installation passen.
Der Import benötigt (abhängig von der Postfachgröße und Benutzeranzahl) einiges an Zeit, deswegen muss der Aufruf innerhalb einer Screen-Session stattfinden.
Zum Importieren der IMAP-Postfächer wird der Ausführungmodus --run=mailboxes verwendet und zusätzlich die Import-Konfigurationsdatei über ein Argument mitgegeben.
| IServ | |
|---|---|
- Nach Bestätigung des Aufrufs startet der Mailbox-Import, parallel für die Anzahl an Postfächern, so wie im Parameter
maxsyncaccountsdes ConfigFile angegeben. Der Standardwert liegt hier bei 4 parallelen Importprozessen. In großen Umgebungen kann eine Anhebung auf 8 Worker-Prozesse den Vorgang beschleunigen. - Es werden während der Ausführung Logdateien generiert, die im Verzeichnis
/root/ld-kopano-mailimport/importlogs/gespeichert liegen. - Der Vorgang kann beliebig oft wiederholt werden, sollten beim Import vereinzelte Fehler auftreten.
- Im oberen Abschnitt
[general]des ConfigFile sind unteraccounts=alle Konten gelistet, die beim Import verarbeitet werden. Diese Liste kann auf einzelne Konten reduziert werden, um bei einer Wiederholung den Import auf gezielte IMAP-Postfächer zu beschränken.

Nach dem Durchlaufen des Importskriptes kann zur Kontrolle die zugehörige Logdatei /root/ld-kopano-mailimport/importlogs/offlineimap.iserv.mailboxes.import.log gesichtet werden.

Darin findet man pro Zielkonto folgende Information:
- Finished Account (username) in xx:xx (Zeitangabe in Min)
Der Ablauf zum Importieren der Benutzer-Postfächer ins IServ ist zur Veranschaulichung in einem Beispiel-Video festgehalten.
6.3 Zurücksetzen besonderer IServ-Einstellungen nach dem Postfach-Import
Sofern keine weiteren Kopano-Daten mehr importiert werden sollen, bitte abschließend mit Abschnitt 9. fortfahren zum Entfernen der temporären IServ Einstellungen.
Hinweis
Falls jedoch auch noch Kalender-Daten oder Kontakte importiert werden sollen, weiterhin chronologisch dieser Anleitung folgen und mit den Abschnitten 7. bzw. 8. fortsetzen.
7. Importieren der Kalenderdaten
Die nachfolgenden Schritte beschreiben den Import der Kalenderdaten in die IServ Schulplattform. Für den Datenimport wird u.a. auf das Tool vdirsyncer zurückgegriffen.
7.1 Einbinden der Backup-Festplatte vor dem Kalender-Import
Hinweis
Dieser Schritt kann übersprungen werden, wenn dieser Dokumentation chronologisch gefolgt wurde, da das Backup-Verzeichnis in diesem Fall schon eingehängt ist.
(Label/Pfad zur Backup-Partition ggf. anpassen)
| IServ | |
|---|---|
7.2 Import der Kalender mittels import-to-iserv-helper.sh
Für den Kalender-Import wird wieder auf das Import-Skript import-to-iserv-helper.sh zurückgegriffen. Dieses besitzt auch einen Kalender-Ausführungsmodus, der im Hilfe-Text mit einem entsprechenden Beispiel aufgeführt ist.
Wichtig
Vor diesem Schritt muss der Identitätsabgleich, also das Mapping der Benutzeraccounts aus dem vorherigen Abschnitt 5. ohne Fehler durchgelaufen sein, damit alle Kalenderdaten den ursprünglichen Nutzern zurückgespielt werden können! Ebenfalls muss der Patch-Modus aufgerufen worden sein, um die Zielkonten in der Import-Konfigurationsdatei vdirsyncer.iserv.calendars.importlist.config zu aktualisieren.
Es ist möglich, dass Benutzer unter Kopano zusätzliche Kalender (sog. Collections) für sich selbst angelegt haben. Das Führen von mehreren Kalendern wird auch in IServ unterstützt. Solche zusätzliche Kalender können in der IServ Weboberfläche unter "Kalender verwalten" → "Eigene Kalender" bei Bedarf von Benutzern angelegt werden, sie lassen sich in der Kalenderverwaltung auch gruppieren.
Das Import-Skript import-to-iserv-helper.sh arbeitet im Kalender-Modus nach folgender Funktionsweise:
- Der Kalender-Import ist in zwei Phasen unterteilt, die automatisch nacheinander ausgeführt werden.
- In der ersten Phase werden innerhalb der Kalender-Benutzerverzeichnisse die Unterordner gelistet, die aus Kopano exportiert wurden und somit Collections darstellen.
- Mit diesen Namen werden die zusätzlichen Collections über http-Requests bzw. Datenbank-Inserts für die Benutzerkonten erstellt, die in der CSV Mapping-Datei kopano.userlist.csv aufgeführt sind.
- Es handelt sich zunächst lediglich um "Hüllen", damit die zusätzlichen Kalender in der IServ Oberfläche sichtbar und für Benutzer anwählbar sind.
- Sofern die Erstellung der Kalender in Phase 1 fehlerfrei abgearbeitet wurde, wird automatisch mit Phase 2 fortgesetzt. Beim Auftreten eines Fehlers bricht das Skript hingegen ab und liefert eine entsprechende Warnmeldung an der Shell.
- In Phase 2 dient das Import-Skript als Wrapper für vdirsyncer, um die eigentlichen Kalenderdaten per CalDAV-Protokoll pro Benutzer zu importieren.
- In der Konfigurationsdatei
vdirsyncer.iserv.calendars.importlist.configwerden die Verbindungsdaten ausgetauscht, damit sie zur lokalen IServ Installation passen. - Sofern noch nicht durch den vorherigen Postfach-Import geschehen, wird ein temporärer Import-Benutzer
iserv-ld-maildata-importangelegt, der administrative Rechte auf die Kalender von Benutzern erhält. - Falls in den Backup-Daten vorhanden, werden neben den Benutzer-Kalendern zusätzlich die .ics Dateien aus
./public/calendar/in den Öffentlichen Kalender des IServ importiert.
Der Import benötigt (abhängig von der Anzahl an Kalendern und Terminen) wieder einiges an Zeit, deswegen muss der Aufruf innerhalb einer Screen-Session stattfinden.
Zum Importieren der Kalender wird wie erläutert der Ausführungmodus --run=calendars verwendet und zusätzlich die Import-Konfigurationsdatei, die Mapping-Datei kopano.userlist.csv sowie das Kalender-Quellverzeichnis auf der Backup-Disk über entsprechende Argumente mitgegeben.
| IServ | |
|---|---|
Hinweis
Auch dieser Importmodus kann mehrfach ausgeführt werden, um Kalenderinhalte für IServ-Konten zu importieren.

Es werden Logdateien für die Erstellung und den Import der Kalender erzeugt.
- für die Erstellung der Collections in Phase 1 sind pro Benutzer im Ordner
/root/ld-kopano-stores/importlogs/create_calendars/Logs gespeichert - der Kalender-Datenimport in Phase 2 generiert ebenfalls eine Logdatei, der Pfad hierzu lautet
/root/ld-kopano-stores/importlogs/vdirsyncer.iserv.calendars.import.log

Anbei exemplarisch eine mögliche Fehlermeldung des vdirsyncer Tools aus Phase 2, die jedoch als unkritisch zu betrachten ist, weil es um bereits vorhandene Kalendereinträge beim IServ Zielbenutzer geht und der Import wiederholend aufgerufen wurde.

Der Ablauf zum Importieren der Benutzer-Kalender ins IServ ist ebenfalls in einem Beispiel-Video festgehalten.
7.3 Zurücksetzen besonderer IServ-Einstellungen nach dem Kalender-Import
Sofern keine weiteren Kopano-Daten mehr importiert werden sollen, bitte abschließend mit Abschnitt 9. fortfahren zum Entfernen der temporären IServ Einstellungen.
Hinweis
Falls jedoch auch noch Kontakte importiert werden sollen, weiterhin chronologisch dieser Anleitung folgen und mit dem Abschnitt 8. fortsetzen.
8. Importieren der Kontaktdaten
Die nachfolgenden Schritte beschreiben den Import der Kontaktdaten in die IServ Schulplattform.
8.1 Einbinden der Backup-Festplatte vor dem Kontakte-Import
Hinweis
Dieser Schritt kann übersprungen werden, wenn dieser Dokumentation chronologisch gefolgt wurde, da das Backup-Verzeichnis in diesem Fall schon eingehängt ist.
(Label/Pfad zur Backup-Partition ggf. anpassen)
8.2 Import der Kontakte mittels import-to-iserv-helper.sh
Es wird wieder auf das Import-Skript import-to-iserv-helper.sh zurückgegriffen, welches auch einen Kontakte-Modus hat und zum Importieren der Backup-Daten vorgesehen ist.
Wichtig
Vor diesem Schritt muss der Identitätsabgleich, also das Mapping der Benutzeraccounts aus dem vorherigen Abschnitt 5. ohne Fehler durchgelaufen sein, damit alle Kontakte den ursprünglichen Nutzern zurückgespielt werden können! Der Patch-Modus zum Ändern einer Import-Konfigurationsdatei ist im Falle der Kontaktdaten nicht erforderlich, die .vcf Dateien werden direkt per http-Requests mit curl importiert.
Das Import-Skript wird nun mit den notwendigen Schaltern aufgerufen und dadurch ein Import der .vcf Kontaktdateien für die zugehörigen IServ Zielbenutzer angestoßen. Es gelten hierbei folgende Regeln:
- der Import findet lediglich für Benutzer statt, die in der Mapping-Datei
kopano.userlist.csventhalten sind - in der angegebenen Kontakte-Datenquelle
/mnt/ld-kopano-stores/contacts/liegen Unterordner für die jeweiligen Benutzer. Hier werden .vcf Dateien gesucht und ggf. importiert, sofern Dateien vorhanden sind. - alle Kontakte werden in das IServ "Eigenes Adressbuch" importiert, unabhängig davon, wie sie vorher unter Kopano abgespeichert waren (z.B. verschachtelt oder aufgeteilt in mehrere Adressbücher)
- bei mehrfachem Aufruf des Import-Skripts werden bereits importierte Kontakte nicht überschrieben, sondern der Import dieser Elemente dann ignoriert
Der Import benötigt (abhängig von der Anzahl an Kontaktdaten) wieder etwas Zeit zur Verarbeitung. Deswegen muss der Aufruf innerhalb einer Screen-Session stattfinden.
Der Import der Kontakte kann durch Selektion des Modus --run=contacts sowie den notwendigen Angaben zur Mapping-Datei kopano.userlist.yaml und des Kontakte-Quellverzeichnis über die entsprechenden Schalter gestartet werden.
| IServ | |
|---|---|

Hier im Beispiel ist während des Kontakte-Import alles fehlerfrei abgearbeitet worden. Zwecks Nachvollziehbarkeit werden Logdateien für die Vorgänge generiert, pro Benutzer eine Logdatei. Die Protokolleinträge sind im Verzeichnis /root/ld-kopano-stores/importlogs/contacts/ gespeichert und beinhalten neben der Menge importierter Kontakte einen Zeitstempel.

Der Ausführungsmodus zum Importieren der Kontakte kann ebenfalls in einem Demo-Video angesehen werden.
Für den Import der .vcf Kontaktdateien wurden keine besonderen Rechte am Server festgelegt. Falls noch nicht in den vorherigen Schritten geschehen, sollte abschließend dennoch der Cleanup-Modus des Import-Skript aufgerufen werden. Im Demo-Video findet dieser Abschlusschritt ebenfalls statt.
9. Zurücksetzen besonderer IServ Import-Einstellungen (ACL-Reset)
Über das Import-Skript import-to-iserv-helper.sh sollte abschließend der Cleanup-Modus aufgerufen werden, um alle temporären Einstellungen und den Import-Benutzer aus der IServ Installation zu entfernen.
Die zugehörigen Einstellungen, die hierbei auf die Standards zurückgesetzt werden, listet der Cleanup-Modus vorab an der Shell auf.

Nach Ausführung des Cleanup-Modus sind die IServ-Einstellungen in Bezug zum Cyrus IMAP-Server und den DAViCal Rollen zurückgesetzt und der temporäre Account iserv-ld-maildata-import ist wieder vom Server entfernt. Der Cleanup-Modus führt abschließend auch noch iservchk aus.