Sieve filter doesn't respect mailbox separator

Konstantinos Tsakiltzidis
2018-03-02T16:10:43Z

namespace separator is '.',
this sieve script incorrectly tries to put the mail inside a mailbox
rather that beside it, for example if the mailbox is named
'example', the mail will be put in the path 'example/.Spam'
instead of 'example.Spam'

require ["fileinto"];
if header :contains "X-Spam" "yes" {
 ? fileinto "Spam";
}



# 2.2.33.2 (d6601f4ec): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.21 (92477967)
# OS: Linux 4.9.0-6-amd64 x86_64 Debian 9.1 ext4
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
mail_debug = yes
mail_location = maildir:/var/vmail/%d/%n
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
namespace inbox {
 ? inbox = yes
 ? location  ? mailbox Drafts {
 ??? special_use = \Drafts
 ? }
 ? mailbox Junk {
 ??? special_use = \Junk
 ? }
 ? mailbox Sent {
 ??? special_use = \Sent
 ? }
 ? mailbox "Sent Messages" {
 ??? special_use = \Sent
 ? }
 ? mailbox Trash {
 ??? special_use = \Trash
 ? }
 ? prefix  ? separator = .
 ? subscriptions = yes
 ? type = private
}
namespace modulus {
 ? list = children
 ? location = maildir:/var/vmail/%d/Public:INDEXPVT=~/public/indexes
 ? mailbox admin {
 ??? auto = subscribe
 ? }
 ? mailbox support {
 ??? auto = subscribe
 ? }
 ? mailbox telecoms {
 ??? auto = subscribe
 ? }
 ? prefix = Public.
 ? separator = .
 ? subscriptions = yes
 ? type = public
}
passdb {
 ? driver = pam
}
plugin {
 ? acl = vfile
 ? mail_log_events = flag_change
 ? mail_log_fields = box flags uid
 ? sieve = ~/dovecot.sieve
 ? sieve_before = /var/vmail/global.sieve
 ? sieve_dir = ~/sieve
 ? sieve_global_dir = /var/vmail/sieve
}
protocols = " imap lmtp sieve lmtp"
service auth {
 ? unix_listener /var/spool/postfix/private/auth {
 ??? group = mail
 ??? mode = 0666
 ??? user = postfix
 ? }
 ? unix_listener auth-userdb {
 ??? group = mail
 ??? mode = 0666
 ??? user = vmail
 ? }
}
service imap-login {
 ? inet_listener imap {
 ??? port = 0
 ? }
}
service lmtp {
 ? unix_listener /var/spool/postfix/private/dovecot-lmtp {
 ??? group = postfix
 ??? mode = 0600
 ??? user = postfix
 ? }
}
service managesieve-login {
 ? inet_listener sieve {
 ??? port = 4190
 ? }
 ? process_min_avail = 0
 ? service_count = 1
 ? vsz_limit = 64 M
}
service managesieve {
 ? process_limit = 1024
}
ssl = required
ssl_cert = </etc/ssl/certs/mail.crt
ssl_key =? # hidden, use -P to show it
userdb {
 ? driver = passwd
}
protocol imap {
 ? mail_max_userip_connections = 20
 ? mail_plugins = " mail_log notify acl"
 ? passdb {
 ??? args = /etc/dovecot/dovecot-ldap-users.conf.ext
 ??? driver = ldap
 ??? name  ? }
 ? userdb {
 ??? args = uid=vmail gid=mail home=/var/vmail/%d/%n
 ??? driver = static
 ??? name  ? }
}
protocol lda {
 ? mail_plugins = " sieve acl"
 ? userdb {
 ??? args = /etc/dovecot/dovecot-ldap-users.conf.ext
 ??? driver = ldap
 ??? name  ??? override_fields = uid=vmail gid=mail home=/var/vmail/%d/%n
 ? }
 ? userdb {
 ??? args = /etc/dovecot/dovecot-ldap-groups.conf.ext
 ??? driver = ldap
 ??? name  ??? override_fields = uid=vmail gid=mail
home=/var/vmail/%d/Public/.%n
mail=maildir:/var/vmail/%d/Public/.%n
 ? }
}
protocol lmtp {
 ? mail_plugins = " sieve acl"
 ? postmaster_address = postmaster at modulus.gr
 ? userdb {
 ??? args = /etc/dovecot/dovecot-ldap-users.conf.ext
 ??? driver = ldap
 ??? name  ??? override_fields = uid=vmail gid=mail home=/var/vmail/%d/%n
 ? }
 ? userdb {
 ??? args = /etc/dovecot/dovecot-ldap-groups.conf.ext
 ??? driver = ldap
 ??? name  ??? override_fields = uid=vmail gid=mail
home=/var/vmail/%d/Public/.%n
mail=maildir:/var/vmail/%d/Public/.%n
 ? }
}
protocol doveadm {
 ? userdb {
 ??? args = /etc/dovecot/dovecot-ldap-users.conf.ext
 ??? driver = ldap
 ??? name  ??? override_fields = uid=vmail gid=mail home=/var/vmail/%d/%n
 ? }
 ? userdb {
 ??? args = /etc/dovecot/dovecot-ldap-groups.conf.ext
 ??? driver = ldap
 ??? name  ??? override_fields = uid=vmail gid=mail
home=/var/vmail/%d/Public/.%n
mail=maildir:/var/vmail/%d/Public/.%n
 ? }
}
protocol sieve {
 ? mail_max_userip_connections = 10
 ? managesieve_implementation_string = Dovecot Pigeonhole
 ? managesieve_logout_format = bytes=%i/%o
 ? managesieve_max_line_length = 65536
 ? passdb {
 ??? args = /etc/dovecot/dovecot-ldap-users.conf.ext
 ??? driver = ldap
 ??? name  ? }
 ? userdb {
 ??? args = uid=vmail gid=mail home=/var/vmail/%d/%n
 ??? driver = static
 ??? name  ? }
}