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;
#}