FAQ - Come cancellare automaticamente le email più vecchie di un determinato numero di giorni?

Cancellazione automatica dei messaggi

Tramite i Processi Cron disponibili nel cPanel è possibile programmare la cancellazione automatica dei messaggi presenti in una casella email da più di un determinato numero di giorni.

Questa soluzione può essere utile, ad esempio, per caselle utilizzate per notifiche, log, alert o altri messaggi che non è necessario conservare a lungo.


Avvertenza

La procedura comporta la cancellazione automatica e definitiva dei messaggi che soddisfano i criteri indicati.

Prima di configurare il cron è quindi importante verificare attentamente:

- la casella email sulla quale si desidera intervenire;
- il numero di giorni impostato;
- che non siano presenti messaggi che si desidera conservare.

Il comando riportato di seguito è destinato a utenti esperti e viene fornito come esempio. Non viene fornita assistenza relativamente alla personalizzazione di comandi o script.


Individuare il percorso della casella email

Le caselle email di un account cPanel sono normalmente memorizzate utilizzando un percorso simile al seguente:

/home/USERNAME/mail/DOMINIO/CASELLA/

Dove:

USERNAME è il nome utente dell'account cPanel.
DOMINIO è il dominio al quale appartiene la casella email.
CASELLA è la parte dell'indirizzo email che precede la @.

Ad esempio, per la casella:

info@example.com

appartenente all'utente cPanel:

esempio

il percorso sarà:

/home/esempio/mail/example.com/info/

Nota sul formato della casella email

La procedura descritta in questa guida è valida per le caselle email memorizzate in formato Maildir, utilizzato normalmente sui nostri servizi di hosting.

Il comando opera infatti sui messaggi presenti nelle directory cur e new tipiche del formato Maildir.

La procedura non è applicabile alle caselle eventualmente configurate con un formato di memorizzazione differente, come mbox.


Comando per eliminare i messaggi più vecchi

Per cancellare i messaggi presenti da più di 7 giorni è possibile utilizzare:

find /home/USERNAME/mail/DOMINIO/CASELLA/ -type f ( -path '*/cur/*' -o -path '*/new/*' ) -mtime +7 -delete

Ad esempio:

find /home/esempio/mail/example.com/info/ -type f ( -path '*/cur/*' -o -path '*/new/*' ) -mtime +7 -delete

Il comando cerca ricorsivamente i messaggi presenti nelle directory cur e new della casella email e cancella quelli il cui file risulta più vecchio del periodo indicato.

La ricerca comprende anche le eventuali sottocartelle IMAP create dall'utente. Ad esempio, se nella webmail viene creata una cartella denominata Lavoro, verranno controllati anche i messaggi presenti nelle relative directory della cartella.


Modificare il numero di giorni

Il valore:

-mtime +7

determina l'età minima dei file da eliminare.

È quindi possibile modificare 7 con il numero di giorni desiderato.

Ad esempio:

-mtime +30

permette di eliminare i messaggi più vecchi di circa 30 giorni.

Il parametro mtime considera la data di modifica del file presente sul server e non la data visualizzata nel campo Data del messaggio email. Il calcolo viene inoltre effettuato da find sulla base di intervalli completi di 24 ore.


Verificare i messaggi prima della cancellazione

Prima di configurare il cron, verificare con particolare attenzione il percorso della casella email e il numero di giorni impostato, poiché i messaggi eliminati non potranno essere recuperati tramite il comando.


Configurazione del cron job

Per automatizzare la procedura:

1. Accedere al cPanel.
2. Entrare nella sezione Processi Cron.
3. Creare un nuovo processo cron scegliendo la frequenza desiderata, ad esempio una volta al giorno o una volta a settimana.
4. Nel campo Comando inserire:
find /home/USERNAME/mail/DOMINIO/CASELLA/ -type f ( -path '*/cur/*' -o -path '*/new/*' ) -mtime +7 -delete >/dev/null 2>&1
5. Sostituire USERNAME, DOMINIO e CASELLA con i dati effettivi del proprio account.
6. Salvare il cron job.

Ad ogni esecuzione verranno individuati ed eliminati automaticamente i messaggi che soddisfano il limite temporale impostato.


Esempio completo

Supponiamo di avere:

Utente cPanel: esempio
Dominio: example.com
Casella email: notifiche@example.com

e di voler eliminare automaticamente i messaggi più vecchi di 7 giorni.

Il comando sarà:

find /home/esempio/mail/example.com/notifiche/ -type f ( -path '*/cur/*' -o -path '*/new/*' ) -mtime +7 -delete >/dev/null 2>&1

Configurandolo per essere eseguito una volta al giorno, la pulizia della casella avverrà automaticamente senza ulteriori interventi.


Attenzione alle sottocartelle

Il comando opera ricorsivamente sull'intera casella email e comprende quindi anche le cartelle e sottocartelle create dall'utente, purché i messaggi siano memorizzati nelle normali directory Maildir cur o new.

La cancellazione non è quindi limitata alla sola Posta in arrivo.

Se si desidera conservare permanentemente alcuni messaggi, è necessario utilizzare una configurazione differente oppure evitare questa procedura.