Logo del sito

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:

1nome-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:

1andreadev:$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:

  1. Fare un backup del file shadow del vecchio hosting
  2. Creare sul nuovo hosting le caselle email da migrare, dando loro una password temporanea
  3. Cambiare la password delle caselle email sul vecchio hosting utilizzando la stessa password temporanea
  4. Utilizzare lo strumento IMAP Sync per trasferire le email, utilizzando la password temporanea per entrambe le caselle
  5. Ricopiare le password criptate presenti nel backup del file shadow nel 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! 👋🏼