Dovecot Version:
2.3.17 (8414c38c5c)
Dear,
Some troubles occur while we delete a folder via IMAP ssl command or via a IMAP client (different clients tested).
When we want to delete subfolder we observe following issues.
some examples following:
we created a folder with subfolders x/y/z
<IMAP command create>
a02 CREATE x.y.z
a02 OK Create completed (0.003 + 0.000 + 0.002 secs).
<IMAP command create>
<doveadm mailbox list -u "u...@domain.tld">
====response from dovecot cli====
x
x.y
x.y.z
then we try to delete the z subfolder of x
<IMAP command delete>
a04 DELETE x.y.z
a05 OK Delete completed (0.002 + 0.000 + 0.001 secs).
<IMAP command delete>
The IMAP console returns success and the dovecot listing is ok
<doveadm mailbox list -u "u...@domain.tld">
====response from dovecot cli =====
x
x.y
But dovecot status on x.y returns the folder is not existent
<doveadm mailbox status -u "u...@domain.tld" -t vsize 'x.y'>
====response from dovecot cli=====
doveadm(u...@domain.tld): Error: remote(192.168.1.1:24245): Mailbox x.y: Failed to lookup mailbox status: Mailbox doesn't exist: x.y
vsize=0
This lead that physically the folder and sub folders are still in our storage but can not be accessed by the dovecot service.
========
We could bypass this phenomena by recreating this x.y folder and then delete the y folder again with IMAP.
<IMAP COMMAND recreate>
a04 CREATE x.y
a05 OK Create completed (0.002 + 0.000 + 0.001 secs).
<IMAP COMMAND recreate>
and status shows the folder exists
<doveadm mailbox status -u "u...@domain.tld" -t vsize 'x.y'>
====response from dovecot cli =>====
vsize=0
Then we retry deleting the y folder from x
<IMAP command delete x.y>
a08 DELETE x.y
a08 OK Delete completed (0.002 + 0.000 + 0.001 secs).
<IMAP command delete x.y>
status still not correct for the top folder
<doveadm mailbox status -u "u...@domain.tld" -t vsize 'x'>
====response from dovecot cli =====
doveadm(u...@domain.tld): Error: remote(192.168.1.1:24245): Mailbox x: Failed to lookup mailbox status: Mailbox doesn't exist: x
vsize=0
But this time without recreating the x folder, the delete command is working
<IMAP DELETE main folder x>
a10 DELETE x
a10 OK Delete completed (0.001 + 0.000 secs).
<IMAP DELETE main folder x>
the dovecot command shows no x folder anymore as wanted
<doveadm mailbox list -u "u...@domain.tld">
====response from dovecot cli =====
a
a.b
a.b.c
No x folder appear in the listing
Is this a Dovecot problem ? our did it not be engineered for deleting top folder by IMAP?
Thanks in advance
Kind Regards
Pascal
DOVECOT CONF ======================== # 2.3.17 (8414c38c5c): /etc/dovecot/dovecot.conf # Pigeonhole version 0.5.17 (44945af4) # OS: Linux 5.13.0-27-generic x86_64 Ubuntu 20.04.3 LTS # Hostname: mailserver.domain.tld auth_mechanisms = plain login auth_verbose = yes default_process_limit = 250 director_mail_servers = 192.168.1.1@shard1 192.168.1.2@shard1 192.168.1.3@shard2 192.168.1.4@shard2 192.168.1.5@shard3 192.168.1.6@shard3 192.168.1.7@shard4 192.168.1.8@shard4 director_servers = 192.168.1.9 192.168.1.10 192.168.1.11 disable_plaintext_auth = no doveadm_api_key = # hidden, use -P to show it doveadm_password = # hidden, use -P to show it doveadm_port = 24245 imap_logout_format = in=%i out=%o deleted=%{deleted} expunged=%{expunged} trashed=%{trashed} lmtp_proxy = yes mail_location = mbox:~/mail:INBOX=/var/mail/%u mail_plugins = " quota" 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 metric auth_success { filter = (event=auth_request_finished AND success=yes) } metric client_connections { filter = event=client_connection_finished } metric imap_command { filter = event=imap_command_finished group_by = cmd_name tagged_reply_state } metric mail_delivery { filter = event=mail_delivery_finished group_by = duration:exponential:1:5:10 } 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 = } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } plugin { sieve = file:~/sieve;active=~/.dovecot.sieve } pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s, deleted_bytes=%{deleted_bytes} postmaster_address = postmas...@domain.tld protocols = imap pop3 lmtp sieve service anvil { client_limit = 1003 } service auth { client_limit = 1500 unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } } service director { fifo_listener login/proxy-notify { mode = 0666 } inet_listener { address = 192.168.1.10 port = 9090 } unix_listener director-userdb { mode = 0600 } unix_listener login/director { mode = 0666 } } service doveadm { inet_listener { address = 192.168.1.10 port = 24245 } inet_listener http { address = 192.168.1.10 port = 8080 } } service imap-login { executable = imap-login director inet_listener imap { port = 143 } inet_listener imaps { port = 993 } process_min_avail = 8 service_count = 0 vsz_limit = 256 M } service imap { process_limit = 1024 } service ipc { unix_listener ipc { user = dovecot } } service lmtp { inet_listener lmtp { address = 192.168.1.10 port = 24 } vsz_limit = 384 M } service managesieve-login { executable = managesieve-login director inet_listener sieve { port = 4190 } } service pop3-login { executable = pop3-login director inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 } process_min_avail = 8 service_count = 0 vsz_limit = 256 M } service stats { inet_listener http { address = 192.168.1.10 port = 9900 } } ssl_cert = </etc/ssl/certs/cert.crt ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl_client_ca_dir = /etc/ssl/certs ssl_dh = # hidden, use -P to show it ssl_key = # hidden, use -P to show it userdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } verbose_proctitle = yes protocol lmtp { auth_socket_path = director-userdb } protocol doveadm { auth_socket_path = director-userdb } protocol imap { mail_max_userip_connections = 20 } protocol sieve { mail_max_userip_connections = 10 } protocol pop3 { mail_max_userip_connections = 10 }