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]