Hi,
double slashes are usually harmless. ~/sdbox is also ok, not sure what section of the docs you are referring to about relative paths. The conversion also looks ok.
Aki
On 04/02/2026 00:16 EET Philip Iezzi via dovecot <dovecot@dovecot.org> wrote:
Hi Aki
I really appreciate that overview. I'm going to migrate my mail servers soon from Dovecot 2.3 to 2.4 and finally upgrade them to Debian Trixie. I'm still a bit confused about mail_home. Is that conversion correct?
<= 2.3 mail_home = /var/vmail/%d/%n mail_location = sdbox:~/sdbox mail_uid = vmail mail_gid = vmail
=> 2.4 mail_driver = sdbox mail_home = /var/vmail/%{user | domain}/%{user | username} mail_path = %{home}/sdbox mail_uid = vmail mail_gid = vmail
I'm asking because I have an environment with mixed usernames, legacy usernames without domain (e.g. web123p1) vs. regular email usernames (e.g. foo@example.com). With above 2.4 mail_home config, would POSIX path normalisation care about the // on legacy usernames? It should match my existing structure (running for over 6yrs on Dovecot):
web123p1 -> /var/vmail/web123p1 foo@example.com -> /var/vmail/example.com/foo
So, I would not need to care about the resulting double slash (/var/vmail//web123p1) because of the missing domain in web123p1?
I also depend on auto-creation of mailbox directory structure when a new virtual user is accessed the first time (authenticated via MySQL passdb). Will that magically just work with above config, without enabling any extra "auto-create" flag?
Somewhere in your docs, I read about relative paths not being "future-proof". Can those two be equally used und ~ is not considered "relative"?
mail_path = %{home}/sdbox vs. mail_path = ~/sdbox
(will probably never ever change the home of vmail system user, but who guarantees that this config is really read by vmail and not root?)
Thanks a lot. Cheers, Philip
On 10 Dec 2025, at 13:10, Aki Tuomi via dovecot <dovecot@dovecot.org> wrote:
Hi!
We've been noticing that many people are configuring mail_inbox_path.
I assume that for most people this is because debian decided to include it in their default config, so that it would use /var/mail boxes for user INBOXes.
If your inbox *does not* reside in some weird location, you should *not* set this setting to any value, instead you can either ensure it's commented out, or set to empty value. IN PARTICULAR, IT IS **NOT** REQUIRED SETTING.
Setting it to some random weird value like '.' will just cause Problems, setting it to $MAIL_HOME/ or something else will just be either pointless or cause problems.
Some most common conversions (please adjust to your environment)
mail_home= /home/vmail/%u => mail_home = /home/vmail/%{user}
mail_home = /home/vmail/%d/%u => mail_home = /home/vmail/%{user|domain}/%{user|username} or some variant of this.
mail_location = maildir:~/ => mail_path = ~/ mail_driver = maildir
mail_location = maildir:/var/srv/foo/%d/%u => mail_path = /var/srv/foo/%{user|domain}/%{user|username} mail_driver = maildir
In addition you might want to convert
INDEX=~/.index => mail_index_path=~/.index
CONTROL=~/.control => mail_control_path=~/.control
LAYOUT=fs => mailbox_list_layout=fs
A minimal working config is
mail_home=/home/vmail/%{user} mail_driver=maildir mail_path=~/maildir mail_uid=vmail mail_gid=vmail
If you have settings like
namespace other { location = maildir:/foo/bar }
this converts into
namespace other { mail_path = /foo/bar
optional, if this is matches your top level
mail_driver = maildir }
Hope this clears out some of the confusion.
Aki
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org