It seems you are not using mailbox_list_index=yes, I suspect you want to turn this on. It might help with this problem, too.

Aki

On 8.10.2019 8.09, Erik de Waard via dovecot wrote:
# 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf

Hello, we're using mail on NFS and the indexes on localdisk, with a director setup. (18K+ users) now to get more performance i thought to use the ITERINDEX option. however this has the side-effect on some mailboxes that it doesn't show the subfolders under INBOX.
they seem 'disappeared'. Removing the ITERINDEX option fixes this again.

Deleting the local indexes to be recreated doesn't solve the problem.
What could cause this? and how to fix it.

# 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.4 ()
# OS: Linux 4.9.0-11-amd64 x86_64 Debian 9.11
# Hostname: somemail.host.domain
auth_cache_negative_ttl = 0
auth_cache_size = 10 M
auth_cache_ttl = 1 days
auth_username_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@#"
default_client_limit = 1500
default_vsz_limit = 1 G
disable_plaintext_auth = no
info_log_path = /dev/null
listen = *
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_trusted_networks = 10.0.10.0/24
mail_fsync = never
mail_max_userip_connections = 100
mail_prefetch_count = 10
mail_privileged_group = mail
mailbox_list_index_include_inbox = yes
mmap_disable = yes
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 = INBOX.
  separator = .
  type = private
}
passdb {
  args = username_format=%{rip} /etc/dovecot/passdb
  default_fields = noauthenticate=y
  driver = passwd-file
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
plugin {
  sieve_execute_bin_dir = /etc/dovecot/sieve-executables
  sieve_global_extensions = +vnd.dovecot.execute
  sieve_plugins = sieve_extprograms
}
protocols = imap lmtp
service anvil {
  unix_listener anvil-auth-penalty {
    mode = 0600
  }
}
service auth {
  user = root
}
service imap-login {
  client_limit = 6000
  process_limit = 4
  process_min_avail = 4
  service_count = 0
  vsz_limit = 600 M
}
service imap {
  client_limit = 1
  process_limit = 1024
  service_count = 50
}
service lmtp {
  inet_listener lmtp {
    port = 24
  }
}
ssl = no
ssl_cert = </etc/dovecot/dovecot.crt
ssl_key = # hidden, use -P to show it
userdb {
  driver = prefetch
}
userdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
verbose_proctitle = yes
protocol lmtp {
  mail_fsync = optimized
  mail_plugins = " sieve"
  plugin {
    sieve = ~/filters.sieve
    sieve_after = /etc/dovecot/sieve/after.sieve
    sieve_before = /etc/dovecot/sieve/before.sieve
  }
  userdb {
    args = /etc/dovecot/dovecot-sql-lmtp.conf
    driver = sql
    name =
  }
}

dovecot-sql.conf
driver = mysql
connect = host=10.0.10.150 dbname=maildb user=mail password=5ecret!
default_pass_scheme = SHA
password_query = select login as user, crypt_sha1 as password, home as userdb_home, uid AS userdb_uid, gid AS userdb_gid, concat('maildir:',maildir,':INDEX=/data/indexes/',login,':ITERINDEX',':VOLATILEDIR=/data/indexes/',login) as userdb_mail from mailbox left join aliases on aliases.systemid = aliasid where login = '%u' and inactive = 0;
user_query = select home, maildir as mail, uid, gid from mailbox left join aliases on aliases.systemid = aliasid where login = '%u' and inactive = 0;
iterate_query = select distinct login as user from mailbox;