On Mon, Oct 19, 2026 at 12:49:52AM +0200, H.-Dirk Schmitt wrote:
>    That is the reason 2.4.5 was picked up.
>    I can't identify the fix on github – sorry. 
> 
>    > Trixie contains 2.4.1 (with a bunch of backported bugfixes, not 2.4.4).
> 
>    Sorry this was a typo in in the 3rd number.
> 
>    > Unfortunately dovecot minor versions contain incompatible changes, so we
>    > cannot simply upgrade between them with trixie point releases.  We will
>    > need to identify the specific commit so we can introduce a targeted fix
>    > into trixie's version.
> 
>    Maybe it can be added to backports?
>    The forky version compiles as backport without any changes.

Backports isn't really the place for this, for multiple reasons.  It
should be fixed in the main archive.

Unfortunately, I haven't been able to find a suitable looking change
from the 2.4.4..2.4.5 range upstream.  I have also been unable to come
up with a way to reproduce the failure.

>From your description, as well as the mailing list discussion, it seems
like issue is that when a dovecot program is run as a user that does not
have permission to access some file referenced in the configuration,
typically a TLS key.  So, to try to reproduce this failure, I've set up
the following and tested it with the dovecot 1:2.4.1+dfsg1-6 packages
from the original trixie release.  I have not encountered any errors,
though, so something must be missing.  Can you tell from here what's
missing?  If you can provide a minimal repro configuration, that would
be helpful.

Certificates are locked down:

# ls -l /etc/dovecot/private/tls/
total 8
-r-------- 1 1000 1000 1529 May  8  2025 example.net.crt
-r-------- 1 1000 1000 1704 May  8  2025 example.net.key

And what I think are the relevant parts of `doveconf -n`:

dovecot_config_version = 2.4.0
dovecot_storage_version = 2.4.0
mail_gid = vmail
mail_uid = vmail
mail_home = /home/vmail/users/%{user | username}/mail
mail_path = /home/vmail/users/%{user | username}/mail
mail_privileged_group = mail
ssl_server {
  cert_file = /etc/dovecot/private/tls/example.net.crt
  key_file = /etc/dovecot/private/tls/example.net.key
}
protocol lda {
  mail_plugins {
    sieve = yes
  }
  sieve_script personal {
    driver = file
    path = /home/vmail/users/%{user | username}/mail.sieve
  }
}
protocol lmtp {
  auth_username_format = %{user | username | lower}
  mail_plugins {
    sieve = yes
  }
  sieve_script personal {
    path = /home/vmail/users/%{user | username}/mail.sieve
  }
}

I've then created a virtual user with a sieve script that does some
simple filtering:

root@94faf4d30408:/home/vmail/users/testuser# cat mail.sieve
require ["fileinto", "envelope"];
if header :is "X-Sieve-Test" "yes" {
  fileinto "incoming/filtered";
} else {
  keep;
}

And sent mail to that user using /usr/lib/dovecot/deliver:

root@94faf4d30408:/home/vmail/users/testuser# cat | runuser -u vmail -g vmail 
-- /usr/lib/dovecot/deliver -e -f mailer-daemon -a testuser -d testuser
From: mailer-daemon
To: noahm <noahm@localhost>
Subject: test message
X-Sieve-Test: yes
Message-ID: <[email protected]>

testing delivery

lda(testuser)<113><6YMTBeF31mpxAAAA1oRN5w>: Info: sieve: 
msgid=<[email protected]>: fileinto action: 
stored mail into mailbox 'incoming/filtered'

Reply via email to