Spam ReportingΒΆ
Spam/not-spam reporting within Dovecot (IMAP) is handled by the user action of moving a message into (or out of) a defined Spam mailbox.
The Spam mailbox is defined and reported to the MUA via a Special-Use flag:
namespace inbox {
mailbox Spam {
auto = create
special_use = \Junk
}
}
Spam reporting messages are handled via imapsieve plugin. A global configuration script is used to capture the event of moving messages in/out of the Spam mailbox; the script sends the message using RFC 5965 compliant spam reporting format to an external reporting e-mail address, using the report extension.
protocol imap {
mail_plugins = $mail_plugins imap_sieve
}
plugin {
sieve_plugins = sieve_imapsieve
sieve_implicit_extensions = +vnd.dovecot.report
# From elsewhere to Spam folder
imapsieve_mailbox1_name = Spam
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_before = file:/etc/dovecot/report-spam.sieve
# From Spam folder to elsewhere
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Spam
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/etc/dovecot/report-ham.sieve
}
# Needed to send message to external mail server
submission_host = 127.0.0.1:587
report-spam.sieve:
require "vnd.dovecot.report";
report "abuse" "User added this message to the Spam folder." "spam-report@example.com";
report-ham.sieve:
require "vnd.dovecot.report";
require "environment";
require "imapsieve";
if environment "imap.mailbox" "Trash" {
# Putting spam in Trash mailbox is not significant
stop;
}
if environment "imap.mailbox" "Spam" {
# Copying mail inside Spam mailbox is not significant
stop;
}
report "not-spam" "User removed this message from the Spam folder." "ham-report@example.com";