Hello,
I have a dovecot-sieve rule that has been working fine for years which calls sa-learn whenever a message is moved from or to the Junk folder.
Recently, but I don't know when it started exactly, this no longer works. I get the following error message in mail.log:
dovecot: imap: Error: Use of uninitialized value $ENV{"PATH"} in split at /usr/lib/x86_64-linux-gnu/perl-base/File/Spec/Unix.pm line 136.
Error: program exec:/usr/lib/dovecot/sieve-pipe/sa-learn-spam.sh (2526990): Forcibly terminated with signal 15
Error: sieve: failed to pipe message to program `sa-learn-spam.sh': refer to server log for more information. [2024-10-16 10:16:51]
Error: sieve: Execution of script /usr/lib/dovecot/sieve-pipe/report-spam.sieve failed
The content of report-spam.sieveĀ is
require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
if environment :matches "imap.user" "*" { set "username" "${1}"; }
pipe :copy "sa-learn-spam.sh" [ "${username}" ];
So my guess is that one of the require on the first line triggers this Unix.pm, and it fails because somehow the PATH variable is not set in this context.
However, I am at a complete loss to determine how to change the environment variable in the context of dovecot-sieve. And also, I am not sure why this would be required.
Does somebody know how to fix this problem, or alternatively point me to the relevant part in the documentation?
Thanks,
Julien