«MailBackup»
2 Giugno 2023

Il problema lo conosciamo tutti: la nostra casella e-mail è piena e veniamo tempestati da messaggi che ci invitano ad archiviare messaggi o ad acquistare spazio memoria costoso. Procrastiniamo, perché l’archiviazione manuale della posta elettronica è un lavoraccio che richiede molto tempo. Con alcuni servizi mail c’è pure il rischio di perdere quantità di dati ingenti, come successo anche al sottoscritto.
Ho quindi creato una soluzione (per utilizzo da parte di personale IT/esperto):
«MailBackup» è un software lanciabile dal command prompt (cmd.exe) in ambiente Windows, che serve per archiviare/backupare messaggi e-mail in file di formato mbox1, scaricandoli direttamente da un server IMAP2 (esistono ottimi programmi freeware per la gestione dei file mbox).
Il programma è redatto in php3 e prevede quindi l’istallazione di PHP for Windows4 / Visual C runtime5, entrambi installabili rapidamente senza la necessità di riavvio del computer.
«MailBackup» è composto da due script php:
1. un file config.php, specifico per ogni account di posta elettronica gestito, contenente sia i parametri di configurazione, sia le impostazioni (es. cartelle da includere/escludere, periodo, modalità etc.) per il backup/l’archiviazione, nella fattispecie:
2. un file eseguibile.php che viene lanciato dal command prompt, carica il file di configurazione ed esegue backup/archiviazione specifico per l’account in funzione dei filtri ed impostazioni utilizzati, creando un log dettagliato delle operazioni eseguite
Il software è pensato in primis per poter essere utilizzato da amministratori di sistema o personale tecnico, abituati ad operare utilizzando il command prompt (cmd.exe) in ambiente Windows per lavori di manutenzione – tuttavia può essere utilizzato anche da utenti non maggiormente qualificati dopo un breve percorso formativo.
Aggiornamento 2025-05-27
Nella versione 3.0 si sono aggiunte diverse funzionalità, illustrate nella seguente figura e configurabili tramite il file “config.php” come “task“:

“imapfull” -> come nelle versioni precedenti, scarica i messaggi di posta elettronica da un server IMAP2 e crea un backup (lascia i messaggi originali di posta elettronica sul server IMAP2) o archivio (cancella i messaggi di posta elettronica dal server IMAP2) in formato mbox1
“imapdiff” -> ha le stesse funzionalità di “imapfull“, ma oltre a scrivere i messaggi di posta elettronica nei rispettivi file mbox1, crea anche una copia in formato .eml dei messaggi di posta elettronica nuovi, per velocizzare la sincronizzazione differenziale con il backup (clone) del sistema, in particolare
- trascrive un “Backup ID” nell’header dei file .eml, contenente il nome del folder IMAP2 di provenienza e l’ID univoco del messaggio (quest’ultimo viene assemblato dai parametri “From:“, “To:”, “Subject:” e “Date:” di ogni messaggio di posta elettronica)
- nomina i file in maniera sequenziale con un formato standard, contenente il nome della cartella IMAP2 di provenienza, data e ora di elaborazione, un numero sequenziale univoco nonche data e ora di ricezione del messaggio di posta elettronica (“nome folder IMAP (YYYY-MM-DD HH+MM+SS sequence) YYYY-MM-DD HH+MM+SS.eml“, ad esempio “Activities Sports, (01) Paragliding (2025-05-27 17+11+26 000001) 2024-09-22 11+59+48.eml“
“clonefull” -> crea una copia esatta di tutto il sistema di cartelle e file mbox1 in un percorso A (main) con tutto il sistema di cartelle e file mbox1 in un percorso B (clone), identificando solo i messaggi di posta elettronica nuovi all’interno dei file mbox1 main ed accodandoli in ugual sequenza nei file mbox1 clone. In tal maniera i due sistemi rimangono identici, anche nella sequenza dei messaggi di posta elettronica
“clonediff” -> esegue le stesse operazioni di “clonefull“, ma utilizza solo i file .eml differenziali generati da “imapdiff” per velocizzare l’operazione di clonaggio – più in dettaglio, questa funzione
- legge e ordina per nome tutti i file .eml differenziali, presenti nel percorso A (main) del sistema di cartelle e file mbox1 (l’ordinamento alfabetico dei file .eml, creati dalla funzione “imapdiff“, rispecchia esattamente la sequenza di elaborazione dei messaggi scaricati dal server IMAP2)
- estrae i parametri “From:“, “To:”, “Subject:” e “Date:” per assemblare l’ID univoco del messaggio, trasmesso anche tramite la riga Backup ID, e lo confronta con quest’ultimo come controllo incrociato
- rimuove la riga Backup ID dall’header dei file .eml
- verifica la presenza del messaggio di posta elettronic nel file indice del sistema di cartelle e file mbox1 del percorso B (clone), e, se non sono ancora presenti, li appendi in coda agli mbox1 esistenti, con sequenza identica ai file presenti nel sistema di cartelle e file mbox1 del percorso A (main)
- elimina il file .eml differenziale dal percorso A (main) del sistema di cartelle e file mbox1
“compfile” -> confronta i due sistemi di cartelle e file mbox1 (main e clone); risulteranno identici solo i file che hanno lo stesso contenuto, e cioè gli stessi messaggi e-mail con la medesima sequenza
“ext2both” -> legge tutti i messaggi eml da una cartella esterna e li accoda in ugual maniera ad entrambi i sistemi (funzione utile se si vogliono unire in un unico sistema di mbox1 anche messaggi di posta elettronica provenienti da altri sistemi), in questo caso non importa la sequenzialità di accodamento dei messaggi, che è la medesima, sia per il sistema di cartelle e file mbox1 al percorso A (main), sia per il sistema di cartelle e file mbox1 al percorso B (clone)
Un esempio di lancio dal command prompt potrebbe essere:
php.exe -c php.ini -f C:\php-mailbackup\go.php C:\php-mailbackup\config.php
- tipicamente7, per processare 4-5 GB di posta elettronica ci vogliono 15’
- il programma restituisce, oltre al log, diversi exit-code (0=successo) per l’integrazione in altri sistemi
- mbox è un formato di archiviazione per e-mail, ove vengono accodate tutti i dati delle singole e-mail in maniera sequenziale in un file ASCII6, separando i dati di una e-mail da quella successiva semplicemente con una determinata sequenza di caratteri; i file mbox possono essere visualizzati con programmi freeware tipo https://sourceforge.net/projects/mbox-viewer/
- IMAP = Internet Message Access Protocol
- php è un linguaggio di scripting, interpretato lato server e usato per lo più nello sviluppo web – php è un acronimo ricorsivo: significa che l’acronimo stesso è contenuto come prima parola nello scioglimento della sigla – infatti PHP sta per PHP: Hypertext Preprocessor
- https://windows.php.net/downloads/releases/php-8.2.6-nts-Win32-vs16-x64.zip
- https://aka.ms/vs/17/release/vc_redist.x64.exe
- ASCII = American Standard Code for Information Interchange
- connessione EOLO con velocità di download di 100Mbit/s
Share
15 Novembre 2023
— analisi sistematica della posta elettronica — Per fare fronte anche a quantità ingenti di dati, «MailScanner» ha un’architettura bicomponente, composta da un’interfaccia utente semplice (web APP) e una parte eseguibile in php, disegnata per lavorare senza le limitazioni di tempo e di memoria di un web server. I due sistemi comunicano via internet attraverso […]
13 Aprile 2023
Bensì senza alcun dubbio le intenzioni dei legiferanti erano ottime nel redigere il contenuto del regolamento EU 2016/679 (Regolamento generale sulla protezione dei dati / General Data Protection Regulation = GDPR), credo ahimè che non siano riusciti a proteggerci efficacemente dal profiling da parte dei colossi del software e dei social network. Per converso, il […]
22 Febbraio 2023
Sempre più spesso c’è bisogno di tradurre tabulati di dati in formato EXCEL o CSV che alimentano siti web, portali e-commerce, cataloghi etc. Ho quindi messo a punto un bot per tradurre rapidamente tabulati, utilizzando la API (Application Programming Interface) di DeepL.com, il più avanzato traduttore disponibile online. Estremamente veloce ed efficace, DeepL.com fornisce traduzioni […]