# 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
```bash
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](https://serverfault.com/questions/769208/doveadm-delete-messages-older-than-date#answer-769223)

## Eliminación por linea de asunto

### Ejemplo
```bash
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](https://castris.com)

Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/cart.php?gid=18).