Migrare caselle email con imapsync senza perdere messaggi
Per spostare le caselle email da un server all'altro senza perdere messaggi il metodo più affidabile è copiarle via IMAP con imapsync, prima del cambio dei record MX, e ripetere la sincronizzazione dopo il cambio per recuperare la posta arrivata nel frattempo. imapsync copia cartelle, messaggi e stati (letto, non letto, contrassegnato) e alla seconda esecuzione trasferisce solo quello che manca. Qui trovi i comandi per Ubuntu 24.04, la gestione delle password e delle cartelle, i tempi del cambio MX e una checklist finale.
I metodi possibili
| Metodo | Quando usarlo | Limiti |
|---|---|---|
| imapsync (IMAP → IMAP) | Quasi sempre: server diversi, software diversi, tante caselle | Serve la password di ogni casella (o un accesso amministrativo) |
| Programma di posta (Thunderbird, trascinando le cartelle) | Due o tre caselle piccole | Lento, facile dimenticare una cartella, nessun controllo delle differenze |
| Copia dei file Maildir (rsync) | Stesso software su entrambi i server (per esempio Dovecot → Dovecot) e accesso root | Formati e nomi delle cartelle devono combaciare; indici da ricostruire |
| Importazione del pannello | Il nuovo pannello legge il backup del vecchio | Dipende da cosa supporta il pannello |
imapsync lavora da una terza posizione: si collega come client IMAP a entrambi i server, legge da uno e scrive sull'altro. Non tocca i file sul disco e non gli interessa quale software di posta c'è dietro.
Prima di iniziare
- Fai l'inventario: elenco delle caselle, spazio occupato, inoltri, alias, risposte automatiche. Gli inoltri e le risposte automatiche non passano via IMAP: vanno ricreati.
- Crea le caselle sul nuovo server, con uno spazio almeno pari a quello occupato sul vecchio: una casella piena rifiuta i messaggi e imapsync segnala errori.
- Abbassa il TTL del record MX (e del nome del server di posta) a 300 secondi almeno un giorno prima del cambio.
- Decidi da dove lanciare imapsync: il nuovo server va bene, oppure una macchina terza con buona banda verso entrambi.
- Usa nomi host stabili: per
--host1e--host2indica il nome del server o l'indirizzo IP, nonmail.tuodominio.it. Quando cambierai i DNS, quel nome punterà al nuovo server e le sincronizzazioni successive leggerebbero dal posto sbagliato.
Installare imapsync su Ubuntu 24.04
imapsync non è nei repository di Ubuntu 24.04: si installano le dipendenze Perl e si scarica lo script dal sito dell'autore, come indicato nelle istruzioni ufficiali per Ubuntu.
sudo apt-get update
sudo apt-get install -y libauthen-ntlm-perl libclass-load-perl \
libcrypt-openssl-rsa-perl libcrypt-ssleay-perl libdata-uniqid-perl \
libdigest-hmac-perl libdist-checkconflicts-perl libencode-imaputf7-perl \
libfile-copy-recursive-perl libfile-tail-perl libio-compress-perl \
libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl \
libjson-webtoken-perl libmail-imapclient-perl libmodule-scandeps-perl \
libnet-dbus-perl libnet-dns-perl libnet-ssleay-perl libpar-packer-perl \
libproc-processtable-perl libreadonly-perl libregexp-common-perl \
libsys-meminfo-perl libterm-readkey-perl libtest-fatal-perl \
libtest-mock-guard-perl libtest-mockobject-perl libtest-pod-perl \
libtest-requires-perl libtest-simple-perl libunicode-string-perl \
liburi-perl libtest-nowarnings-perl libtest-deep-perl libtest-warn-perl \
make time cpanminus
wget -N https://imapsync.lamiral.info/imapsync
chmod +x imapsync
./imapsync # controlla che partano tutte le dipendenze
sudo cp imapsync /usr/bin/
Il codice è libero (licenza NOLIMIT Public License); l'autore vende anche il programma e il supporto, un modo per finanziarne lo sviluppo.
Le password: mai sulla riga di comando
Con --password1 la password è visibile a chiunque sul server lanci ps. La documentazione di imapsync consiglia file protetti con permessi 600:
umask 077
printf '%s\n' 'PasswordVecchia' > /root/pass-vecchio.txt
printf '%s\n' 'PasswordNuova' > /root/pass-nuovo.txt
Se non conosci le password delle caselle hai tre strade: chiederle agli utenti (poco pratico), reimpostarle sul vecchio server poco prima della migrazione e comunicare quelle nuove, oppure usare un accesso amministrativo se il vecchio server lo prevede (per esempio un «master user» di Dovecot). Qualunque strada scegli, cancella i file delle password alla fine.
Primo passo: prova l'accesso
imapsync \
--host1 vecchio.example.it --user1 mario@tuodominio.it --passfile1 /root/pass-vecchio.txt \
--host2 nuovo.example.it --user2 mario@tuodominio.it --passfile2 /root/pass-nuovo.txt \
--justlogin
Su molti server l'utente è l'indirizzo completo; su alcuni vecchi sistemi è solo la parte prima della @.
SSL e certificati
imapsync prova da solo IMAP su SSL (porta 993) e, se non va, STARTTLS sulla 143. Di norma però non verifica il certificato del server. Se entrambi i server hanno un certificato valido per il nome che usi, attiva la verifica:
--sslargs1 SSL_verify_mode=1 --sslargs2 SSL_verify_mode=1
Se un server usa ancora un certificato autofirmato, la verifica fallirà: in quel caso lancia imapsync da una rete fidata o prima installa un certificato valido.
Secondo passo: prova a vuoto e cartelle
Prima di copiare, guarda cosa farebbe imapsync con --dry e --justfolders:
imapsync \
--host1 vecchio.example.it --user1 mario@tuodominio.it --passfile1 /root/pass-vecchio.txt \
--host2 nuovo.example.it --user2 mario@tuodominio.it --passfile2 /root/pass-nuovo.txt \
--dry --justfolders
L'output elenca le cartelle di origine e come verranno chiamate sulla destinazione. imapsync gestisce da solo separatori (. o /) e prefissi (INBOX.), e con --automap (attivo di norma) abbina le cartelle speciali come Inviata, Bozze, Cestino e Spam.
Quando l'abbinamento automatico non basta:
# una cartella precisa verso un'altra (nomi completi)
--f1f2 'INBOX.spam=Junk' \
--f1f2 'INBOX.Posta inviata=Sent'
# saltare cartelle che non servono
--exclude '^Trash$|^INBOX\.Trash$'
# regola generale: tutto sotto una cartella "Archivio vecchio server"
--subfolder2 'Archivio vecchio server'
Ripeti la prova a vuoto finché l'elenco non è quello che vuoi. Solo allora togli --dry.
Terzo passo: la copia vera
imapsync \
--host1 vecchio.example.it --user1 mario@tuodominio.it --passfile1 /root/pass-vecchio.txt \
--host2 nuovo.example.it --user2 mario@tuodominio.it --passfile2 /root/pass-nuovo.txt \
--sslargs1 SSL_verify_mode=1 --sslargs2 SSL_verify_mode=1
Alla fine controlla il riepilogo. La riga che conta è simile a:
The sync looks good, all 1745 identified messages in host1 are on host2.
Le dimensioni totali delle due caselle possono differire anche con una copia perfetta, perché i server calcolano la dimensione dei messaggi in modo diverso: guarda il numero di messaggi e gli errori, non i megabyte. Il log completo finisce nella cartella LOG_imapsync/.
Tante caselle: un ciclo
Con un file caselle.txt (permessi 600) nel formato utente_vecchio;password_vecchia;utente_nuovo;password_nuova:
#!/bin/bash
umask 077
while IFS=';' read -r u1 p1 u2 p2; do
[ -z "$u1" ] && continue
f1=$(mktemp); f2=$(mktemp)
printf '%s\n' "$p1" > "$f1"; printf '%s\n' "$p2" > "$f2"
imapsync --host1 vecchio.example.it --user1 "$u1" --passfile1 "$f1" \
--host2 nuovo.example.it --user2 "$u2" --passfile2 "$f2" \
< /dev/null || echo "$u1" >> caselle-con-errori.txt
rm -f "$f1" "$f2"
done < caselle.txt
Il < /dev/null evita che imapsync legga l'elenco al posto del ciclo. Alla fine riprova solo le caselle in caselle-con-errori.txt.
Le sincronizzazioni successive (delta)
imapsync riconosce i messaggi già copiati dalle intestazioni Message-Id e Received: rilanciando lo stesso comando copia solo i messaggi nuovi e riallinea gli stati (letto, contrassegnato). Nessun duplicato.
Per le passate successive alla prima, limitarsi ai messaggi recenti le rende molto più veloci:
--maxage 7 # solo i messaggi degli ultimi 7 giorni
Due opzioni da usare con cautela: --delete2 cancella sulla destinazione i messaggi che non esistono più sull'origine (utile solo se la destinazione è una copia esatta e nessuno ci sta ancora lavorando), --delete1 cancella dall'origine. In una migrazione normale non servono.
Quando cambiare gli MX
La sequenza che minimizza i rischi:
| Quando | Cosa fare |
|---|---|
| 2 giorni prima | TTL di MX e nome del server di posta a 300 secondi |
| 1 giorno prima | Prima copia completa con imapsync (la più lunga) |
| Giorno X, mattina | Delta con --maxage 7, poi cambio degli MX, di SPF e DKIM del nuovo server |
| Giorno X, subito dopo | Aggiorna i programmi di posta degli utenti (server IMAP e SMTP) |
| Giorno X, sera | Delta con --maxage 2 per la posta arrivata sul vecchio server durante la propagazione |
| Giorni X+1 e X+3 | Altri delta: alcuni mittenti usano DNS lenti ad aggiornarsi |
| Dopo 1-2 settimane | Spegni la posta sul vecchio server |
Non spegnere subito il vecchio server: finché qualche mittente vede ancora il vecchio MX, la posta arriva lì. Con i delta la recuperi senza chiedere niente agli utenti. Per SPF, DKIM e DMARC sul nuovo server vedi la guida su SPF, DKIM e DMARC.
Chi usa POP3 e scarica tutto sul computer ha già i messaggi in locale: per lui basta aggiornare le impostazioni del programma, ma verifica che non cancelli la posta dal server prima della fine della migrazione.
Checklist
- Elenco caselle, spazio, inoltri, alias e risposte automatiche
- Caselle create sul nuovo server con spazio sufficiente
- TTL dell'MX abbassato almeno 24 ore prima
- File delle password con permessi 600, nessuna password sulla riga di comando
-
--justloginriuscito per tutte le caselle -
--dry --justfolderscontrollato, cartelle abbinate correttamente - Prima copia completa, «Detected 0 errors» nel riepilogo
- Inoltri e risposte automatiche ricreati
- MX, SPF, DKIM (e DMARC) pubblicati per il nuovo server
- Programmi di posta e smartphone aggiornati
- Delta la sera stessa e nei giorni successivi
- File delle password cancellati, vecchio server spento dopo 1-2 settimane
Come lo fa Koapanel
Se il server di destinazione usa Koapanel con il servizio di posta attivo, per molte migrazioni imapsync non serve (Posta):
- da un backup di cPanel, o da cPanel via SSH come root, le caselle vengono create con tutti i messaggi, la password originale e lo spazio che avevano. cPanel conserva le password come hash SHA512-CRYPT o MD5-CRYPT, e il server di posta di Koapanel le verifica così come sono: gli utenti non devono cambiare password. Arrivano anche gli inoltri (Migrazione).
- da Plesk le caselle vengono create; se la password nel backup è cifrata con la chiave del vecchio server, il pannello ne genera una nuova e la mostra una sola volta nel riepilogo.
- via SSH con l'utente dell'account o da un Linux qualsiasi le caselle non vengono copiate: le crei nel pannello e sposti i messaggi con un programma di posta o con imapsync come visto sopra (Migrazione via SSH).
Il riepilogo di ogni migrazione mostra, casella per casella, messaggi, spazio e se la password è stata mantenuta. Con la posta spenta le caselle vengono solo elencate.
Un vantaggio pratico dell'importazione da cPanel: dato che le password restano le stesse su entrambi i server, dopo il cambio degli MX puoi usare imapsync per i delta con le credenziali che hai già, senza reimpostare nulla.
Dopo l'importazione, la scheda DNS posta mostra MX, SPF, DKIM e DMARC da pubblicare e li verifica; con Cloudflare o 1PrimeCDN collegati, Configura DNS posta li pubblica per te dopo averti mostrato le modifiche. Per la parte siti e database vedi la guida su come migrare da cPanel o da Plesk.
Limiti da sapere: la posta di Koapanel è facoltativa e si attiva dall'amministratore; molti provider cloud bloccano la porta 25 in uscita e in quel caso serve un relay SMTP. Il pannello controlla porta 25, PTR e liste nere prima di attivare il servizio.
Domande frequenti
imapsync crea messaggi doppi se lo lancio più volte?
No: riconosce i messaggi già presenti dalle intestazioni e copia solo quelli nuovi. I duplicati compaiono solo con opzioni particolari, come --useuid senza cache.
Posso migrare senza conoscere le password delle caselle?
Sì, ma serve un accesso amministrativo al vecchio server IMAP (per esempio un master user di Dovecot) oppure devi reimpostare le password. Con l'importazione da cPanel di Koapanel le password originali vengono mantenute.
Quanto tempo serve?
Dipende dalla banda e dal numero di messaggi: una casella da qualche GB richiede in genere da minuti a qualche ora. Fai la prima copia il giorno prima del cambio MX, così il giorno X restano solo i delta.
Gli inoltri e le risposte automatiche vengono copiati?
Non via IMAP: vanno ricreati sul nuovo server. L'importazione da cPanel di Koapanel porta anche gli inoltri.
Devo avvisare gli utenti?
Sì, se cambia il nome del server IMAP e SMTP nei loro programmi di posta. Se il nome resta lo stesso (per esempio mail.tuodominio.it) e il nuovo server ha un certificato valido per quel nome, con la stessa password i programmi si ricollegano da soli; conviene comunque avvisare del giorno del cambio.
Prova
Installa Koapanel gratis su un VPS Ubuntu 24.04 nuovo seguendo la guida all'installazione, attiva la posta e prova l'importazione di un backup cPanel. Tutte le opzioni di migrazione sono nella pagina Migrazione.