Eliminar correos antiguos automáticamente

El correo es normalmente uno de los puntos en los que más espacio en uso se acumula.

Para evitar que el espacio consumido por el correo crezca sin control, puede ser interesante tener la capacidad de eliminar correo automáticamente bajo condiciones como la antiguedad, por ejemplo eliminando aquellos que sean más antiguos de 60 días.

Si usas algún cliente de correo como Outlook o Thunderbird, podrías crear un filtro o regla en este, pero si usas otro cliente como el de un dispositivo móvil, o simplemente el webmail, te interesaría poder crearlo a nivel administrador.

Otro motivo es cuando una empresa gestiona cientos de cuentas, el administrador no quiere depender de que los usuarios configuren correctamente sus reglas de purgado, de ahí que una configuración sin depender del usuario final sería especialmente útil.

Como primer paso debes saber que todo el correo se almacena en ficheros  en el propio sistema de almacenamiento, por ejemplo, la cuenta de correo usuario@ejemplo.com, tendrá todo su contenido alojado en:

/home/usuario_cpanel/mail/ejemplo.com/usuario

Sabiendo esto podemos aprovechar la potencia de los linux para hacer un comando que busque los ficheros más antiguo de x días y los elimine:

find /home/usuario_cpanel/mail/ejemplo.com/usuario -maxdepth 1 -type d \( -name cur -o -name new \) -exec find {} -mtime +30 -type f -delete \; >/dev/null 2>&1

Este comando que parece tan complejo, busca los correos con una antiguedad superior a 30 días en la bandeja de entrada, solo tendrías que especificar la ruta cambiando el usuario de cPanel, dominio, nombre de usuario del correo y finalmente los días (definidos en el +30) por la antiguedad deseada.

Si queremos que se lleve a cabo en todas las cuentas de un dominio, la ruta de búsqueda sería:

/home/usuario_cpanel/mail/ejemplo.com/*

El asterisco equivale a "cualquier cosa", lo mismo si queremos que el purgado se realice en todos los dominios y usuarios:

/home/usuario_cpanel/mail/*/*

Por último quedaría automatizar el comando, configurando una tarea cron  para que este comando se ejecute una vez al día.