Fred
2019-Mar-08 14:12 UTC
Sieve scripts not triggered on IMAP inbound messages using IMAPC
Good morning.
I am using Dovecot as an IMAP proxy -- using IMAPC -- and the system is
working great. Thank you for contributing such great software to the
community!
I'm using Dovcot 2.3.5 and Pigeonhole 0.5.5.
My server is located behind a content-filtering firewall that will mark
incoming messages by adding "[SPAM]" to the subject line. I'm
trying to use
Sieve to identify those messages and move them into the Spam folder. I have
a basic Sieve script that looks like this:
require ["fileinto"];
if anyof (header :contains "Subject" "[SPAM]",
header :contains "X-Spam-Flag" "Yes")
{
fileinto "Spam";
stop;
}
I can see in the logs that Sieve is loaded, and also the imapsieve_plugin
Debug: sieve: Pigeonhole version 0.5.5 (2483b085) initializing
Debug: sieve: Sieve imapsieve plugin for Pigeonhole version 0.5.5
(2483b085) loaded
Sieve detects outbound messages (from the log: Debug: imapsieve: mailbox
INBOX.Sent: APPEND event) but nothing registers for inbound, and my
spam_rule is never triggered. Any suggestions?
Here is the output from "Dovecot -n":
# 2.3.5 (513208660): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.5 (2483b085)
# OS: Linux 3.10.0-957.5.1.el7.x86_64 x86_64 CentOS Linux release 7.6.1810
(Core) xfs
# Hostname: <redacted>
auth_master_user_separator = *
auth_mechanisms = PLAIN LOGIN
auth_verbose_passwords = plain
deliver_log_format = from=%{from}, envelope_sender=%{from_envelope},
subject=%{subject}, msgid=%m, size=%{size}, %$
dict {
acl = pgsql:/etc/dovecot/dovecot-share-folder.conf
quotadict = pgsql:/etc/dovecot/dovecot-used-quota.conf
}
first_valid_uid = 2000
imapc_features = fetch-bodystructure fetch-headers
imapc_host = <redacted>
imapc_port = 993
imapc_ssl = imaps
imapc_ssl_verify = no
last_valid_uid = 2000
listen = * [::]
mail_debug = yes
mail_gid = 2000
mail_home = /var/mail/imapc/home/%d/%n
mail_location = imapc:/var/mail/imapc/%d/%n
mail_plugins = mailbox_alias mail_log notify
mail_uid = 2000
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character
vacation subaddress comparator-i;ascii-numeric relational regex imap4flags
copy include variables body enotify environment mailbox date index ihave
duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
namespace inbox {
inbox = yes
list = yes
location
prefix
separator = .
type = private
}
passdb {
args = host=<redacted>
default_fields = userdb_imapc_user=%u
userdb_imapc_password=#hidden_use-P_to_show#
driver = imap
}
passdb {
args = /etc/dovecot/dovecot-master-users
driver = passwd-file
master = yes
}
plugin {
imapsieve_default = /var/vmail/sieve/global/spam_rule.sieve
mail_log_events = delete undelete expunge mailbox_delete mailbox_rename
mail_log_fields = uid box msgid size from subject
mailbox_alias_new = Sent Messages
mailbox_alias_new2 = Sent Items
mailbox_alias_old = Sent
mailbox_alias_old2 = Sent
sieve_global_dir = /var/vmail/sieve/global/
sieve_max_redirects = 30
sieve_plugins = sieve_imapsieve
sieve_trace_debug = yes
sieve_trace_dir = /var/log/dovecot
sieve_trace_level = matching
}
protocols = imap sieve
service auth {
unix_listener /var/spool/postfix/private/dovecot-auth {
group = postfix
mode = 0666
user = postfix
}
unix_listener auth-master {
group = vmail
mode = 0666
user = vmail
}
unix_listener auth-userdb {
group = vmail
mode = 0660
user = vmail
}
}
service dict {
unix_listener dict {
group = vmail
mode = 0660
user = vmail
}
}
service imap-login {
process_limit = 500
service_count = 1
}
service lmtp {
executable = lmtp -L
inet_listener lmtp {
address = 127.0.0.1
port = 24
}
process_min_avail = 5
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
user = vmail
}
service managesieve-login {
inet_listener sieve {
address = 127.0.0.1
port = 4190
}
}
ssl = required
ssl_cert = </etc/letsencrypt/live/mgrids.dynu.com/fullchain.pem
ssl_cipher_list
ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+
3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5
ssl_client_ca_file = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_prefer_server_ciphers = yes
syslog_facility = local5
userdb {
driver = prefetch
}
protocol imap {
imap_client_workarounds = tb-extra-mailbox-sep
mail_max_userip_connections = 30
mail_plugins = mailbox_alias mail_log notify imap_sieve
}
protocol sieve {
info_log_path = /var/log/dovecot/sieve-info.log
log_path = /var/log/dovecot/sieve-err.log
managesieve_implementation_string = Dovecot Pigeonhole
managesieve_max_line_length = 65536
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<https://dovecot.org/pipermail/dovecot/attachments/20190308/1eb61c70/attachment.html>
Stephan Bosch
2019-Mar-11 23:08 UTC
Sieve scripts not triggered on IMAP inbound messages using IMAPC
Op 08/03/2019 om 15:12 schreef Fred via dovecot:> > Good morning. > > I am using Dovecot as an IMAP proxy -- using IMAPC -- and the system > is working great. Thank you for contributing such great software to > the community! > > I?m using Dovcot 2.3.5 and Pigeonhole 0.5.5. > > My server is located behind a content-filtering firewall that will > mark incoming messages by adding ?[SPAM]? to the subject line. I?m > trying to use Sieve to identify those messages and move them into the > Spam folder. I have a basic Sieve script that looks like this: > > ?? require ["fileinto"]; > > ?? if anyof (header :contains "Subject" "[SPAM]", > > ?? ??????????header :contains "X-Spam-Flag" "Yes") > > ?? { > > ?? ????fileinto "Spam"; > > ?? ????stop; > > ?? } > > I can see in the logs that Sieve is loaded, and also the imapsieve_plugin > > ?? Debug: sieve: Pigeonhole version 0.5.5 (2483b085) initializing > > ?? Debug: sieve: Sieve imapsieve plugin for Pigeonhole version 0.5.5 > (2483b085) loaded > > Sieve detects outbound messages (from the log: Debug: imapsieve: > mailbox INBOX.Sent: APPEND event) but nothing registers for inbound, > and my spam_rule is never triggered. Any suggestions? >https://wiki.dovecot.org/Pigeonhole/Sieve/Troubleshooting> Here is the output from ?Dovecot -n?: > > # 2.3.5 (513208660): /etc/dovecot/dovecot.conf > > # Pigeonhole version 0.5.5 (2483b085) > > # OS: Linux 3.10.0-957.5.1.el7.x86_64 x86_64 CentOS Linux release > 7.6.1810 (Core)? xfs > > # Hostname: <redacted> > > auth_master_user_separator = * > > auth_mechanisms = PLAIN LOGIN > > auth_verbose_passwords = plain > > deliver_log_format = from=%{from}, envelope_sender=%{from_envelope}, > subject=%{subject}, msgid=%m, size=%{size}, %$ > > dict { > > ? acl = pgsql:/etc/dovecot/dovecot-share-folder.conf > > ? quotadict = pgsql:/etc/dovecot/dovecot-used-quota.conf > > } > > first_valid_uid = 2000 > > imapc_features = fetch-bodystructure fetch-headers > > imapc_host = <redacted> > > imapc_port = 993 > > imapc_ssl = imaps > > imapc_ssl_verify = no > > last_valid_uid = 2000 > > listen = * [::] > > mail_debug = yes > > mail_gid = 2000 > > mail_home = /var/mail/imapc/home/%d/%n > > mail_location = imapc:/var/mail/imapc/%d/%n > > mail_plugins = mailbox_alias mail_log notify > > mail_uid = 2000 > > managesieve_notify_capability = mailto > > managesieve_sieve_capability = fileinto reject envelope > encoded-character vacation subaddress comparator-i;ascii-numeric > relational regex imap4flags copy include variables body enotify > environment mailbox date index ihave duplicate mime foreverypart > extracttext imapsieve vnd.dovecot.imapsieve > > namespace inbox { > > ? inbox = yes > > ? list = yes > > ? location > > ? prefix > > ? separator = . > > ? type = private > > } > > passdb { > > ? args = host=<redacted> > > ? default_fields = userdb_imapc_user=%u > userdb_imapc_password=#hidden_use-P_to_show# > > ? driver = imap > > } > > passdb { > > ? args = /etc/dovecot/dovecot-master-users > > ? driver = passwd-file > > ? master = yes > > } > > plugin { > > ? imapsieve_default = /var/vmail/sieve/global/spam_rule.sieve > > ? mail_log_events = delete undelete expunge mailbox_delete mailbox_rename > > ? mail_log_fields = uid box msgid size from subject > > ? mailbox_alias_new = Sent Messages > > ? mailbox_alias_new2 = Sent Items > > ? mailbox_alias_old = Sent > > ? mailbox_alias_old2 = Sent > > ? sieve_global_dir = /var/vmail/sieve/global/ > > ? sieve_max_redirects = 30 > > ? sieve_plugins = sieve_imapsieve > > ? sieve_trace_debug = yes > > ? sieve_trace_dir = /var/log/dovecot > > ? sieve_trace_level = matching > > } > > protocols = imap sieve > > service auth { > > ? unix_listener /var/spool/postfix/private/dovecot-auth { > > ??? group = postfix > > ??? mode = 0666 > > ??? user = postfix > > ? } > > ? unix_listener auth-master { > > ??? group = vmail > > ??? mode = 0666 > > ??? user = vmail > > ? } > > ? unix_listener auth-userdb { > > ??? group = vmail > > ??? mode = 0660 > > ??? user = vmail > > ? } > > } > > service dict { > > ? unix_listener dict { > > ??? group = vmail > > ??? mode = 0660 > > ??? user = vmail > > ? } > > } > > service imap-login { > > ? process_limit = 500 > > ? service_count = 1 > > } > > service lmtp { > > ? executable = lmtp -L > > ? inet_listener lmtp { > > ??? address = 127.0.0.1 > > ??? port = 24 > > ? } > > ? process_min_avail = 5 > > ? unix_listener /var/spool/postfix/private/dovecot-lmtp { > > ??? group = postfix > > ??? mode = 0600 > > ??? user = postfix > > ? } > > ? user = vmail > > } > > service managesieve-login { > > ? inet_listener sieve { > > ??? address = 127.0.0.1 > > ??? port = 4190 > > ? } > > } > > ssl = required > > ssl_cert = </etc/letsencrypt/live/mgrids.dynu.com/fullchain.pem > > ssl_cipher_list = > ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5 > > ssl_client_ca_file = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem > > ssl_dh = # hidden, use -P to show it > > ssl_key = # hidden, use -P to show it > > ssl_prefer_server_ciphers = yes > > syslog_facility = local5 > > userdb { > > ? driver = prefetch > > } > > protocol imap { > > ? imap_client_workarounds = tb-extra-mailbox-sep > > ? mail_max_userip_connections = 30 > > ? mail_plugins = mailbox_alias mail_log notify imap_sieve > > } > > protocol sieve { > > ? info_log_path = /var/log/dovecot/sieve-info.log > > ? log_path = /var/log/dovecot/sieve-err.log > > ? managesieve_implementation_string = Dovecot Pigeonhole > > ? managesieve_max_line_length = 65536 > > } >
Fred
2019-Mar-12 01:18 UTC
Sieve scripts not triggered on IMAP inbound messages using IMAPC
Stephan--
Thank you for the troubleshooting link. I've already been through that and
every other HowTo I could find. The likely underlying problem is that I'm
not using an LDA -- I'm simply using this as a proxy using IMAPC.
I can define static rules in dovecot.conf and they get triggered (e.g., when
moving a message between folders), similar to this:
imapsieve_mailbox1_name = *
imapsieve_mailbox1_causes = COPY APPEND FLAG
imapsieve_mailbox1_before file:/var/vmail/sieve/global/spam_rule.sieve
This will trigger on an existing message, such as if I manually move a
message from the inbox into trash, or mark the message as read. What I want
to have happen is for this rule (or something similar) to trigger when a
message is initially received into the inbox.
Op 08/03/2019 om 15:12 schreef Fred via dovecot:>
> Good morning.
>
> I am using Dovecot as an IMAP proxy -- using IMAPC -- and the system
> is working great. Thank you for contributing such great software to
> the community!
>
> I?m using Dovcot 2.3.5 and Pigeonhole 0.5.5.
>
> My server is located behind a content-filtering firewall that will
> mark incoming messages by adding ?[SPAM]? to the subject line. I?m
> trying to use Sieve to identify those messages and move them into the
> Spam folder. I have a basic Sieve script that looks like this:
>
> ?? require ["fileinto"];
>
> ?? if anyof (header :contains "Subject" "[SPAM]",
>
> ?? ??????????header :contains "X-Spam-Flag" "Yes")
>
> ?? {
>
> ?? ????fileinto "Spam";
>
> ?? ????stop;
>
> ?? }
>
> I can see in the logs that Sieve is loaded, and also the
> imapsieve_plugin
>
> ?? Debug: sieve: Pigeonhole version 0.5.5 (2483b085) initializing
>
> ?? Debug: sieve: Sieve imapsieve plugin for Pigeonhole version 0.5.5
> (2483b085) loaded
>
> Sieve detects outbound messages (from the log: Debug: imapsieve:
> mailbox INBOX.Sent: APPEND event) but nothing registers for inbound,
> and my spam_rule is never triggered. Any suggestions?
>
https://wiki.dovecot.org/Pigeonhole/Sieve/Troubleshooting
> Here is the output from ?Dovecot -n?:
>
> # 2.3.5 (513208660): /etc/dovecot/dovecot.conf
>
> # Pigeonhole version 0.5.5 (2483b085)
>
> # OS: Linux 3.10.0-957.5.1.el7.x86_64 x86_64 CentOS Linux release
> 7.6.1810 (Core)? xfs
>
> # Hostname: <redacted>
>
> auth_master_user_separator = *
>
> auth_mechanisms = PLAIN LOGIN
>
> auth_verbose_passwords = plain
>
> deliver_log_format = from=%{from}, envelope_sender=%{from_envelope},
> subject=%{subject}, msgid=%m, size=%{size}, %$
>
> dict {
>
> ? acl = pgsql:/etc/dovecot/dovecot-share-folder.conf
>
> ? quotadict = pgsql:/etc/dovecot/dovecot-used-quota.conf
>
> }
>
> first_valid_uid = 2000
>
> imapc_features = fetch-bodystructure fetch-headers
>
> imapc_host = <redacted>
>
> imapc_port = 993
>
> imapc_ssl = imaps
>
> imapc_ssl_verify = no
>
> last_valid_uid = 2000
>
> listen = * [::]
>
> mail_debug = yes
>
> mail_gid = 2000
>
> mail_home = /var/mail/imapc/home/%d/%n
>
> mail_location = imapc:/var/mail/imapc/%d/%n
>
> mail_plugins = mailbox_alias mail_log notify
>
> mail_uid = 2000
>
> managesieve_notify_capability = mailto
>
> managesieve_sieve_capability = fileinto reject envelope
> encoded-character vacation subaddress comparator-i;ascii-numeric
> relational regex imap4flags copy include variables body enotify
> environment mailbox date index ihave duplicate mime foreverypart
> extracttext imapsieve vnd.dovecot.imapsieve
>
> namespace inbox {
>
> ? inbox = yes
>
> ? list = yes
>
> ? location >
> ? prefix >
> ? separator = .
>
> ? type = private
>
> }
>
> passdb {
>
> ? args = host=<redacted>
>
> ? default_fields = userdb_imapc_user=%u
> userdb_imapc_password=#hidden_use-P_to_show#
>
> ? driver = imap
>
> }
>
> passdb {
>
> ? args = /etc/dovecot/dovecot-master-users
>
> ? driver = passwd-file
>
> ? master = yes
>
> }
>
> plugin {
>
> ? imapsieve_default = /var/vmail/sieve/global/spam_rule.sieve
>
> ? mail_log_events = delete undelete expunge mailbox_delete
> mailbox_rename
>
> ? mail_log_fields = uid box msgid size from subject
>
> ? mailbox_alias_new = Sent Messages
>
> ? mailbox_alias_new2 = Sent Items
>
> ? mailbox_alias_old = Sent
>
> ? mailbox_alias_old2 = Sent
>
> ? sieve_global_dir = /var/vmail/sieve/global/
>
> ? sieve_max_redirects = 30
>
> ? sieve_plugins = sieve_imapsieve
>
> ? sieve_trace_debug = yes
>
> ? sieve_trace_dir = /var/log/dovecot
>
> ? sieve_trace_level = matching
>
> }
>
> protocols = imap sieve
>
> service auth {
>
> ? unix_listener /var/spool/postfix/private/dovecot-auth {
>
> ??? group = postfix
>
> ??? mode = 0666
>
> ??? user = postfix
>
> ? }
>
> ? unix_listener auth-master {
>
> ??? group = vmail
>
> ??? mode = 0666
>
> ??? user = vmail
>
> ? }
>
> ? unix_listener auth-userdb {
>
> ??? group = vmail
>
> ??? mode = 0660
>
> ??? user = vmail
>
> ? }
>
> }
>
> service dict {
>
> ? unix_listener dict {
>
> ??? group = vmail
>
> ??? mode = 0660
>
> ??? user = vmail
>
> ? }
>
> }
>
> service imap-login {
>
> ? process_limit = 500
>
> ? service_count = 1
>
> }
>
> service lmtp {
>
> ? executable = lmtp -L
>
> ? inet_listener lmtp {
>
> ??? address = 127.0.0.1
>
> ??? port = 24
>
> ? }
>
> ? process_min_avail = 5
>
> ? unix_listener /var/spool/postfix/private/dovecot-lmtp {
>
> ??? group = postfix
>
> ??? mode = 0600
>
> ??? user = postfix
>
> ? }
>
> ? user = vmail
>
> }
>
> service managesieve-login {
>
> ? inet_listener sieve {
>
> ??? address = 127.0.0.1
>
> ??? port = 4190
>
> ? }
>
> }
>
> ssl = required
>
> ssl_cert = </etc/letsencrypt/live/mgrids.dynu.com/fullchain.pem
>
> ssl_cipher_list >
ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3D
> ECDH+ES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5
>
> ssl_client_ca_file = /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
>
> ssl_dh = # hidden, use -P to show it
>
> ssl_key = # hidden, use -P to show it
>
> ssl_prefer_server_ciphers = yes
>
> syslog_facility = local5
>
> userdb {
>
> ? driver = prefetch
>
> }
>
> protocol imap {
>
> ? imap_client_workarounds = tb-extra-mailbox-sep
>
> ? mail_max_userip_connections = 30
>
> ? mail_plugins = mailbox_alias mail_log notify imap_sieve
>
> }
>
> protocol sieve {
>
> ? info_log_path = /var/log/dovecot/sieve-info.log
>
> ? log_path = /var/log/dovecot/sieve-err.log
>
> ? managesieve_implementation_string = Dovecot Pigeonhole
>
> ? managesieve_max_line_length = 65536
>
> }
>