Looks like this happens when you use a combination of FULLDIRNAME and INDEX in mail_location. Without one of these, or using DIRNAME instead of FULLDIRNAME it works correctly. Tracking internally in DOP-1348.
> On 6 Aug 2019, at 14.22, Aleksandr via dovecot <dovecot@dovecot.org> wrote: > > Hi guys. > > Does anyone have problems with a similar configuration (mdbox)? > > Just tested with latest version (stage servers installation: dovecot 2.3.7), > also affected. > > Not critical, but have complaints from users, 1-2 per month. > > > 26.06.2019 12:05, Aleksandr пишет: >> Copying or moving with email client: thunderbird, roundcube (webmail), mutt >> or any other email client via imap protocol. >> >> 25.06.2019 22:10, Germán Herrera пишет: >>> Are you copying/moving the emails with {cp|mv} or with "doveadm >>> {copy|move}"? >>> >>> On 2019-06-25 12:00, Aleksandr via dovecot wrote: >>>> Hello, >>>> >>>> I have strange problem with "losing" emails after rename mail >>>> folder(s) (via imap client: thunderbird, roundcude, etc..) >>>> >>>> How to reproduce: >>>> >>>> 1. Create some folder name, like TEST >>>> 2. Create sub-folder under TEST (like SUBTEST) >>>> >>>> Structure: >>>> >>>> TEST >>>> |--SUBTEST >>>> >>>> >>>> # doveadm mailbox list -u postmaster@testmailbox >>>> Spam >>>> Trash >>>> Sent >>>> Drafts >>>> INBOX >>>> TEST >>>> TEST/SUBTEST >>>> >>>> 3. Move (or copy) mails from INBOX to SUBTEST (all looks fine, and >>>> mails visible under SUBTEST) >>>> 4. Rename TEST folder to any new name, NEWTEST >>>> >>>> Let`s try to view mails in mail client in NEWTEST-SUBTEST, folder have >>>> no emails :( >>>> >>>> >>>> mailsrv# doveadm -f table mailbox status -u postmaster@testmailbox >>>> "messages vsize" NEWTEST* >>>> mailbox messages vsize >>>> NEWTEST 0 0 >>>> NEWTEST/SUBTEST 0 0 >>>> >>>> If doveadm force-resync postmaster@testmailbox, mails will be visible in >>>> INBOX >>>> >>>> mailsrv# doveadm -f table mailbox status -u postmaster@testmailbox >>>> "messages vsize" INBOX* >>>> mailbox messages vsize >>>> INBOX 2 28 >>>> >>>> Dovecot installation: CentOS x86_64 Linux 7.5.1804 >>>> >>>> Storage: HDD Local Partition - XFS filesystem / multi-dbox (mdbox) as >>>> mail_storage (this problem is not reproduced with the settings as >>>> Maildir storage !) >>>> somthing wrong with mapping indices. >>>> >>>> >>>> ---- [start] ---- >>>> >>>> # dovecot -n >>>> >>>> # 2.2.36 (1f10bfa63): /etc/dovecot/dovecot.conf >>>> # Pigeonhole version 0.4.21 (92477967) >>>> # OS: Linux 3.10.0-862.2.3.el7.x86_64 x86_64 CentOS Linux release >>>> 7.5.1804 (Core) >>>> # Hostname: xxxx >>>> auth_mechanisms = plain login digest-md5 cram-md5 >>>> base_dir = /var/run/dovecot/ >>>> default_client_limit = 20000 >>>> default_login_user = dovecot >>>> default_process_limit = 10000 >>>> dict { >>>> quota = redis:host=127.0.0.1:prefix=user/:timeout_msecs=1000 >>>> } >>>> disable_plaintext_auth = no >>>> first_valid_gid = 90 >>>> first_valid_uid = 90 >>>> imapc_features = rfc822.size fetch-headers >>>> imapc_host = xxxx >>>> imapc_user = %u >>>> lda_mailbox_autocreate = yes >>>> lda_mailbox_autosubscribe = yes >>>> login_greeting = xxxx. >>>> login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c >>>> login_trusted_networks = 10.0.1.0/24 >>>> mail_access_groups = mail >>>> mail_debug = yes >>>> mail_fsync = never >>>> mail_gid = 97 >>>> mail_location = >>>> mdbox:~/mail/mailboxes:FULLDIRNAME=mBoX-MeSsAgEs:INDEX=~/mail/index:CONTROL=~/mail/control:INBOX=~/mail/mailboxes/inbox >>>> mail_log_prefix = "%{session} %Us(%u): " >>>> mail_max_lock_timeout = 30 secs >>>> mail_plugins = quota zlib >>>> mail_prefetch_count = 20 >>>> mail_privileged_group = mail >>>> mail_uid = 97 >>>> managesieve_notify_capability = mailto >>>> managesieve_sieve_capability = fileinto reject envelope >>>> encoded-character vacation subaddress comparator-i;ascii-numeric >>>> relational regex imap4flags copy include variables enotify environment >>>> mailbox date index ihave duplicate mime foreverypart extracttext >>>> vacation-seconds editheader >>>> mbox_lock_timeout = 30 secs >>>> mbox_very_dirty_syncs = yes >>>> mbox_write_locks = fcntl >>>> namespace inbox { >>>> inbox = yes >>>> list = yes >>>> location = >>>> mailbox Drafts { >>>> auto = subscribe >>>> special_use = \Drafts >>>> } >>>> mailbox Sent { >>>> auto = subscribe >>>> special_use = \Sent >>>> } >>>> mailbox Spam { >>>> auto = subscribe >>>> } >>>> mailbox Trash { >>>> auto = subscribe >>>> special_use = \Trash >>>> } >>>> prefix = >>>> separator = / >>>> type = private >>>> } >>>> passdb { >>>> args = /etc/dovecot/dovecot-ldap.conf >>>> driver = ldap >>>> } >>>> plugin { >>>> cgroup_basedir = /usr/sys/cgroup >>>> hostingAccount = default >>>> quota = dict:User quota::proxy::quota >>>> quota_grace = 0%% >>>> quota_over_flag_value = TRUE >>>> quota_over_script = account-quota mismatch %u >>>> quota_rule = *:storage=4T >>>> quota_warning = storage=101%% account-quota block %u >>>> quota_warning1 = -storage=100%% account-quota unblock %u >>>> sieve = file:~/sieve;active=~/.dovecot.sieve >>>> sieve_before = /home/sieve/%d/ >>>> sieve_extensions = +editheader +vacation-seconds -body >>>> sieve_max_redirects = 200 >>>> sieve_vacation_min_period = 1s >>>> trash_folder = Trash >>>> zlib_save = lz4 >>>> zlib_save_level = 6 >>>> } >>>> pop3_delete_type = expunge >>>> protocols = imap pop3 sieve >>>> service account-quota { >>>> executable = script /usr/local/scripts/account-quota >>>> unix_listener account-quota { >>>> mode = 0666 >>>> user = dovecot >>>> } >>>> user = dovecot >>>> } >>>> service anvil { >>>> chroot = /var/empty >>>> client_limit = 0 >>>> drop_priv_before_exec = no >>>> executable = anvil >>>> extra_groups = >>>> group = $default_internal_user >>>> idle_kill = 4294967295 secs >>>> privileged_group = >>>> process_limit = 1 >>>> process_min_avail = 1 >>>> protocol = >>>> service_count = 0 >>>> type = anvil >>>> unix_listener anvil-auth-penalty { >>>> group = $default_internal_user >>>> mode = 0660 >>>> user = dovecot >>>> } >>>> unix_listener anvil { >>>> group = $default_internal_user >>>> mode = 0660 >>>> user = dovecot >>>> } >>>> user = $default_internal_user >>>> vsz_limit = 18446744073709551615 B >>>> } >>>> service auth-worker { >>>> chroot = /var/empty >>>> user = $default_internal_user >>>> } >>>> service auth { >>>> chroot = /var/empty >>>> executable = /usr/libexec/dovecot/auth >>>> unix_listener auth-client { >>>> mode = 0660 >>>> } >>>> unix_listener auth-master { >>>> mode = 0666 >>>> } >>>> unix_listener auth-userdb { >>>> mode = 0777 >>>> } >>>> user = $default_internal_user >>>> } >>>> service dict { >>>> executable = /usr/libexec/dovecot/dict >>>> unix_listener dict { >>>> mode = 0600 >>>> user = $default_internal_user >>>> } >>>> } >>>> service imap-login { >>>> executable = /usr/libexec/dovecot/imap-login >>>> inet_listener imap { >>>> address = xxxxxxx >>>> port = 143 >>>> } >>>> process_limit = 10000 >>>> process_min_avail = 1 >>>> service_count = 0 >>>> user = dovecot >>>> } >>>> service imap { >>>> executable = /usr/libexec/dovecot/imap >>>> process_limit = 18000 >>>> process_min_avail = 1 >>>> service_count = 0 >>>> vsz_limit = 256 M >>>> } >>>> service lmtp { >>>> process_limit = 10 >>>> } >>>> service pop3-login { >>>> executable = /usr/libexec/dovecot/pop3-login >>>> inet_listener pop3 { >>>> address = xxxxxx >>>> port = 110 >>>> } >>>> process_limit = 1000 >>>> process_min_avail = 1 >>>> service_count = 0 >>>> user = dovecot >>>> vsz_limit = 256 M >>>> } >>>> service pop3 { >>>> executable = /usr/libexec/dovecot/pop3 >>>> process_limit = 1000 >>>> process_min_avail = 1 >>>> service_count = 0 >>>> } >>>> service send-warning { >>>> executable = script /usr/local/scripts/send-warning >>>> unix_listener send-warning { >>>> mode = 0666 >>>> user = dovecot >>>> } >>>> user = dovecot >>>> } >>>> shutdown_clients = no >>>> ssl_cert = </etc/dovecot/xxxx.crt >>>> ssl_key = # hidden, use -P to show it >>>> userdb { >>>> args = /etc/dovecot/dovecot-ldap.conf >>>> driver = ldap >>>> } >>>> verbose_proctitle = yes >>>> protocol lda { >>>> mail_plugins = sieve quota cgroups zlib >>>> } >>>> protocol imap { >>>> imap_client_workarounds = delay-newmail tb-extra-mailbox-sep >>>> mail_max_userip_connections = 50 >>>> mail_plugins = quota imap_quota mail_log notify cgroups zlib >>>> } >>>> protocol pop3 { >>>> mail_max_userip_connections = 20 >>>> mail_plugins = quota cgroups zlib >>>> pop3_client_workarounds = outlook-no-nuls oe-ns-eoh >>>> pop3_enable_last = no >>>> pop3_no_flag_updates = yes >>>> pop3_uidl_format = %08Xu%08Xv >>>> } >>>> ---- [end] ---- >>>> >>>> >>>> Regards, >>>> >>>> Aleksandr.