Como vaciar o eliminar emails antiguos en dovecot sin usar find
Dovecot y los comandos olvidados (Re-editado 2025/07/31)
Muchas veces, y me incluyó yo, por vaguería y algo de desconocimiento, pues una se acostumbra a los fácil, usamos una combinación de find
para hacer un vaciado de alguna cuenta o carpeta de correo que se llenó.
Pues bien, eso es mejor hacerlo con las herramientas del propio Dovecot (si es este el sistema de servidor IMAP que usamos)
Eliminación de correos IMAP por antigüedad
Ejemplo
doveadm expunge -u jane.doe@example.org mailbox Spam before 2w
Redicción 2025/07/31
Diferencia entre savedbefore
y before
en Dovecot:
savedbefore
:
- Fecha cuando Dovecot guardó físicamente el email en el servidor
- Se actualiza con migraciones, restores, reorganizaciones del maildir
- Problemático después de mantenimientos del servidor
before
:
- Fecha real de recepción/entrega del email
- Corresponde a cuando el email llegó originalmente al buzón
- Más confiable para limpiezas por antigüedad
Resumen práctico:
before
→ Usa la fecha real/original del email ✅savedbefore
→ Usa fecha técnica de almacenamiento (evitar tras restores)
En tu caso: después del restore complicado que mencionaste, todos los emails tienen saved_date
reciente, por eso savedbefore 7d
no encontraba nada, pero before 7d
sí encuentra los 86K emails realmente antiguos.
Usa siempre before
para limpiezas normales.
Obtener la lista de buzones
Dado que los buzones se escriben en el shell de distinta manera, para usarse en el comando es bueno obtener la liista
doveadm mailbox list -u jane.doe@example.org
Archive
Mantenimientos
Mantenimientos/mysql
ASSP
Seguridad
Seguridad/inmunifyAV
Seguridad/Wordfence
Services
Services/Failed
LFD
[Gmail]
[Gmail]/Importantes
Junk
Trash
Sent
Drafts
INBOX
Conteo de mensajes
doveadm mailbox status -u jane.doe@example.orgm messages Sistemas.correo
Sistemas.correo messages=5267
Purgado por asunto
doveadm expunge -u jane.doe@example.org mailbox 'Mantenimientos/mysql' HEADER Subject "Palabra Clave"
Purgado mas complejo HEADER y BODY
doveadm expunge -u jane.doe@example.org mailbox 'Mantenimientos/mysql' HEADER Subject "Palabra Clave" BODY "Otro texto"
- Consulta la documentación de Dovecot - Expunge
- doveadm: Delete messages older than date
Eliminación por linea de asunto
Ejemplo
doveadm expunge -u jane.doe@example.org mailbox INBOX subject Cron
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.