Hi everybody,
I am trying to move incoming mails into subfolders with this sieve script:
require ["fileinto", "variables", "mailbox"];
if header :matches "Delivered-To" "*@*"
{
 ??? fileinto :create "INBOX/${2}";
}
On a message to user at example.com I would expect it to be stored in the 
folder 'example.com' under 'INBOX', but instead a folder named 
'INBOX\2fexample.com' is created.
I tried several options:
- replace / with \/ or \\/
- replace / with .
- disable listescape in dovecot.conf
Unfortunately nothing did the trick. Any ideas what could fix this?
dovecot -n
# 2.3.13 (89f716dc2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.13 (cdd19fe3)
# OS: Linux 5.10.0-9-amd64 x86_64 Debian 11.1
# Hostname: servers.example.com
auth_default_realm = EXAMPLE.COM
auth_gssapi_hostname = servers.example.com
auth_krb5_keytab = /etc/keytab/dovecot.keytab
auth_master_user_separator = *
auth_mechanisms = gssapi gss-spnego plain
auth_realms = EXAMPLE.COM
first_valid_gid = 986
first_valid_uid = 990
imap_client_workarounds = tb-extra-mailbox-sep
login_greeting = Dovecot ready.
mail_debug = yes
mail_gid = 986
mail_location = 
maildir:%h/%d/%n/store:LAYOUT=fs:FULLDIRNAME=0_FolderContent:UTF-8:INDEX=%h/%d/%n/index:CONTROL=%h/%d/%n/control:VOLATILEDIR=%h/%d/%n/volatile
mail_plugins = zlib notify push_notification listescape acl
mail_privileged_group = mail
mail_shared_explicit_inbox = yes
mail_uid = 990
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 vacation-seconds spamtest imapflags notify imapsieve 
vnd.dovecot.imapsieve
namespace inbox {
 ? inbox = yes
 ? list = yes
 ? mailbox Drafts {
 ??? auto = subscribe
 ??? special_use = \Drafts
 ? }
 ? mailbox Inbox {
 ??? auto = subscribe
 ? }
 ? mailbox Junk {
 ??? auto = subscribe
 ??? special_use = \Junk
 ? }
 ? mailbox Sent {
 ??? auto = subscribe
 ??? special_use = \Sent
 ? }
 ? mailbox Trash {
 ??? auto = subscribe
 ??? special_use = \Trash
 ? }
 ? prefix  ? separator = ~
 ? subscriptions = yes
 ? type = private
}
passdb {
 ? args = username_format=%u /etc/dovecot/master-users
 ? driver = passwd-file
 ? master = yes
}
passdb {
 ? args = /etc/dovecot/ldap_user_to_principal.conf.ext
 ? driver = ldap
 ? pass = yes
}
passdb {
 ? driver = pam
}
plugin {
 ? acl = vfile:/var/lib/dovecot/global-acls:cache_secs=1
 ? acl_shared_dict = file:/var/lib/dovecot/shared-mailboxes
 ? autocreate = Trash
 ? autocreate2 = Drafts
 ? autocreate3 = Sent
 ? autosubscribe = Trash
 ? autosubscribe2 = Drafts
 ? autosubscribe3 = Sent
 ? imapsieve_mailbox1_before = 
file:/var/lib/dovecot/sieve/imap/learn-spam.sieve
 ? imapsieve_mailbox1_causes = COPY
 ? imapsieve_mailbox1_name = Junk
 ? imapsieve_mailbox2_before = 
file:/var/lib/dovecot/sieve/imap/learn-ham.sieve
 ? imapsieve_mailbox2_causes = COPY
 ? imapsieve_mailbox2_from = Junk
 ? imapsieve_mailbox2_name = *
 ? listescape_char = \
 ? sieve = file:%h/%d/%n/sieve/sieve;active=%h/%d/%n/sieve/active.sieve
 ? sieve_after = /var/lib/dovecot/sieve/after
 ? sieve_before = /var/lib/dovecot/sieve/before
 ? sieve_default = /var/lib/dovecot/sieve/default.sieve
 ? sieve_extensions = +vacation-seconds +reject +notify +imapflags +spamtest
 ? sieve_global_extensions = +vnd.dovecot.pipe
 ? sieve_pipe_bin_dir = /var/lib/dovecot/sieve/bin
 ? sieve_plugins = sieve_imapsieve sieve_extprograms
 ? sieve_vacation_default_period = 1d
 ? sieve_vacation_max_period = 1d
 ? sieve_vacation_min_period = 10s
 ? sieve_vacation_use_original_recipient = yes
}
postmaster_address = sysadmin at cvanvloten.nl
protocols = " imap lmtp sieve submission"
service auth {
 ? unix_listener /var/spool/postfix/private/auth {
 ??? group = postfix
 ??? mode = 0660
 ??? user = postfix
 ? }
}
service imap-login {
 ? inet_listener imap {
 ??? port = 0
 ? }
 ? inet_listener imaps {
 ??? port = 993
 ??? ssl = yes
 ? }
 ? process_min_avail = 1
}
service imap {
 ? executable = imap
}
service lmtp {
 ? unix_listener /var/spool/postfix/private/dovecot-lmtp {
 ??? group = postfix
 ??? mode = 0600
 ??? user = postfix
 ? }
}
service submission-login {
 ? inet_listener submission {
 ??? port = 465
 ??? ssl = yes
 ? }
}
ssl = required
ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_cipher_list = EECDH+AESGCM:EDH+AESGCM
ssl_client_ca_dir = /etc/ssl/certs
ssl_curve_list = X25519:secp521r1:secp384r1:prime256v1
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_min_protocol = TLSv1.2
submission_client_workarounds = whitespace-before-path
submission_relay_host = server.example.com
submission_relay_password = # hidden, use -P to show it
submission_relay_ssl = smtps
submission_relay_user = dovecot at server
userdb {
 ? args = /etc/dovecot/ldap_list_users.conf.ext
 ? driver = ldap
 ? result_success = continue
}
userdb {
 ? args = /etc/dovecot/ldap_user_domain.conf.ext
 ? driver = ldap
 ? result_success = continue
}
userdb {
 ? args = uid=vmail gid=vmail home=/srv/mail/vmail allow_all_users=yes
 ? driver = static
}
protocol lmtp {
 ? mail_plugins = zlib notify push_notification listescape acl sieve
}
protocol imap {
 ? mail_max_userip_connections = 50
 ? mail_plugins = zlib notify push_notification listescape acl imap_acl 
imap_sieve
}
- Kees