Dovecot : faire le ménage dans les boîtes aux lettres

Dovecot

Vider le répertoire Trash et supprimer le Spam régulièrement sont des choses qu’il faut effectuer de temps en temps sur un serveur de messagerie pour ne pas voir son espace disque s’écrouler inutilement.

Dovecot sait bien entendu faire ça grace à l’option expunge de la commande doveadm. Par exemple, la commande suivante va supprimer les fichiers modifiés de plus de 30 jours dans le répretoire Junk de l’utilisateur toto@titi.org :

doveadm expunge -u toto@titi.org mailbox Junk savedbefore 30d

Il s’agit bien des fichiers dont la dernière date de modification est plus vieille que le nombre de jours choisi, ainsi si vous avez un vieux fichier de plus de 60 jours en Inbox et que vous le placez dans le Junk, celui-ci ne sera supprimé que dans 60 jours car il a été « nouvellement » mis dans Junk.

Une commande plus générale pour faire le ménage sur un serveur Dovecot est la suivante :

doveadm expunge -A mailbox Junk savedbefore 60d

Celle-ci faire le même travail mais pour toutes les boîtes aux lettres. A noter que toute commande de type doveadm -A utilise la requête d’itération iterate_query, celle-ci doit retourner username et domain de chaques utilisateurs. Cette requête peut varier suivant votre installation de DOvecot, pour information, voici la mienne :

iterate_query = SELECT email AS username, domain FROM MX_users

Ceci peut-etre placé dans un script qui sera exécuté de temps en temps par le cron.

#!/bin/bash

DOVEADM=/usr/bin/doveadm

$DOVEADM expunge -A mailbox Trash savedbefore 30d
$DOVEADM expunge -A mailbox Junk  savedbefore 30d

Dans mon cas, sous /etc/cron.d/mailboxes_expunge

10 22 * * *     root    /etc/dovecot/mailboxes_expunge.sh