This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Migration überwachen
Nach dem Start läuft eine Migration als eigener Lauf. Status, Verlauf, Protokoll und Abbruch sind an vier Stellen sichtbar: „Migrationen“, Detailseite einer Migration, „Warteschlange“ und Laufdetails.
Zustände eines Laufs
| Zustand | Bedeutung |
|---|---|
queued |
eingereiht, wartet auf einen freien Platz |
running |
imapsync läuft |
success |
Exit-Code 0 |
failed |
mit Fehler beendet |
interrupted |
abgebrochen, durch Neustart unterbrochen oder heruntergefahren |
Der Zustand der Migration folgt dem letzten Lauf: success, failed, interrupted, reauth_required oder queued/running, solange ein Lauf aktiv ist.
Wo was zu sehen ist
- „Migrationen“: Tabelle mit Quelle, Ziel, Status, Priorität, Zeitplan, letztem Ergebnis und Fehlercode; Filter nach Status, Suche nach Name/Adresse.
- Detailseite: Stammdaten, Ordnerauswahl, Zeitplan, Wiederholungen
(
retry_count / max_retries), nächster Versuch, Laufhistorie sowie Aktionen (starten, abbrechen, wiederholen, bearbeiten, deaktivieren, löschen). - „Warteschlange“: aktive Läufe mit PID, wartende Läufe in Abarbeitungsreihenfolge, nächste Termine, Pause/Fortsetzen.
- Laufdetails: Status, Start, Ende, Dauer, Exit-Code, Fehlercode, Protokoll mit Suche und Fehlerfilter.
Fortschritt
Es gibt keinen Fortschrittsbalken und keine Prozentanzeige. imapsync liefert keinen belastbaren Nachrichtenfortschritt; die Oberfläche zeigt deshalb Aktivität (laufender Prozess, PID, Laufzeit) statt einer geschätzten Zahl. Die übertragene Menge steht nach dem Lauf im Protokoll.
Protokolle
Jeder Lauf schreibt data/logs/<run-id>.log.
- Zeilen werden vor dem Schreiben redigiert: Access-Tokens, Bearer-/ XOAUTH2-Muster, Passwörter und bekannte Secret-Werte.
- Dateipfade der temporären Secret-Dateien bleiben sichtbar, ihre Inhalte nicht.
- Die Datei ist auf 5 MB begrenzt (
RUN_LOG_MAX_BYTES). Danach erscheint[log truncated: size limit reached]; der Lauf läuft weiter. - Das Protokoll enthält Aufruf, Quell- und Zielhost, Exit-Code und die imapsync-Ausgabe — keine Tokens oder Passwörter.
curl "http://127.0.0.1:8000/api/v1/runs/<run-id>/logs?offset=0&limit=200" \
-b cookies.txt
Die Antwort enthält lines, next_offset und eof. Der Pfad wird serverseitig aus der Lauf-ID aufgelöst; frei übergebene Dateipfade sind nicht möglich.
Abbrechen
„Abbrechen“ beendet den laufenden Prozess (Windows: terminate(), danach kill(); Linux: SIGTERM, nach Wartezeit SIGKILL) und markiert den Lauf als interrupted mit error_code = cancelled.
- Bereits übertragene Nachrichten bleiben im Ziel; es wird nichts zurückgerollt.
- Temporäre Token- und Passwortdateien werden gelöscht.
- Ein späterer Lauf setzt fort; vorhandene Nachrichten werden über
Message-Id/Receivederkannt und nicht doppelt angelegt. - Ein Abbruch vor dem Prozessstart wird ebenfalls als
interruptedvermerkt. - Wartende Läufe lassen sich stattdessen aus der Warteschlange entfernen.
Wiederholungen
Nach einem Fehler entscheidet die Fehlerklasse:
| Klasse | Beispiele | Verhalten |
|---|---|---|
| temporär | Verbindung, TLS, Quota, Timeout, Übertragung mit Fehlern | erneuter Versuch mit Backoff |
| permanent | Authentifizierung, reauth_required, ungültige Parameter, fehlende Laufzeit, Runner-Fehler, Abbruch |
keine Wiederholung |
Backoff: min(RETRY_MAX_SECONDS, RETRY_BASE_SECONDS × 2^(Versuch−1)), also standardmäßig 60 s, 120 s, 240 s … bis maximal 1 Stunde. max_retries begrenzt die Versuche (Standard 3); danach bleibt die Migration failed mit last_error. Eine Endlosschleife gibt es nicht.
„Wiederholen“ plant einen fehlgeschlagenen Lauf manuell erneut ein und setzt den Retry-Zähler zurück. Der neue Lauf erscheint als queued mit trigger = retry.
Warteschlange steuern
| Aktion | Wirkung |
|---|---|
| Pausieren | keine neuen Läufe; laufende Prozesse laufen weiter |
| Fortsetzen | Abarbeitung und Zeitplanung laufen wieder an |
| Wartenden Lauf entfernen | Lauf wird aus der Queue genommen, ohne Prozessabbruch |
Die Parallelität ist auf zwei gleichzeitige Migrationen begrenzt (MAX_PARALLEL_MIGRATIONS). Die Reihenfolge ergibt sich aus Priorität (absteigend) und Erstellzeitpunkt (aufsteigend); eine Migration mit laufendem Lauf wird übersprungen, damit andere nicht blockiert werden. Bei pausierter Warteschlange werden auch fällige Zeitpläne nicht eingereiht.
Verhalten nach einem Neustart
running-Läufe werden zuinterrupted. Lebt die gespeicherte PID noch, lautet der Fehlercodeorphan_process, sonstinterrupted_by_restart.queued-Läufe bleiben erhalten und werden weiter abgearbeitet.- Unterbrochene Läufe werden nicht automatisch neu gestartet; der Administrator entscheidet über „Wiederholen“ oder den nächsten Termin.
Grund: Ein automatischer Neustart könnte einen noch laufenden Prozess verdoppeln. Die PID-Prüfung ist eine Heuristik; eine wiederverwendete PID führt höchstens zu einer falschen Markierung, nie zu einem Doppelstart.
Fehlercodes lesen
| Exit-Code | Fehlercode | Bedeutung |
|---|---|---|
| 0 | – | Erfolg |
| 161, 16 | reauth_required / imapsync_auth_source |
Microsoft-Anmeldung ungültig |
| 162 | imapsync_auth_target |
Zielanmeldung fehlgeschlagen |
| 10, 101, 102 | imapsync_connection* |
Server nicht erreichbar |
| 12 | imapsync_tls |
TLS-Verbindung fehlgeschlagen |
| 21 | imapsync_subfolder_missing |
angegebener Quellordner fehlt |
| 111, 112 | imapsync_with_errors / imapsync_errors_max |
Übertragung mit Fehlern |
| 113 | imapsync_overquota |
Zielpostfach ohne Speicherplatz |
| 114–121 | imapsync_append/fetch/create/select/flags/search |
Ordner- oder Nachrichtenfehler |
Bei reauth_required muss das Microsoft-Konto neu autorisiert werden; ein erneuter Lauf ohne Anmeldung schlägt wieder fehl. Siehe Microsoft 365 und Fehlerbehebung.