2.4 upgrade : INBOX does not exist

"Stefan G. Weichinger via dovecot" <[email protected]> Thu, 2 Apr 2026 19:15:04 +0200
Newsgroups gmane.mail.imap.dovecot
Message-ID <[email protected]>
Today I upgraded a server at a customer.

I modified the config I had built over the last week, with the help of 
this list.

So far nearly everything works, but thunderbird complains about 
non-existing mailboxes like INBOX.

But we can access it, it's a bit strange.

In the filesystem it looks like:

# ls -la /home/vmail/our.tld/user\@our.tld/
insgesamt 7096
drwx------  69 vmail vmail    4096  2. Apr 19:00  .
drwx------ 129 vmail vmail   12288  2. Apr 18:56  ..
drwx------   5 vmail vmail    4096  8. Jun 2021   .Administrator
drwx------   5 vmail vmail    4096  2. Apr 18:40  .Administrator.Archiv
drwx------   5 vmail vmail    4096  2. Apr 18:40 
'.Administrator.Domainwechsel AquaCC'
drwx------   5 vmail vmail    4096 11. Mai 2025   .Archives
drwx------   5 vmail vmail    4096  2. Apr 18:40  .Archives.2001
drwx------   5 vmail vmail    4096  2. Apr 18:40  .Archives.2002
drwx------   5 vmail vmail    4096  2. Apr 18:40  .Archives.2003
drwx------   5 vmail vmail    4096 12. Aug 2024   .Archives.2004
drwx------   5 vmail vmail    4096  2. Apr 18:40  .Archives.2005
drwx------   5 vmail vmail    4096 12. Aug 2024   .Archives.2006
drwx------   5 vmail vmail    4096 12. Aug 2024   .Archives.2007
drwx------   5 vmail vmail    4096 10. Feb 18:17  .Archives.2008
drwx------   5 vmail vmail    4096 12. Aug 2024   .Archives.2009
drwx------   5 vmail vmail    4096 12. Aug 2024   .Archives.2010
drwx------   5 vmail vmail    4096 10. Feb 18:10  .Archives.2011
drwx------   5 vmail vmail    4096 12. Aug 2024   .Archives.2012
drwx------   5 vmail vmail    4096 12. Aug 2024   .Archives.2013
drwx------   5 vmail vmail    4096 10. Feb 18:09  .Archives.2014
drwx------   5 vmail vmail    4096 12. Aug 2024   .Archives.2015
drwx------   5 vmail vmail    4096  2. Apr 17:51  .Archives.2016
drwx------   5 vmail vmail    4096 11. Feb 11:57  .Archives.2017
drwx------   5 vmail vmail    4096 10. Jun 2025   .Archives.2018
drwx------   5 vmail vmail    4096 11. Feb 11:57  .Archives.2019
drwx------   5 vmail vmail    4096 10. Feb 18:23  .Archives.2020
drwx------   5 vmail vmail    4096  1. Apr 20:18  .Archives.2021
drwx------   5 vmail vmail    4096 30. Mär 09:37  .Archives.2022
drwx------   5 vmail vmail    4096  1. Apr 20:18  .Archives.2023
drwx------   5 vmail vmail    4096  1. Apr 20:18  .Archives.2024
drwx------   5 vmail vmail    4096  2. Apr 17:48  .Archives.2025
drwx------   5 vmail vmail    4096  2. Apr 17:59  .Archives.2026
drwx------   2 vmail vmail  323584  2. Apr 19:00  cur
-rw-------   1 vmail vmail       0  2. Aug 2021   dovecot-acl-list
-rw-------   1 vmail vmail   70712  2. Apr 18:37  dovecot.index
-rw-------   1 vmail vmail 6266860  2. Apr 19:01  dovecot.index.cache
-rw-------   1 vmail vmail   32160  2. Apr 19:00  dovecot.index.log
-rw-------   1 vmail vmail   46940  2. Apr 06:20  dovecot.index.log.2
-rw-------   1 vmail vmail      91 18. Aug 2020   dovecot-keywords
-rw-------   1 vmail vmail      65  2. Apr 18:37  .dovecot.lda-dupes
drwx------   5 vmail vmail    4096  2. Apr 18:37  .dovecot.lda-dupes.locks
-rw-------   1 vmail vmail    6504  2. Apr 18:49  dovecot.list.index
-rw-------   1 vmail vmail    3356  2. Apr 19:02  dovecot.list.index.log
-rw-------   1 vmail vmail    2904  7. Jän 13:53  dovecot.mailbox.log
-rw-------   1 vmail vmail  186894  2. Apr 18:59  dovecot-uidlist
-rw-------   1 vmail vmail       8  7. Jän 13:53  dovecot-uidvalidity
-r--r--r--   1 vmail vmail       0 21. Apr 2020 
dovecot-uidvalidity.5e9efc52
drwx------   5 vmail vmail    4096  2. Apr 12:02  .Drafts
drwx------   5 vmail vmail    4096 12. Jun 2025  '.Entw&APw-rfe'
drwx------   5 vmail vmail    4096  6. Mai 2020   .Gesendet
drwx------   5 vmail vmail    4096  2. Apr 18:22  .INBOX.Administrator
drwx------   5 vmail vmail    4096  2. Apr 18:21  .INBOX.Alerts

[..]

We have

mail_home = /home/vmail/%{user | domain}/%{user}

I tried

mail_home = /home/vmail/%{user | domain}/%{user | username}

but that breaks things completely.


In 2.3 we had these namespaces:


namespace {
	type = private
	separator = /
	prefix =
#location defaults to mail_location.
	inbox = yes
}

namespace {
	type = public
	separator = /
	prefix = Oeffentlich/
	location = maildir:/home/vmail/oeffentlich
	subscriptions = yes
}



I tried "prefix = INBOX/" ... not good.

I share the config, a little bit anonymized, acls removed ...


# doveconf -n
# 2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf
# Pigeonhole version 2.4.1-4 (0a86619f)
# OS: Linux 6.12.74+deb13+1-amd64 x86_64 Debian 13.4
# Hostname: xxxx
dovecot_config_version = 2.4.1
auth_allow_weak_schemes = yes
auth_cache_size = 4M
auth_debug = yes
auth_mechanisms = plain login
auth_verbose = yes
default_process_limit = 300
dovecot_storage_version = 2.4.0
import_environment {
   CORE_ERROR = %{env:CORE_ERROR}
   CORE_OUTOFMEM = %{env:CORE_OUTOFMEM}
   LISTEN_FDS = %{env:LISTEN_FDS}
   LISTEN_PID = %{env:LISTEN_PID}
   MALLOC_MMAP_THRESHOLD_ = 131072
   NOTIFY_SOCKET = %{env:NOTIFY_SOCKET}
   PATH = %{env:PATH}
   TZ = :/etc/localtime
}
info_log_path = /var/log/dovecot.info
listen = * [::]
log_path = /var/log/dovecot.log
mail_debug = yes
mail_driver = maildir
mail_gid = 5000
mail_home = /home/vmail/%{user | domain}/%{user}
mail_path = ~
mail_plugins {
   acl = yes
   notify = yes
   quota = no
}
mail_uid = 5000
protocols = imap sieve lmtp
sieve_extensions {
   fileinto = yes
   reject = yes
   envelope = yes
   encoded-character = yes
   vacation = yes
   subaddress = yes
   comparator-i;ascii-numeric = yes
   relational = yes
   regex = yes
   imap4flags = yes
   copy = yes
   include = yes
   body = yes
   variables = yes
   enotify = yes
   environment = yes
   mailbox = yes
   date = yes
   index = yes
   ihave = yes
   duplicate = yes
   mime = yes
   foreverypart = yes
   extracttext = yes
   editheader = yes
   mboxmetadata = yes
   servermetadata = yes
   spamtest = yes
   spamtestplus = yes
   virustest = yes
}
sieve_global_extensions {
   vnd.dovecot.debug = yes
   vnd.dovecot.environment = yes
   vnd.dovecot.pipe = yes
}
sieve_pipe_bin_dir = /usr/lib/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_spamtest_score_max_value = 15
sieve_spamtest_status_header = X-Spamd-Result: .*? 
\[([[:digit:]]+\.[[:digit:]]+) / [[:digit:]]+\.[[:digit:]]+\];
sql_driver = mysql
ssl = required
verbose_proctitle = yes
mysql /var/run/mysqld/mysqld.sock {
   dbname = postfix_db
   password = # hidden, use -P to show it
   user = postfix_user
}
passdb sql {
   default_password_scheme = MD5-CRYPT
   query = SELECT username as user, password FROM mailbox WHERE 
((username = '%{user | username}@domain1.at') OR (username = '%{user | 
username}@domain2.at')) AND active = '1'
}
userdb sql {
   iterate_query = SELECT userid AS username, domain FROM users
   query = SELECT username as user FROM mailbox WHERE ((username = 
'%{user | username}@domain1.at') OR (username = '%{user | 
username}@domain2.at') ) AND active = '1'
}
namespace inbox {
   inbox = yes
   prefix =
   separator = /
   type = private
}
namespace oeffentlich {
   mail_path = /home/vmail/oeffentlich
   prefix = Oeffentlich/
   separator = /
   subscriptions = yes
   type = public
   mailbox Oeffentlich {
     acl

[DELETED for now]

}
service imap-login {
   process_min_avail = 8
   inet_listener imap {
     port = 0
     ssl = no
     listen =
   }
   inet_listener imaps {
     port = 993
     ssl = yes
     listen =
   }
}
service lmtp {
   extra_groups = $SET:default_internal_group
   user = vmail
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     group = postfix
     mode = 0660
     user = postfix
   }
}
service imap {
}
service auth {
   client_limit = 1200
   user = root
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0666
     user = postfix
   }
   unix_listener auth-client {
     group = postfix
     mode = 0660
     user = postfix
   }
   unix_listener auth-userdb {
     mode = 0660
   }
}
service auth-worker {
}
service dict {
   unix_listener dict {
   }
}
ssl_server {
   cert_file = 
/etc/letsencrypt/pfsense/cloud_imap_mail_smtp_LE_cert.fullchain
   key_file = /etc/letsencrypt/pfsense/cloud_imap_mail_smtp_LE_cert.key
}
protocol lda {
   mail_plugins = sieve
}
protocol imap {
   imap_idle_notify_interval = 29 mins
   mail_max_userip_connections = 50
   mail_plugins {
     imap_acl = yes
     imap_quota = no
     imap_sieve = yes
   }
}
protocol lmtp {
   mail_plugins = sieve
   postmaster_address = [email protected]
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
}
service managesieve {
}
protocol sieve {
   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 ihave
}
sieve_script personal {
   active_path = /home/vmail/%{user | 
domain}/%{user}/sieve/scripts/.dovecot.sieve
   driver = file
   path = /home/vmail/%{user | domain}/%{user}/sieve/scripts
}
sieve_script before-0 {
   driver = file
   path = /usr/lib/dovecot/sieve/global-spam.sieve
   type = before
}
service anvil {
   unix_listener anvil {
     group = $SET:default_internal_group
     mode = 0660
   }
}


I assume I am not far from full success, I'd just like to get rid of 
these errors because tomorrow dozens of users will access their 
mailboxes ...

Thanks for any pointers!


_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]