Il problema
Ultimamente mi sono ritrovato a dover migrare una grande quantità di siti su un nuovo server. Entrambi i server utilizzavano CPanel per gestire il sito e le email. Migrare il sito di per sé non è complicato, sia utilizzando strumenti come Installatron, sia copiando a mano i file necessari. Quando ci si ritrova a spostare le email, invece, le cose si complicano non poco.
Per spostare grandi quantità di email in modo automatico, esistono degli strumenti molto utili chiamati “IMAP Sync” che si collegano a due caselle di posta e copiano tutti i messaggi da una casella all’altra. Però, per farlo, questi strumenti hanno bisogno delle password di entrambe le caselle.
Chiedere ai clienti le password è ovviamente qualcosa di molto sconveniente, sia per loro che per noi, ma sembrava il metodo più semplice per rendere la migrazione il meno problematica possibile, perché in tal modo anche i dispositivi che erano collegati tramite dei client di posta continuavano a funzionare. Per fortuna però, migrare le caselle email senza conoscerne le password è possibile!
La soluzione
CPanel conserva le password delle caselle email in modo criptato, in un file chiamato shadow che
si può trovare andando nello strumento “Gestione file”.
Nella cartella /home/[nome utente]/etc/[nome dominio]
troviamo diversi file, fra cui un file passwd e un file shadow. Questi sono i file che gestiscono
gli utenti delle caselle email presenti sul server.
Il file passwd contiene informazioni sui nomi degli utenti, il loro id, il gruppo a cui appartengono
e la cartella dove sono conservate le email che gli arrivano. Il file shadow, invece, è quello che
contiene le informazioni di accesso ed è ciò che ci interessa. E’ strutturato in questo modo:
nome-casella : password-criptata : data-di-ultima-modifica ::::::
Il carattere : separa i vari tipi di dato. I vari : finali indicano diversi dati che non sono stati utilizzati.
Per una descrizione completa di questo sistema potete andare a vedere questa pagina di Wikipedia.
I dati di ogni riga hanno più o meno questo aspetto:
andreadev:$6$jFjOVbc3EPxLd5bL$4bOapspsJBj4KEDLx5LBzHvQ.Kws8AxoF3SXEXEuDVSd7p3tQj88TdWjc8fw1r504oN3XI3ampRiihOwLf0Bx1:18463::::::
Avendo questa informazione, possiamo strutturare un metodo che ci permette di utilizzare questi strumenti di IMAP Sync ripristinando successivamente le password precedenti.
Questi sono i passaggi che sto utilizzando:
- Fare un backup del file
shadowdel vecchio hosting - Creare sul nuovo hosting le caselle email da migrare, dando loro una password temporanea
- Cambiare la password delle caselle email sul vecchio hosting utilizzando la stessa password temporanea
- Utilizzare lo strumento IMAP Sync per trasferire le email, utilizzando la password temporanea per entrambe le caselle
- Ricopiare le password criptate presenti nel backup del file
shadownel medesimo file del nuovo hosting (e anche nel vecchio, se necessario)
Questi passaggi vanno ovviamente effettuati in un momento dove i clienti non stanno utilizzando le email, così da evitare problemi di autenticazione o connessione mentre si cambia temporaneamente la loro password.
Grazie a questo metodo, sono riuscito a velocizzare molto il processo di migrazione e ad evitare difficili conversazioni con i clienti, dato che chiedere delle password non è mai una bella cosa da fare.
Se siete in una situazione simile, spero che questo metodo possa essere utile anche a voi. Buon lavoro! 👋🏼
