This is useful in combination with `rspamd` Copied from [here](/https://poolp.org/posts/2019-09-14/setting-up-a-mail-server-with-opensmtpd-dovecot-and-rspamd/) ## Installation $ doas pkg_add dovecot-pigeonhole ## Setup On `/etc/dovecot/20-imap.conf`: protocol imap { mail_plugins = $mail_plugins imap_sieve } On `/etc/dovecot/90-plugin.conf`: plugin { sieve_plugins = sieve_imapsieve sieve_extprograms sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment imapsieve_mailbox1_name = Junk imapsieve_mailbox1_causes = COPY APPEND imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve imapsieve_mailbox2_name = * imapsieve_mailbox2_from = Junk imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve imapsieve_mailbox3_name = Inbox imapsieve_mailbox3_causes = APPEND imapsieve_mailbox3_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve } On `/usr/local/lib/dovecot/sieve/report-ham.sieve`: require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"]; if environment :matches "imap.mailbox" "*" { set "mailbox" "${1}"; } if string "${mailbox}" "Trash" { stop; } if environment :matches "imap.user" "*" { set "username" "${1}"; } pipe :copy "sa-learn-ham.sh" [ "${username}" ]; On `/usr/local/lib/dovecot/sieve/report-spam.sieve`: require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"]; if environment :matches "imap.user" "*" { set "username" "${1}"; } pipe :copy "sa-learn-spam.sh" [ "${username}" ]; On `/usr/local/lib/dovecot/sieve/sa-learn-ham.sh`: #!/bin/sh exec /usr/local/bin/rspamc -d "${1}" learn_ham On `/usr/local/lib/dovecot/sieve/sa-learn-spam.sh` #!/bin/sh exec /usr/local/bin/rspamc -d "${1}" learn_ham Grant mode 755 for the above shell scripts Grant +w mode for the sieve directory (with -R) Change directory to the sieve directory and run as root: $ doas sievec report-ham.sieve $ doas sievec report-spam.sieve Restart dovecot with `rcctl restart dovecot`.