Déduplication des mails entrants avec Dovecot

9 juillet 2014

Jusqu'à aujourd'hui, j'utilisais procmail pour éliminer les doublons en reception, lorsqu'un mail m'est envoyé directement et en copie à un alias dont je fais partie par exemple, avec la règle suivante :

:0 Wh: msgid.lock
| formail -D 8192 $HOME/.msgid.lock

Je cherchais donc à faire de même sur un serveur utilisant dovecot-lda à la place de procmail, de préférence de la manière la plus directe possible. Parmi différentes possibilités, la déduplication pouvait être obtenue :

  • En invoquant procmail depuis dovecot-lda
  • En invoquant dovecot-lda après procmail
  • En utilisant une extension Sieve intégrée à Dovecot

Comme sieve était déjà activé sur le serveur, et comme il s'agissait de la solution la plus directe (aucun executable externe n'est invoqué) j'ai retenu la dernière solution.

La mise en place est relativement triviale, puisqu'il suffit d'activer l'extension "vnd.dovecot.duplicate" (qui est une extension spécifique à Dovecot > 2 : elle ne fait pas partie des extensions natives de Sieve), et d'ajouter un filtre.

Pour l'activation du module :

#/etc/dovecot/conf.d/90-sieve.conf 
  sieve_extensions = +vnd.dovecot.duplicate

Le filtre :

require ["fileinto","vnd.dovecot.duplicate"];
if duplicate {
    fileinto "Trash";
}

# Si on est sûr de vouloir les supprimer
#if duplicate {
#     discard;
#}

Références