I’m trying to run an imapsieve script when a user sends a message (this is part of a spam filter and I want to use outgoing messages to train the filter on good content). This is my config:
plugin { sieve_plugins = sieve_imapsieve sieve_extprograms sieve = file:/var/mail/sieve/incoming.sieve # From elsewhere to Junk imapsieve_mailbox1_name = Junk imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_before = file:/var/mail/sieve/spam.sieve # From Junk to elsewhere imapsieve_mailbox2_name = * imapsieve_mailbox2_from = Junk imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_before = file:/var/mail/sieve/ham.sieve # Sent imapsieve_mailbox3_name = 'Sent Messages' imapsieve_mailbox3_causes = APPEND imapsieve_mailbox3_before = file:/var/mail/sieve/sent.sieve sieve_pipe_bin_dir = /var/mail/sieve sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment } The first two scripts (for training spam and ham respectively) both work. Once upon a time I had the third one working as well, but apparently I changed something that made it break and I have no idea what that could be. (Yes, I need to get my code into revision control. I’ve already beaten myself up over that more than once.) The problem appears to be in the config, not the sieve script, because the script is never compiled into a .svbin while the other scripts in the same directory are compiled. But just for the record, this is the sieve script: > ➔ cat /var/mail/sieve/sent.sieve > require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"]; > > if environment :matches "imap.user" "*" { > set "username" "${1}"; > } > > pipe :copy "train.py" [ "sent", "${username}" ]; Does anyone here see the problem that I’m missing? Thanks, rg