mccb

Funzionalità

Cosa fa mccb con le tue caselle

Un'immagine, due servizi: web (dashboard e API, porta 22362) e worker (coda dei processi). Lo stato è in SQLite e in file dentro ./data.

Sorgenti e destinazioni

  • Fonti

    File PST e OST, Exchange locale (EWS), Microsoft 365 (Graph), Google Workspace, IMAP, JMAP, CalDAV e CardDAV, e file: mbox, Maildir, EML, MSG, ICS e VCF.

  • Destinazioni

    IMAP, CalDAV, CardDAV, JMAP ed Exchange (EWS o Graph). Non ogni sorgente è anche una destinazione: Google, PST e file sono sorgenti in sola lettura.

  • Posta, calendari, contatti e attività

    Le attività vanno dove la destinazione può contenerle: Exchange, o un calendario CalDAV che accetta VTODO.

  • Una sola credenziale per molte caselle

    L'impersonificazione Exchange, Graph solo applicazione e un utente master IMAP raggiungono ogni casella con un solo account da parte tua.

  • Prima i più recenti

    La posta viene importata dalla più recente alla più vecchia, in tutte le cartelle.

  • Da server a server

    Nessun file necessario: da IMAP a IMAP, oppure da Exchange, Microsoft 365 e Google a qualsiasi server IMAP, mentre le persone continuano a lavorare.

  • Regole di posta

    Le regole della posta in arrivo di Exchange vengono convertite in Sieve al meglio, poi caricate con ManageSieve o offerte come script.

L'interfaccia

  • Quattro posti

    Migrazioni, File, Server e Impostazioni, in una barra laterale sul computer e in una barra in alto sul telefono. Nove lingue.

  • Prima i server

    Scegli il provider (Gmail, Microsoft 365, iCloud, Fastmail, Infomaniak o qualsiasi server IMAP) e il modulo si compila da solo, con ciò che il provider richiede. Ogni server mostra se è verificato.

  • Un modulo per migrazione

    Da: un file o un server attivo, configurato e testato sul posto. A: il server e la casella.

  • Un pannello che dice cosa viene dopo

    Ogni casella mostra la sorgente, la destinazione e cosa copiare, segnata come pronta o no, con un pulsante di avvio che dice cosa manca.

  • Stato a parole

    Ogni stato è un'icona e una parola, mai solo un colore. Ciò che richiede il tuo intervento viene per primo nell'elenco.

Portare i file

  • Coda di caricamento

    Un file alla volta per impostazione predefinita, nell'ordine che scegli. Riordina, metti in pausa, riprendi o annulla.

  • Caricamenti riprendibili

    I file grandi vengono caricati a pezzi, ognuno verificato con SHA-256. Lo spazio libero viene controllato prima.

  • Cartella di deposito

    Copia i file in una cartella del server con rsync o un mount, e il worker li prende in carico.

  • Recupero lato server

    Il server scarica il file da sé, via HTTP(S), SFTP o da un servizio compatibile S3.

  • Anteprima

    Vedi accenti e allegati prima di scrivere qualsiasi cosa.

Pianificare e controllare

  • Prova a vuoto

    Si connette, elenca e conta, senza scrivere nulla su nessuna destinazione. Avvisa in caso di quota insufficiente e di messaggi troppo grandi.

  • Mappatura delle cartelle e filtri

    Associa le cartelle, escludi le cartelle e filtra per data o dimensione massima, per server o per casella.

  • Orari e banda

    Orari consentiti e un limite di banda per server.

  • Lotti

    Lotti con nome, con azioni di gruppo e un ordine di coda.

  • Risincronizzazione finale e confronto

    Un ultimo passaggio per i nuovi messaggi IMAP al momento del passaggio, e un confronto tra sorgente e destinazione in CSV e nel rapporto.

Pensato per i lotti

  • Caselle da CSV

    Aggiungi le caselle una per una, oppure da CSV (email;password[;login]). L'esportazione non contiene mai una password.

  • Riga di comando e token API

    Il comando mccb carica con ripresa, avvia le migrazioni e le segue, senza browser.

  • Notifiche

    Ti avvisano quando caricamenti, analisi e migrazioni finiscono, tramite ntfy, webhook o e-mail.

  • Report dettagliati

    Avanzamento in tempo reale, log e report JSON per casella.

Interruzioni senza rischi

  • Riprendere senza duplicati

    Pausa, arresto, crash o riavvio: una ripresa controlla il server e non duplica mai un messaggio.

  • I crash restano circoscritti

    Ogni processo e ogni analisi di PST gira in un proprio sottoprocesso: un crash della libreria PST nativa non può far cadere il worker.

  • Controlli

    Dopo la fase della posta, il numero di messaggi di ogni cartella viene confrontato con quanto inviato, e un campione di messaggi viene riletto e confrontato tramite hash. Su una destinazione Exchange si contano soltanto.

La gestione

  • Regolazione

    Regolazione automatica o manuale dei generatori di messaggi e delle connessioni IMAP, per server.

  • Password delle caselle

    Salvate cifrate. L'applicazione può decifrarle: proteggi quindi ./data e la SECRET_KEY.

  • Backup

    Tutto è in ./data, compreso secret.key: senza questo file le password delle caselle salvate non si possono più decifrare.

Cosa non fa

  • Girare già su Exchange o Google reali

    I connettori Exchange, Microsoft 365 e Google sono stati provati solo con server simulati. Prova prima una casella con pochi elementi.

  • Mantenere la data di ricezione su Microsoft 365

    La posta scritta tramite Graph riceve la data dell'importazione. IMAP con OAuth2 come destinazione la conserva.

  • Scrivere i partecipanti in silenzio su Microsoft 365

    Graph invia una mail a ogni partecipante di un evento che crea. Per impostazione predefinita i partecipanti sono scritti come testo nel corpo dell'evento. Organizzatori e risposte non vengono conservati su una destinazione Exchange.

  • Migrare le caselle di archivio tramite Graph

    Gli archivi Microsoft 365 non sono raggiungibili. Sposta prima il loro contenuto nella casella principale.

  • Calendari JMAP

    Non implementato. Usa CalDAV per i calendari di un provider JMAP.

  • Copiare tutto

    Gli allegati degli eventi e le foto dei contatti non vengono copiati. I testi di eventi, contatti e attività sono testo semplice.

  • Restare sincronizzato

    Una migrazione copia in una sola direzione. Una risincronizzazione finale, avviata a mano, aggiunge ciò che è arrivato nel frattempo, ma una modifica o un'eliminazione fatta alla sorgente dopo la copia non viene riportata.

  • Leggere ogni file

    Un Maildir o una cartella di messaggi va compresso in zip. Un .msg viene convertito al meglio, senza corpi solo RTF, messaggi incorporati né oggetti OLE.

  • Più amministratori

    Un solo amministratore: una password condivisa, nessun account né ruolo. I token API non scadono, revocali a mano.

  • Più host

    SQLite su disco locale: un solo host, nessuna alta disponibilità, niente NFS.

  • I PST cifrati

    I PST cifrati o protetti da password non hanno una gestione dedicata. Danno errori o vengono marcati come non validi. Non farci affidamento.

  • Reggere ogni PST danneggiato

    Un PST danneggiato può mandare in crash libpff. Gli elementi coinvolti vengono saltati e segnalati, e oltre MAX_CHILD_CRASHES crash il processo fallisce.

  • Garantire la consegna delle notifiche

    L'invio è al meglio: tre tentativi, poi il messaggio viene scartato. Un topic ntfy pubblico può essere letto da chiunque ne conosca il nome.

  • HTTPS

    La porta 22362 parla HTTP semplice. Metti mccb dietro un reverse proxy e non esporre la porta direttamente.

  • Altre architetture

    L'immagine pubblicata è solo per linux/amd64.

  • Decodificare tutto alla perfezione

    Gli elementi senza indicazione del set di caratteri possono essere decodificati male in alcune lingue.

  • Compensare il server di destinazione

    I risultati dipendono dal server di destinazione IMAP, DAV, JMAP o Exchange.

Avvia mccb

Apri http://<host>:22362 e accedi con la password stampata. Viene mostrata una sola volta. I dettagli sono nella documentazione.

$ 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"