mccb

Funktionen

Was mccb mit Ihren Postfächern macht

Ein Image, zwei Dienste: web (Dashboard und API, Port 22362) und worker (Auftragswarteschlange). Der Zustand liegt in SQLite und Dateien in ./data.

Quellen und Ziele

  • Quellen

    PST- und OST-Dateien, Exchange vor Ort (EWS), Microsoft 365 (Graph), Google Workspace, IMAP, JMAP, CalDAV und CardDAV sowie Dateien: mbox, Maildir, EML, MSG, ICS und VCF.

  • Ziele

    IMAP, CalDAV, CardDAV, JMAP und Exchange (EWS oder Graph). Nicht jede Quelle ist auch ein Ziel: Google, PST und Dateien sind reine Lesequellen.

  • Mails, Kalender, Kontakte und Aufgaben

    Aufgaben gehen dorthin, wo das Ziel sie aufnehmen kann: Exchange oder ein CalDAV-Kalender, der VTODO akzeptiert.

  • Eine Zugangsberechtigung für viele Postfächer

    Exchange-Impersonation, Graph nur mit Anwendungsrechten und ein IMAP-Master-Benutzer erreichen jedes Postfach mit nur einem Konto auf Ihrer Seite.

  • Neueste zuerst

    E-Mails werden von der neuesten zur ältesten importiert, über alle Ordner hinweg.

  • Von Server zu Server

    Keine Datei nötig: IMAP zu IMAP, oder Exchange, Microsoft 365 und Google zu jedem IMAP-Server, während die Leute weiterarbeiten.

  • Mailregeln

    Exchange-Posteingangsregeln werden nach bestem Bemühen in Sieve umgewandelt und per ManageSieve hochgeladen oder als Skript angeboten.

Die Oberfläche

  • Vier Orte

    Migrationen, Dateien, Server und Einstellungen, in einer Seitenleiste am Computer und einer oberen Leiste am Smartphone. Neun Sprachen.

  • Zuerst die Server

    Wählen Sie den Anbieter (Gmail, Microsoft 365, iCloud, Fastmail, Infomaniak oder einen beliebigen IMAP-Server), und das Formular füllt sich selbst, mit dem, was der Anbieter verlangt. Jeder Server zeigt, ob er geprüft ist.

  • Ein Formular pro Migration

    Von: eine Datei oder ein laufender Server, direkt konfiguriert und getestet. Nach: der Server und das Postfach.

  • Ein Bereich, der sagt, was als Nächstes ansteht

    Jedes Postfach zeigt Quelle, Ziel und die zu kopierenden Inhalte, als bereit oder nicht bereit markiert, samt Startknopf, der sagt, was fehlt.

  • Status in Worten

    Jeder Zustand ist ein Symbol und ein Wort, nie nur eine Farbe. Was Ihr Eingreifen braucht, steht zuerst in der Liste.

Dateien hereinholen

  • Upload-Warteschlange

    Standardmäßig eine Datei nach der anderen, in der Reihenfolge Ihrer Wahl. Umsortieren, pausieren, fortsetzen oder abbrechen.

  • Fortsetzbare Uploads

    Große Dateien werden in Teilen hochgeladen, jeder Teil wird per SHA-256 geprüft. Der freie Speicher wird zuerst geprüft.

  • Ablageordner

    Kopieren Sie Dateien per rsync oder Mount in einen Ordner des Servers, und der Worker übernimmt sie.

  • Abruf durch den Server

    Der Server lädt die Datei selbst herunter, per HTTP(S), SFTP oder von einem S3-kompatiblen Dienst.

  • Vorschau

    Sehen Sie Akzente und Anhänge, bevor etwas geschrieben wird.

Planen und steuern

  • Probelauf

    Verbindet, listet und zählt, und schreibt nichts auf ein Ziel. Es warnt bei zu kleinem Kontingent und zu großen Nachrichten.

  • Ordnerzuordnung und Filter

    Ordner zuordnen, Ordner ausschließen und nach Datum oder maximaler Größe filtern, pro Server oder pro Postfach.

  • Zeiten und Bandbreite

    Erlaubte Zeiten und ein Bandbreitenlimit pro Server.

  • Stapel

    Benannte Stapel mit Gruppenaktionen und einer Warteschlangenreihenfolge.

  • Letzter Abgleich und Vergleich

    Ein letzter Durchlauf für neue IMAP-Nachrichten bei der Umstellung und ein Vergleich von Quelle und Ziel als CSV und im Bericht.

Für Stapel gebaut

  • Postfächer per CSV

    Fügen Sie Postfächer einzeln oder per CSV hinzu (email;password[;login]). Der Export enthält nie ein Passwort.

  • Kommandozeile und API-Tokens

    Der Befehl mccb lädt mit Fortsetzung hoch, startet Migrationen und verfolgt sie, ohne Browser.

  • Benachrichtigungen

    Melden Ihnen, wenn Uploads, Analysen und Migrationen fertig sind, per ntfy, Webhook oder E-Mail.

  • Berichte

    Live-Fortschritt, Log und JSON-Bericht pro Postfach.

Unterbrechen ohne Risiko

  • Fortsetzen ohne Duplikate

    Pause, Stopp, Absturz oder Neustart: Beim Fortsetzen wird der Server geprüft, und keine Nachricht wird doppelt angelegt.

  • Abstürze bleiben eingegrenzt

    Jeder Auftrag und jede PST-Analyse läuft in einem eigenen Unterprozess: Ein Absturz der nativen PST-Bibliothek kann den Worker nicht mitreissen.

  • Prüfungen

    Nach der Mail-Phase wird die Nachrichtenzahl jedes Ordners mit dem Gesendeten verglichen, und eine Stichprobe von Nachrichten wird zurückgelesen und per Hash verglichen. Bei Exchange-Zielen wird nur gezählt.

Der Betrieb

  • Abstimmung

    Automatische oder manuelle Abstimmung der Nachrichten-Builder und IMAP-Verbindungen, pro Server.

  • Postfach-Passwörter

    Verschlüsselt gespeichert. Die Anwendung kann sie entschlüsseln: Schützen Sie also ./data und den SECRET_KEY.

  • Sicherung

    Alles liegt in ./data, einschliesslich secret.key: Ohne diese Datei lassen sich die gespeicherten Postfach-Passwörter nicht mehr entschlüsseln.

Was es nicht tut

  • Bisher auf echtem Exchange oder Google laufen

    Die Konnektoren für Exchange, Microsoft 365 und Google wurden nur gegen simulierte Server getestet. Probieren Sie zuerst ein Postfach mit wenigen Elementen.

  • Das Empfangsdatum bei Microsoft 365 beibehalten

    Über Graph geschriebene Mails erhalten das Importdatum. IMAP mit OAuth2 als Ziel behält es bei.

  • Teilnehmer bei Microsoft 365 still schreiben

    Graph schickt jedem Teilnehmer eines von ihm erstellten Termins eine Mail. Standardmäßig werden die Teilnehmer als Text im Textfeld des Termins geschrieben. Organisatoren und Antworten bleiben auf einem Exchange-Ziel nicht erhalten.

  • Archivpostfächer über Graph migrieren

    Microsoft-365-Archive sind nicht erreichbar. Verschieben Sie ihren Inhalt zuerst ins Hauptpostfach.

  • JMAP-Kalender

    Nicht implementiert. Nutzen Sie CalDAV für die Kalender eines JMAP-Anbieters.

  • Alles kopieren

    Anhänge von Terminen und Kontaktfotos werden nicht kopiert. Texte von Terminen, Kontakten und Aufgaben sind reiner Text.

  • Synchron bleiben

    Eine Migration kopiert in eine Richtung. Ein abschließender Resync, von Hand gestartet, ergänzt, was seitdem eingegangen ist; eine Änderung oder Löschung an der Quelle nach dem Kopieren wird aber nicht übernommen.

  • Jede Datei lesen

    Ein Maildir oder ein Ordner mit Nachrichten muss gezippt werden. Eine .msg wird nach bestem Bemühen umgewandelt, ohne reine RTF-Texte, eingebettete Nachrichten und OLE-Objekte.

  • Mehrere Administratoren

    Ein einziger Administrator: ein gemeinsames Passwort, keine Konten oder Rollen. API-Tokens laufen nicht ab, widerrufen Sie sie von Hand.

  • Mehrere Hosts

    SQLite auf einer lokalen Festplatte: ein einziger Host, keine Hochverfügbarkeit, kein NFS.

  • Verschlüsselte PSTs

    Verschlüsselte oder passwortgeschützte PSTs werden nicht eigens behandelt. Sie ergeben Fehler oder werden als ungültig markiert. Verlassen Sie sich nicht darauf.

  • Jedes beschädigte PST überstehen

    Ein beschädigtes PST kann libpff zum Absturz bringen. Betroffene Elemente werden übersprungen und gemeldet, und nach MAX_CHILD_CRASHES Abstürzen schlägt der Auftrag fehl.

  • Die Zustellung von Benachrichtigungen garantieren

    Die Zustellung erfolgt nach bestem Bemühen: drei Versuche, dann wird die Nachricht verworfen. Ein öffentliches ntfy-Topic kann von jedem gelesen werden, der seinen Namen kennt.

  • HTTPS

    Port 22362 spricht einfaches HTTP. Stellen Sie mccb hinter einen Reverse Proxy und geben Sie den Port nicht direkt frei.

  • Andere Architekturen

    Das veröffentlichte Image gibt es nur für linux/amd64.

  • Alles perfekt dekodieren

    Elemente ohne Zeichensatz-Angabe können in manchen Sprachen fehlerhaft dekodiert werden.

  • Den Zielserver ausgleichen

    Die Ergebnisse hängen vom Ziel-Server ab (IMAP, DAV, JMAP oder Exchange).

mccb starten

Öffnen Sie http://<host>:22362 und melden Sie sich mit dem ausgegebenen Passwort an. Es wird nur einmal angezeigt. Details stehen in der Dokumentation.

$ mkdir mccb && cd mccb
$ curl -fsSLO https://raw.githubusercontent.com/selfhostr/mccb/main/docker-compose.yml
$ docker compose up -d
$ docker compose logs web | grep -A2 "Admin password"