Dovecot 2.3.13 virtual mailboxes subscription problem

Slavko linux at slavino.sk
Sun Apr 3 13:12:46 UTC 2022


Hi,

by discussion on IRC channel is post details here.


I am using virtual plugin in dovecot 2.3.13 and i have porblems with
subsription to these virtual mailboxes. I can setup autosubscribe to
them and it works as expected. I can SUBSCRIBE to them, dovecot returns
OK and they are added in subscriptions file, but then they are not
shown in LSUB output. I can UNSUBSCRIBE from subscribed virtual
mailbox (dovecot returns OK), but it is not removed from subscriptions
file and remains there...

I bother with this for long time. I tried to setup mailboxes without
UTF-8 chars, but that doesn't matter nad currently problematic mailbox
has not any nonASCII char (Virtual.Dnes). I tried to define mailboxes
in parent namespace too, doesn't help, nor defining only Virtual in
parent namespace (with and without separator at end). Some evidence
follows.

The (my) subscriptions file (the Virtual.Dnes is at end):

---------------------------------------------------------
V	2

<snip>
Virtual	Dnes
---------------------------------------------------------

IMAP LIST (only Virtual namespace), as shown by dovecot's imap command:

---------------------------------------------------------
* PREAUTH [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE
  SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT
  MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS
  LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES
  WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY
  PREVIEW=FUZZY STATUS=SIZE SAVEDATE LITERAL+ NOTIFY METADATA
  SPECIAL-USE QUOTA ACL RIGHTS=texk] Logged in as slavko at slavino.sk
<snip>
* LIST (\Noselect \HasChildren) "." Virtual
* LIST (\HasNoChildren) "." Virtual.Dnes
* LIST (\HasNoChildren) "." Virtual.D&APQ-le&AX4-it&AOk-
* LIST (\HasNoChildren) "." Virtual.Pr&AO0-lohy
* LIST (\Noselect \HasChildren) "." Verejn&AOk-
* LIST (\HasNoChildren \UnMarked) "." Verejn&AOk-.Novinky
. OK List completed (0.004 + 0.000 + 0.003 secs).
---------------------------------------------------------

One can see that there are three virtual mailboxes, the Virtual.Dnes,
the Virtual.Dôležité (encoded) and the Virtual.Prílohy (encoded too),
including Virtual namespace.

IMAP LSUB output (again only Virtual namespace):

---------------------------------------------------------
* PREAUTH [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE
  SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT
  MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS
  LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES
  WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY
  PREVIEW=FUZZY STATUS=SIZE SAVEDATE LITERAL+ NOTIFY METADATA
  SPECIAL-USE QUOTA ACL RIGHTS=texk] Logged in as slavko at slavino.sk
  <snip>
* LSUB () "." Virtual.D&APQ-le&AX4-it&AOk-
* LSUB () "." Virtual.Pr&AO0-lohy
a OK Lsub completed (0.001 + 0.000 secs).
---------------------------------------------------------

As one can see, there are only auto-subscribed Virtual mailboxes, the
Virtual.Dnes is missing, despite that it is in subscriptions file.

The doveconf -n output (can be wrapped):

---------------------------------------------------------
# 2.3.13 (89f716dc2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.13 (cdd19fe3)
# OS: Linux 4.19.0-20-amd64 x86_64 Debian 10.12 
# Hostname: servac.skk
auth_default_realm = slavino.sk
auth_mechanisms = plain login
auth_policy_check_after_auth = no
auth_policy_hash_nonce = # hidden, use -P to show it
auth_policy_server_timeout_msecs = 5500
auth_policy_server_url = http://127.0.0.1:9090/
auth_verbose = yes
first_valid_uid = 130
imap_idle_notify_interval = 15 mins
imap_logout_format = in=%i out=%o deleted=%{deleted}
expunged=%{expunged} trashed=%{trashed} hdr_count=%{fetch_hdr_count}
hdr_bytes=%{fetch_hdr_bytes} body_count=%{fetch_body_count}
body_bytes=%{fetch_body_bytes} autoexp=%{autoexpunged} last_valid_uid =
130 lda_original_recipient_header = Envelope-to
lmtp_add_received_header = no lmtp_hdr_delivery_address = none
lmtp_rcpt_check_quota = yes lmtp_save_to_detail_mailbox = yes
login_trusted_networks = 127.0.0.1 ::1
mail_attachment_detection_options = add-flags no-flags-on-fetch
exclude-inlined content-type=!application/*-signature
content-type=!application/pgp-keys mail_attribute_dict =
file:%h/dovecot-attributes mail_home = /srv/vmail/%Ln mail_location =
maildir:~/Maildir mail_plugins = " acl fts fts_xapian notify quota
virtual quota_clone" mail_privileged_group = mail
mail_server_admin = mailto:postmaster at slavino.sk
mail_vsize_bg_after_count = 100
mailbox_list_index_very_dirty_syncs = yes
maildir_very_dirty_syncs = yes
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 vnd.dovecot.report imapsieve vnd.dovecot.imapsieve metric
imap_cmd { fields = bytes_in bytes_out filter =
event=imap_command_finished } metric imap_cmdbad { filter =
event=imap_command_finished AND tagged_reply_state=BAD }
metric imap_cmdno {
  filter = event=imap_command_finished AND tagged_reply_state=NO
}
metric imap_cmdok {
  filter = event=imap_command_finished AND tagged_reply_state=OK
}
metric mail_deliv {
  fields = message_size
  filter = event=mail_delivery_finished
}
metric push_notif {
  filter = event=push_notification_finished
}
metric sieve_actions {
  filter = event=sieve_action_finished
}
metric sieve_scrrun {
  filter = event=sieve_runtime_script_finished
}
namespace Virtual {
  list = yes
  location = virtual:/usr/local/etc/vmail/virtual:INDEX=~/virtual:UTF-8
  mailbox Dôležité {
    auto = subscribe
  }
  mailbox Dnes {
    auto = no
  }
  mailbox Prílohy {
    auto = subscribe
  }
  prefix = Virtual.
  separator = .
  subscriptions = no
}
namespace inbox {
  inbox = yes
  location = 
  mailbox Archive {
    auto = create
    special_use = \Archive
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  mailbox Verejné.Novinky {
    auto = subscribe
  }
  prefix = 
  separator = .
}
namespace pub {
  ignore_on_failure = yes
  location = maildir:/srv/vmail-public:INDEXPVT=~/public:UTF-8
  prefix = Verejné.
  separator = .
  subscriptions = no
  type = public
}
namespace share {
  list = children
  location = maildir:%%h/Maildir:INDEXPVT=~/shared/%%u
  prefix = Zdieľané.%%u.
  separator = .
  subscriptions = no
  type = shared
}
passdb {
  args = username_format=%Ln /usr/local/etc/vmail/passwd.%{if;%Ls;eq;smtp;%Ls;empty}
  auth_verbose = no
  driver = passwd-file
}
passdb {
  args = username_format=%Ln scheme=ssha256 /usr/local/etc/vmail/passwd
  driver = passwd-file
}
plugin {
  acl = vfile:/etc/dovecot/dovecot-acl
  acl_shared_dict = file:/usr/local/etc/vmail/shared/shared-mailboxes.db
  fts = xapian
  fts_autoindex = yes
  fts_autoindex_exclude = \Junk
  fts_autoindex_exclude2 = \Trash
  fts_autoindex_exclude3 = \Drafts
  fts_autoindex_exclude4 = Junk
  fts_autoindex_exclude5 = Trash
  fts_autoindex_exclude6 = Drafts
  fts_autoindex_exclude7 = Sent
  fts_autoindex_exclude8 = Verejné.*
  fts_autoindex_exclude9 = Virtual.*
  fts_autoindex_max_recent_msgs = 99
  fts_decoder = decode2text
  fts_enforced = yes
  fts_index_timeout = 90s
  fts_xapian = partial=2 full=20 attachments=1 verbose=0
  imapsieve_mailbox1_before = file:/usr/local/etc/vmail/sieve/imap/trash-seen.sieve
  imapsieve_mailbox1_causes = COPY APPEND
  imapsieve_mailbox1_name = Trash
  imapsieve_mailbox2_before = file:/usr/local/etc/vmail/sieve/imap/report-spam.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_name = Junk
  imapsieve_mailbox3_before = file:/usr/local/etc/vmail/sieve/imap/report-ham.sieve
  imapsieve_mailbox3_causes = COPY
  imapsieve_mailbox3_from = Junk
  imapsieve_mailbox3_name = * mail_log_cached_only = yes
  mail_log_events = delete undelete expunge copy mailbox_delete
  mailbox_rename append mail_log_fields = uid box msgid size quota =
  count:User quota quota_clone_dict =
  redis:host=127.0.0.1:port=6379:prefix=dovec/:expire_secs=2592000
  quota_exceeded_message = Mailbox is full quota_grace = 50M
  quota_max_mail_size = 50M quota_rule = *:storage=3G
  quota_rule2 = Trash:storage=+50M
  quota_rule3 = Junk:storage=+100M
  quota_rule4 = Sent:storage=+100M
  quota_vsizes = true
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_before = /usr/local/etc/vmail/sieve/before.d/spam-move.sieve
  sieve_global_extensions = +vnd.dovecot.filter +vnd.dovecot.execute
  sieve_implicit_extensions = +vnd.dovecot.report
  sieve_max_redirects = 0
  sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = " imap lmtp sieve pop3"
quota_full_tempfail = yes
service anvil {
  unix_listener anvil {
    group = $default_internal_group
    mode = 0660
  }
}
service auth {
  unix_listener auth-client {
    mode = 0666
  }
}
service decode2text {
  executable = script /usr/lib/dovecot/decode2text.sh
  unix_listener decode2text {
    group = vmail
    mode = 0660
  }
  user = vmail
}
service imap-login {
  inet_listener imap {
    address = 127.0.0.1 ::1
  }
  process_min_avail = 2
  service_count = 100
  unix_listener imap {
    group = www-data
    mode = 0660
  }
}
service indexer-worker {
  vsz_limit = 2 G
}
service lmtp {
  executable = lmtp -L
  inet_listener lmtp {
    address = 127.0.0.1 ::1
    port = 24
  }
  unix_listener lmtp {
    group = Debian-exim
    mode = 0660
  }
  user = vmail
}
service managesieve-login {
  service_count = 100
  vsz_limit = 64 M
}
service managesieve {
  process_limit = 256
}
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  service_count = 100
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  unix_listener quota-status {
    group = Debian-exim
    mode = 0660
  }
}
service stats {
  unix_listener stats-reader {
    group = $default_internal_group
    mode = 0660
  }
}
ssl_cert = </etc/letsencrypt/live/slavino.sk/fullchain.pem
ssl_cipher_list = HIGH:!kRSA:!SRP:!PSK:!DH:!eNULL:!aNULL:!SHA1:!CAMELLIA:+AESGCM:+AES256:+SHA256:+SHA384:+AES128:+AES256
ssl_client_ca_dir = /etc/ssl/certs ssl_key = # hidden, use -P to show it
ssl_min_protocol = TLSv1.2
ssl_prefer_server_ciphers = yes
submission_host = 127.0.0.1:25
userdb {
  args = username_format=%Ln /usr/local/etc/vmail/passwd
  default_fields = uid=vmail gid=vmail
  driver = passwd-file
}
verbose_proctitle = yes
protocol lmtp {
  info_log_path = /var/log/dovecot/lmtp.log
  log_path = /var/log/dovecot/lmtp-errors.log
  mail_plugins = " acl fts fts_xapian notify quota virtual quota_clone push_notification sieve"
}
protocol imap {
  imap_metadata = yes
  mail_plugins = " acl fts fts_xapian notify quota virtual quota_clone
imap_quota imap_sieve imap_acl" namespace inbox {
    location = 
    mailbox Drafts {
      autoexpunge = 4 weeks
    }
    mailbox Junk {
      autoexpunge = 2 weeks
    }
    mailbox Sent {
      autoexpunge = 60 days
    }
    mailbox Trash {
      autoexpunge = 4 weeks
      autoexpunge_max_mails = 1000
    }
    prefix = 
  }
}
protocol sieve {
  managesieve_implementation_string = Dovecot Pigeonhole
}
protocol pop3 {
  mail_plugins = " acl fts fts_xapian notify quota virtual quota_clone"
}
local_name servac.slavino.org {
  ssl_cert = </etc/letsencrypt/live/slavino.org/fullchain.pem
  ssl_key = # hidden, use -P to show it
}
local_name servac.skk {
  ssl_cert = </etc/dovecot/private/servac.pem
  ssl_key = # hidden, use -P to show it
}
---------------------------------------------------------

If you need something more, be free to contact me...

regards

-- 
Slavko
https://www.slavino.sk
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: Digit��lny podpis OpenPGP
URL: <https://dovecot.org/pipermail/dovecot/attachments/20220403/065fc98d/attachment.sig>


More information about the dovecot mailing list