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 savedbeforebefore 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.