Emails not visible after renaming folders

Timo Sirainen timo at sirainen.com
Wed Aug 14 23:08:40 EEST 2019


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 at 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 at 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 at testmailbox
>>>> "messages vsize" NEWTEST*
>>>> mailbox      messages vsize
>>>> NEWTEST         0        0
>>>> NEWTEST/SUBTEST 0        0
>>>> 
>>>> If doveadm force-resync postmaster at testmailbox, mails will be visible in INBOX
>>>> 
>>>> mailsrv# doveadm -f table mailbox status -u postmaster at 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.



More information about the dovecot mailing list