Skip to main content

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"

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.