I'm have a problem where dovecot-sieve is used to run the script after moving emails from Junk Folder.

config:

imapsieve_mailbox2_name = *
Imapsieve_mailbox2_from = INBOX.Junk
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve

filter:

require [ "vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables", "fileinto", "envelope" ];

if environment :matches "imap.mailbox" "*" {
  set "mailbox" "${1}";
}

if string "${mailbox}" "INBOX.Trash" {
  stop;
}

if environment :matches "imap.user" "*" {
  set "username" "${1}";
}

pipe :copy "sa-learn-ham.sh" [ "${username}" ]

It's working perfectly.

However, I have a problem after adding :

if envelope :is "from" "*" {
    set :lower "from" "${1}";
}

pipe :copy "sa-learn-ham.sh" [ "${username}", "${from}" ]

then appears error in log file:

Error: sieve: report-ham: line 1: the envelope extension cannot be used in this context (needs access to message envelope)

Is possible to use envelope extension to get sender address after moving message from Junk folder ?

Regards,
Jack