Удалять или перемещать дубликаты писем можно используя Dovecot Sieve и расширение «vnd.dovecot.duplicate» до версии 2.2.18 и «duplicate» в более свежих версиях. Дубли писем определяются по «Message-ID». Расширение по умолчанию отключено, но начать его использовать не составит труда.
/etc/dovecot/conf.d/90-sieve.conf
plugin { sieve_before = /var/spool/mail/vmail/default.sieve # (путь может быть другим) sieve_extensions = +vnd.dovecot.duplicate # dovecot < 2.2.18 #sieve_extensions = +duplicate # dovecot >= 2.2.18 }
/var/spool/mail/vmail/default.sieve # (путь может быть другим)
require ["vnd.dovecot.duplicate"]; # dovecot < 2.2.18 #require ["duplicate"]; # dovecot >= 2.2.18 if duplicate { discard; #fileinto "Trash"; # если надо перемещать в корзину stop; }
Проверить версию Dovecot
dovecot --version 2.2.10
Ввиду того, что я использую Centos 7 с Dovecot 2.2.10, то с версиями >= 2.2.18 не тестировал.
Источник Dovecot вики https://wiki.dovecot.org/Pigeonhole/Sieve/Extensions/Duplicate и гугл.
Кстати, в процессе настройки на тестовом сервере столкнулся с ошибкой «User test@exemple.com doesn’t have home dir set, disabling duplicate database»
Ошибка связана с тем, что в файле /etc/dovecot/conf.d/10-mail.conf не был указан параметр mail_home. Должно выглядеть примерно так:
mail_home = /var/spool/mail/vmail mail_location = maildir:~/%n
По настройке mail_home и mail_location можно почитать в официальной вики https://wiki2.dovecot.org/VirtualUsers/Home