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
mccbcarica 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
./datae laSECRET_KEY. - Backup
Tutto è in
./data, compresosecret.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
.msgviene 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_CRASHEScrash 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"