Hello,
I recently upgraded my servers from Debian Bullseye to Trixie (2.3 -> 2.4).
I have a pretty basic config, though I use Maildir instead of Debian's default of mbox.
In the process of getting things working correctly for the new config format, I believe I have stumbled on a bug.
To make the inbox work correctly, I need the mail_inbox_path variable to be unset. This is because the default shipped 10-mail.conf file from Debian has:
mail_driver = mbox mail_home = /home/%{user | username} mail_path = %{home}/mail mail_inbox_path = /var/mail/%{user}
So, I overrode the mail_driver and mail_path in my local.conf. From the documentation, it seems like I should be able to set:
mail_inbox_path =
And that should clear it. Certainly, doveconf shows no mail_inbox_path variable set when that happens. However, no inbox! If I comment out mail_inbox_path from 10-mail.conf, doveconf output is identical, however the inbox works.
My workaround is to make it the same as mail_path:
mail_inbox_path = ~/Maildir
However, I think the variable unsetting is buggy.
This is dovecot 2.4.1.
--Pat
On 08/21/2026 12:47 PM MDT Pat Suwalski via dovecot <dovecot@dovecot.org> wrote:
I recently upgraded my servers from Debian Bullseye to Trixie (2.3 -> 2.4).
I have a pretty basic config, though I use Maildir instead of Debian's default of mbox.
In the process of getting things working correctly for the new config format, I believe I have stumbled on a bug.
To make the inbox work correctly, I need the mail_inbox_path variable to be unset. This is because the default shipped 10-mail.conf file from Debian has:
mail_driver = mbox mail_home = /home/%{user | username} mail_path = %{home}/mail mail_inbox_path = /var/mail/%{user}
So, I overrode the mail_driver and mail_path in my local.conf. From the documentation, it seems like I should be able to set:
mail_inbox_path =
And that should clear it. Certainly, doveconf shows no mail_inbox_path variable set when that happens. However, no inbox! If I comment out mail_inbox_path from 10-mail.conf, doveconf output is identical, however the inbox works.
My workaround is to make it the same as mail_path:
mail_inbox_path = ~/Maildir
However, I think the variable unsetting is buggy.
See https://doc.dovecot.org/2.4.4/core/summaries/settings.html#mail_inbox_path , specifically the WARNING box.
michael
That is precisely why I wanted to unset the global config variable.
But that doesn't work. Thus my email.
Why does unsetting not work?
--Pat
On August 21, 2026 3:24:42 p.m. EDT, Michael Slusarz <michael.slusarz@dovecotpro.com> wrote:
On 08/21/2026 12:47 PM MDT Pat Suwalski via dovecot <dovecot@dovecot.org> wrote:
I recently upgraded my servers from Debian Bullseye to Trixie (2.3 -> 2.4).
I have a pretty basic config, though I use Maildir instead of Debian's default of mbox.
In the process of getting things working correctly for the new config format, I believe I have stumbled on a bug.
To make the inbox work correctly, I need the mail_inbox_path variable to be unset. This is because the default shipped 10-mail.conf file from Debian has:
mail_driver = mbox mail_home = /home/%{user | username} mail_path = %{home}/mail mail_inbox_path = /var/mail/%{user}
So, I overrode the mail_driver and mail_path in my local.conf. From the documentation, it seems like I should be able to set:
mail_inbox_path =
And that should clear it. Certainly, doveconf shows no mail_inbox_path variable set when that happens. However, no inbox! If I comment out mail_inbox_path from 10-mail.conf, doveconf output is identical, however the inbox works.
My workaround is to make it the same as mail_path:
mail_inbox_path = ~/Maildir
However, I think the variable unsetting is buggy.
See https://doc.dovecot.org/2.4.4/core/summaries/settings.html#mail_inbox_path , specifically the WARNING box.
michael
So. If a variable does not show up in doveconf, either by never being set, or by being unset, is there a reason it would be set differently in other parts of the code?
--Pat
On 2026-08-21 16:46, Pat Suwalski via dovecot wrote:
That is precisely why I wanted to unset the global config variable.
But that doesn't work. Thus my email.
Why does unsetting not work?
--Pat
On August 21, 2026 3:24:42 p.m. EDT, Michael Slusarz <michael.slusarz@dovecotpro.com> wrote:
On 08/21/2026 12:47 PM MDT Pat Suwalski via dovecot <dovecot@dovecot.org> wrote:
I recently upgraded my servers from Debian Bullseye to Trixie (2.3 -> 2.4).
I have a pretty basic config, though I use Maildir instead of Debian's default of mbox.
In the process of getting things working correctly for the new config format, I believe I have stumbled on a bug.
To make the inbox work correctly, I need the mail_inbox_path variable to be unset. This is because the default shipped 10-mail.conf file from Debian has:
mail_driver = mbox mail_home = /home/%{user | username} mail_path = %{home}/mail mail_inbox_path = /var/mail/%{user}So, I overrode the mail_driver and mail_path in my local.conf. From the documentation, it seems like I should be able to set:
mail_inbox_path =And that should clear it. Certainly, doveconf shows no mail_inbox_path variable set when that happens. However, no inbox! If I comment out mail_inbox_path from 10-mail.conf, doveconf output is identical, however the inbox works.
My workaround is to make it the same as mail_path:
mail_inbox_path = ~/MaildirHowever, I think the variable unsetting is buggy.
See https://doc.dovecot.org/2.4.4/core/summaries/settings.html#mail_inbox_path , specifically the WARNING box.
michael
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
Since I haven't gotten any traction on this, I decided to investigate myself. Perhaps this will be useful to others searching the internet for answers.
So, from all-settings.c, the default mail_inbox_path is actually set to ".":
static const struct setting_keyvalue maildir_default_settings_keyvalue[] = { { "maildir/mailbox_list_layout", "maildir++" }, { "maildir/mail_path", "%{home}/Maildir" }, /* Use Maildir/ root as the INBOX, not Maildir/.INBOX/ */ { "maildir/layout_maildir++/mail_inbox_path", "." }, { "maildir/layout_fs/mail_inbox_path", "." }, { NULL, NULL } };
When I was trying to "unset" it by setting its value to "", this later if condition was never entered at all, so it never had an absolute path set (""[0] == '\0'):
if (set->mail_inbox_path[0] != '\0' && set->mail_inbox_path[0]
!= '/') { /* Convert to absolute path */ if (strcmp(set->mail_inbox_path, ".") == 0) set->mail_inbox_path = set->mail_path; else { set->mail_inbox_path = p_strdup_printf(pool, "%s/%s", set->mail_path, set->mail_inbox_path); } }
So the "correct" way to unset that variable in the local.conf is:
mail_inbox_path = "."
I still think setting it to "" should be a correct way to unset the variable.
--Pat
On 2026-08-26 10:41, Pat Suwalski wrote:
So. If a variable does not show up in doveconf, either by never being set, or by being unset, is there a reason it would be set differently in other parts of the code?
--Pat
On 2026-08-21 16:46, Pat Suwalski via dovecot wrote:
That is precisely why I wanted to unset the global config variable.
But that doesn't work. Thus my email.
Why does unsetting not work?
--Pat
On August 21, 2026 3:24:42 p.m. EDT, Michael Slusarz <michael.slusarz@dovecotpro.com> wrote:
On 08/21/2026 12:47 PM MDT Pat Suwalski via dovecot <dovecot@dovecot.org> wrote:
I recently upgraded my servers from Debian Bullseye to Trixie (2.3 -
2.4).
I have a pretty basic config, though I use Maildir instead of Debian's default of mbox.
In the process of getting things working correctly for the new config format, I believe I have stumbled on a bug.
To make the inbox work correctly, I need the mail_inbox_path variable to be unset. This is because the default shipped 10-mail.conf file from Debian has:
mail_driver = mbox mail_home = /home/%{user | username} mail_path = %{home}/mail mail_inbox_path = /var/mail/%{user}
So, I overrode the mail_driver and mail_path in my local.conf. From the documentation, it seems like I should be able to set:
mail_inbox_path =
And that should clear it. Certainly, doveconf shows no mail_inbox_path variable set when that happens. However, no inbox! If I comment out mail_inbox_path from 10-mail.conf, doveconf output is identical, however the inbox works.
My workaround is to make it the same as mail_path:
mail_inbox_path = ~/Maildir
However, I think the variable unsetting is buggy.
See https://doc.dovecot.org/2.4.4/core/summaries/ settings.html#mail_inbox_path , specifically the WARNING box.
michael
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
The correct value is
mail_inbox_path = .
for **maildir** and
mail_inbox_path =
for others. but you can rely on defaults setting these correctly.
this is usually only a problem with debian packages that set mail_inbox_path = something, and you can comment that out.
variables that have been explicitly set in config file will show up in doveconf output.
Aki
On 02/09/2026 17:35 EEST Pat Suwalski via dovecot <dovecot@dovecot.org> wrote:
Since I haven't gotten any traction on this, I decided to investigate myself. Perhaps this will be useful to others searching the internet for answers.
So, from all-settings.c, the default mail_inbox_path is actually set to ".":
static const struct setting_keyvalue maildir_default_settings_keyvalue[] = { { "maildir/mailbox_list_layout", "maildir++" }, { "maildir/mail_path", "%{home}/Maildir" }, /* Use Maildir/ root as the INBOX, not Maildir/.INBOX/ */ { "maildir/layout_maildir++/mail_inbox_path", "." }, { "maildir/layout_fs/mail_inbox_path", "." }, { NULL, NULL } };
When I was trying to "unset" it by setting its value to "", this later if condition was never entered at all, so it never had an absolute path set (""[0] == '\0'):
if (set->mail_inbox_path[0] != '\0' && set->mail_inbox_path[0]!= '/') { /* Convert to absolute path */ if (strcmp(set->mail_inbox_path, ".") == 0) set->mail_inbox_path = set->mail_path; else { set->mail_inbox_path = p_strdup_printf(pool, "%s/%s", set->mail_path, set->mail_inbox_path); } }
So the "correct" way to unset that variable in the local.conf is:
mail_inbox_path = "."
I still think setting it to "" should be a correct way to unset the variable.
--Pat
On 2026-08-26 10:41, Pat Suwalski wrote:
So. If a variable does not show up in doveconf, either by never being set, or by being unset, is there a reason it would be set differently in other parts of the code?
--Pat
On 2026-08-21 16:46, Pat Suwalski via dovecot wrote:
That is precisely why I wanted to unset the global config variable.
But that doesn't work. Thus my email.
Why does unsetting not work?
--Pat
On August 21, 2026 3:24:42 p.m. EDT, Michael Slusarz <michael.slusarz@dovecotpro.com> wrote:
On 08/21/2026 12:47 PM MDT Pat Suwalski via dovecot <dovecot@dovecot.org> wrote:
I recently upgraded my servers from Debian Bullseye to Trixie (2.3 -
2.4).
I have a pretty basic config, though I use Maildir instead of Debian's default of mbox.
In the process of getting things working correctly for the new config format, I believe I have stumbled on a bug.
To make the inbox work correctly, I need the mail_inbox_path variable to be unset. This is because the default shipped 10-mail.conf file from Debian has:
mail_driver = mbox mail_home = /home/%{user | username} mail_path = %{home}/mail mail_inbox_path = /var/mail/%{user}
So, I overrode the mail_driver and mail_path in my local.conf. From the documentation, it seems like I should be able to set:
mail_inbox_path =
And that should clear it. Certainly, doveconf shows no mail_inbox_path variable set when that happens. However, no inbox! If I comment out mail_inbox_path from 10-mail.conf, doveconf output is identical, however the inbox works.
My workaround is to make it the same as mail_path:
mail_inbox_path = ~/Maildir
However, I think the variable unsetting is buggy.
See https://doc.dovecot.org/2.4.4/core/summaries/ settings.html#mail_inbox_path , specifically the WARNING box.
michael
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
On 2026-09-02 10:52, Aki Tuomi wrote:
this is usually only a problem with debian packages that set mail_inbox_path = something, and you can comment that out.
variables that have been explicitly set in config file will show up in doveconf output.
As I mentioned a few message back, whether I comment out the line in the Debian config, or set it to "" in local.conf, doveconf shows it as unset, not ".".
But, commenting it out works, and setting it to "" does not work. This is the bug.
Commenting it out in the Debian config is a non-starter, since it will then have to be handled on every package upgrade.
As per the code I referenced, setting an empty string should still have dovecot resolve the full path. Because "." and "" with mail_home set *should* mean the same thing.
--Pat
On 02/09/2026 18:02 EEST Pat Suwalski via dovecot <dovecot@dovecot.org> wrote:
On 2026-09-02 10:52, Aki Tuomi wrote:
this is usually only a problem with debian packages that set mail_inbox_path = something, and you can comment that out.
variables that have been explicitly set in config file will show up in doveconf output.
As I mentioned a few message back, whether I comment out the line in the Debian config, or set it to "" in local.conf, doveconf shows it as unset, not ".".
This is by design. The default '.' shows up with doveconf maildir/mail_inbox_path.
But, commenting it out works, and setting it to "" does not work. This is the bug.
This is because it'll override the setting from maildir/mail_inbox_path.
Commenting it out in the Debian config is a non-starter, since it will then have to be handled on every package upgrade.
This is unfortunate side effect of how things work, as we do not have a way to unset value.
As per the code I referenced, setting an empty string should still have dovecot resolve the full path. Because "." and "" with mail_home set *should* mean the same thing.
--Pat
Aki
On 2026-09-02 11:19, Aki Tuomi wrote:
This is by design. The default '.' shows up with
doveconf maildir/mail_inbox_path.
This does not appear to be true. If I comment out mail_inbox_path in the Debian config and in my local.conf:
doveconf maildir/mail_inbox_path
echo $?
0
The full output also does not show it.
2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf
Pigeonhole version 2.4.1-4 (0a86619f)
OS: Linux 7.0.5-x86_64-linode173 x86_64 Debian 13.6
Hostname: kahzuu.com
4 default setting changes since version 2.4.0
dovecot_config_version = 2.4.0 dovecot_storage_version = 2.4.0 fts_autoindex = yes fts_autoindex_max_recent_msgs = 999 fts_search_add_missing = yes mail_driver = maildir mail_home = /home/%{user | username} mail_path = ~/Maildir mail_privileged_group = mail protocols { imap = yes } passdb pam { } userdb passwd { } namespace inbox { inbox = yes mailbox Drafts { special_use = "\\Drafts" } mailbox Junk { special_use = "\\Junk" } mailbox Trash { special_use = "\\Trash" } mailbox Sent { special_use = "\\Sent" } mailbox "Sent Messages" { special_use = "\\Sent" } } service imap-login { inet_listener imap { } inet_listener imaps { } } service pop3-login { inet_listener pop3 { } inet_listener pop3s { } } service submission-login { inet_listener submission { } inet_listener submissions { } } service lmtp { unix_listener lmtp { } } service imap { } service pop3 { } service submission { } service auth { unix_listener auth-userdb { } } service auth-worker { } service dict { unix_listener dict { } } ssl_server { cert_file = /var/lib/acme/live/XXX/fullchain key_file = /var/lib/acme/live/XXX/privkey } protocol imap { mail_max_userip_connections = 30 }
--Pat
On 02/09/2026 18:29 EEST Pat Suwalski via dovecot <dovecot@dovecot.org> wrote:
On 2026-09-02 11:19, Aki Tuomi wrote:
This is by design. The default '.' shows up with
doveconf maildir/mail_inbox_path.This does not appear to be true. If I comment out mail_inbox_path in the Debian config and in my local.conf:
doveconf maildir/mail_inbox_path
echo $?
0
My bad:
~$ doveconf maildir/layout_maildir++/mail_inbox_path maildir { layout_maildir++ { mail_inbox_path = . } }
It's there for layout_fs too.
Aki
So, to put a bow on it, could/should Debian packages be setting the variable more specifically just for mbox, through "mbox/layout_fs/mail_inbox_path" or similar?
I can suggest it to them, if there's a way to set it so it doesn't affect maildir like in my use case.
--Pat
On 2026-09-02 11:44, Aki Tuomi via dovecot wrote:
On 02/09/2026 18:29 EEST Pat Suwalski via dovecot <dovecot@dovecot.org> wrote:
On 2026-09-02 11:19, Aki Tuomi wrote:
This is by design. The default '.' shows up with
doveconf maildir/mail_inbox_path.This does not appear to be true. If I comment out mail_inbox_path in the Debian config and in my local.conf:
doveconf maildir/mail_inbox_path
echo $?
0
My bad:
~$ doveconf maildir/layout_maildir++/mail_inbox_path maildir { layout_maildir++ { mail_inbox_path = . } }
It's there for layout_fs too.
Aki
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
participants (3)
-
Aki Tuomi
-
Michael Slusarz
-
Pat Suwalski