Duplicate e-mail with Dovecot and Sieve

Claudio Corvino ccorvino at trustitalia.it
Tue Nov 26 12:13:11 EET 2019


Hi everyone,

we have a duplicate e-mail problem with Dovecot 2.2.13 (LMTP as MDA) on 
a Debian 8 server.

Our users are on external LDAP.

We just need to setup a vacation responder (with Sieve) for our 
employees with a redirect to an alias (a distribution list), let's call 
it /LIST at domain.com/, that comprehends even the user that just activated 
the out of office.

This generates a loop: when someone write to LIST at domain.com every user 
of the aforementioned distribution list receives a duplicate e-mail 
generated from the sieve script of the user with vacation responder 
active that contains the redirect to LIST at domain.com.

We just tried activating the duplicate extension into sieve script but 
the redirected e-mail has a different MSG-ID and it's not recognized as 
a duplicate by the server.

Our dovecot conf is:

/# 2.2.13: /etc/dovecot/dovecot.conf
auth_mechanisms = plain login
default_vsz_limit = 512 M
disable_plaintext_auth = no
dotlock_use_excl = no
info_log_path = /var/log/dovecot-info.log
log_path = /var/log/dovecot.log
mail_fsync = never
mail_location = maildir:~/Maildir
mail_max_userip_connections = 50
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope 
encoded-character vacation subaddress comparator-i;ascii-numeric 
relational regex imap4flags copy include variables body enotify 
environment mailbox date ihave duplicate
mmap_disable = yes
passdb {
   args = /etc/dovecot/dovecot-ldap.conf
   driver = ldap
}
passdb {
   args = /etc/dovecot/dovecot-ldap-archive.conf
   driver = ldap
}
plugin {
   sieve = file:/var/www/html/ooo/%n/script
   sieve_dir = /var/www/html/ooo/%n/
   sieve_duplicate_default_period = 1m
   sieve_duplicate_max_period = 1d
   sieve_extensions = +vnd.dovecot.duplicate +notify +imapflags 
+vacation-seconds
   sieve_global = /etc/dovecot/sieve/
   sieve_max_redirects = 10
   sieve_user_log = file:/var/www/html/ooo/%n/sieve_error.log
   sieve_vacation_default_period = 1d
   sieve_vacation_max_period = 90d
   sieve_vacation_min_period = 5s
}
protocols = imap pop3 lmtp sieve
service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0660
     user = postfix
   }
   unix_listener auth-master {
     group = vmail
     mode = 0660
     user = vmail
   }
   user = root
}
service imap-login {
   process_limit = 200
}
service lmtp {
   executable = lmtp -L
   process_min_avail = 5
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     group = postfix
     mode = 0666
     user = postfix
   }
   user = vmail
}
service managesieve-login {
   executable = /usr/lib/dovecot/managesieve-login
   inet_listener sieve {
     port = 4190
   }
   process_min_avail = 10
   service_count = 1
}
service managesieve {
   executable = /usr/lib/dovecot/managesieve
}
ssl_cert = </etc/ssl/*xxxxxxxxxxxxxxxxxxxxxxxx*
ssl_cipher_list = 
ALL:!LOW:!aNULL:!eNULL:!SSLv2:!RC4:!MD5:!DES:!EXP:!SEED:!IDEA:!3DES
ssl_key = </etc/ssl/private/*xxxxxxxxxxxxxxxxxx*
userdb {
   args = /etc/dovecot/dovecot-ldap.conf
   driver = ldap
}
userdb {
   args = /etc/dovecot/dovecot-ldap-archive.conf
   driver = ldap
}
protocol lda {
   auth_socket_path = /var/run/dovecot/auth-master
   hostname = *xxxxxxxxxxxxxxxxx*
   info_log_path = /var/log/dovecot-lda.log
   log_path = /var/log/dovecot-lda-errors.log
   mail_plugins = " autocreate sieve quota"
}
protocol lmtp {
   info_log_path = /var/log/dovecot-lmtp.log
   log_path = /var/log/dovecot-lmtp-errors.log
   mail_plugins = " autocreate sieve quota"
   postmaster_address = postmaster@*xxxxxxxxxx*
}
protocol sieve {
   info_log_path =
   log_path =
   mail_max_userip_connections = 10
   managesieve_implementation_string = dovecot
   managesieve_logout_format = bytes=%i/%o
   managesieve_max_compile_errors = 5
   managesieve_max_line_length = 65536
}/

An example of user sieve script is:

/require ["vnd.dovecot.duplicate","copy","fileinto","vacation-seconds"];
# rule:[Outofoffice]
if true
{
     vacation :addresses "xxxxxxx at domain.tld" :subject "Automatic Reply" 
text:
/

/<Text here>
.
;
     fileinto "INBOX";/

/    redirect "LIST at domain.com";/

/}/

Please could someone give us support on the matter?

Removing the redirect from sieve user script is not an option :-)

Thanks

Cheers

-- 

*Claudio Corvino
IT Systems Administrator*

Trust Italia S.p.A. <https://www.trustitalia.it/>

*DigiCert Italian Affiliate
Certified Partner Platinum Elite*

Via Flaminia, 497 - 00191 Roma
*tel.: +39 06332287*
*fax: +39 063336145*
*e-mail: * ccorvino at trustitalia.it <mailto:ccorvino at trustitalia.it>
*website: * www.trustitalia.it <https://www.trustitalia.it>

Symantec Authentication Service
Le modalità di trattamento dei dati a cui è stato dato il consenso e le 
relative finalità sono consultabili al link 
<https://www.trustitalia.it/archivio/legal_agreements/informativa_privacy_email_marketing.pdf>.
Qualora non desiderasse ricevere le nostre comunicazioni, potrà 
comunicarlo mediante il seguente link 
<https://www.trustitalia.it/site/info_css/05110101/revoca-del-consenso>.
Inoltre, in ogni momento, potrà modificare o cancellare i dati presenti 
nel nostro archivio contattandoci all'indirizzo privacy at trustitalia.it 
<mailto:privacy at trustitalia.it>

Se possibile non stamparmi! Se possibile, non stamparmi!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://dovecot.org/pipermail/dovecot/attachments/20191126/dc9a6873/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4206 bytes
Desc: S/MIME Cryptographic Signature
URL: <https://dovecot.org/pipermail/dovecot/attachments/20191126/dc9a6873/attachment.p7s>


More information about the dovecot mailing list