undocumented changed behavior of 2.4.3 (possible bug report)

Patrick Cernko via dovecot <[email protected]> Tue, 21 Apr 2026 13:37:38 +0200
Newsgroups gmane.mail.imap.dovecot
Organization Information Services & Technology, Joint Administration, Max Planck Institute for Informatics & Max Planck Institute for Software Systems
Message-ID <[email protected]>
Hello Dovecot-Devs, hello list,

while upgrading my Dovecot 2.4.2 setup to 2.4.3 I observed two instances of changed 
behavior. I could not find notes about those issues in the corresponding 
documentation (https://doc.dovecot.org/2.4.3/installation/upgrade/2.4-to-2.4.x.html) 
or release notes:

1. I had to change

userdb_ldap_iterate_filter = 
(&(objectClass=posixAccount)%{if(protocol,"eq","pop3","(istIsMemberOf=POP3-users)","")})
to
userdb_ldap_iterate_filter = 
(&(objectClass=posixAccount)%{if(protocol,"eq","pop3","(istIsMemberOf=POP3-users)","")|safe)

otherwise the characters '()=' in the "true"-case of the condition got somehow 
"quoted" with escaped ASCII codes, which led to a broken LDAP filter string.

Maybe you could add some documentation (in "Upgrading" as well as "Settings 
Variables") about that?


2. The behavior of sieve matches using ":matches" has changed:

Example email (only the relevant header):
List-Id: Dovecot Mailing List <dovecot.dovecot.org>

Example Sieve script:
if header :matches "List-Id" "*<dovecot*.dovecot.org>" {
   fileinto "dovecot";
}

In 2.4.2 (and earlier) the example email matched the condition and got stored in the 
dovecot folder, while in 2.4.3 the condition does NOT match. As a workaround I added 
a '*' at the end of the match ("*<dovecot*.dovecot.org>*") to get my mails stored 
correctly again.

Is this changed behavior for Sieve intentional or a bug? In case of a bug, could you 
please provide a fix?

In case of intentional behavior:
* Could you please explain the intention? Why was it necessary?
* What would be the correct fix for the sieve example to match a List-Id header that 
ENDS WITH ".dovecot.org>"?
* I assume, that other users on my servers will run into similar problems once I 
upgrade their servers. Is it possible to detect such problematic matches in Sieve 
scripts? E.g. "all matches without a trailing '*' are affected", ...
This would give me a chance, to inform my users or even fix their scripts in advance.

Best regards,
-- 
Patrick Cernko <[email protected]> +49 681 9325 5815
Joint Scientific IT and Technical Service
Max-Planck-Institute für Informatik & Softwaresysteme

_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]