I removed the Dovecot packages then re-installed. I ran into an issue where emails were correctly delivered to local Maildir mailboxes (they appeared in Maildir/new/), but Roundcube did not show any messages in INBOX. The root cause was where and how the mail storage was configured.
In Dovecot 2.4, the recommended and correct place to configure mail storage is conf.d/10-mail.conf, not dovecot.conf.
Reasons:
dovecot.conf is mainly a loader that includes files from conf.d/
- Mail storage settings are expected to be defined in
10-mail.conf
- Settings defined elsewhere may be overridden or ignored depending on load order
- Dovecot 2.4 introduces a clearer separation using
mail_driver and mail_path
If Maildir is not configured correctly here, Dovecot may not properly process messages from new/ into cur/, which results in IMAP clients (like Roundcube) showing an empty INBOX.
By default, 10-mail.conf contains commented fallback settings for mbox, for example:
mail_driver = mbox
mail_home = /home/%{user | username}
mail_path = %{home}/mail
mail_inbox_path = /var/mail/%{user}
If Maildir is used but these defaults are not adjusted, Dovecot may still assume an mbox-based layout or fail to initialize the mailbox correctly.
Working configuration (Maildir)
In conf.d/10-mail.conf, I explicitly set Maildir and commented out the mbox defaults:
#mail_driver = mbox
#mail_home = /home/%{user | username}
#mail_path = %{home}/mail
#mail_inbox_path = /var/mail/%{user}
mail_driver = maildir
mail_path = ~/Maildir
After reloading Dovecot: systemctl reload dovecot, Dovecot immediately started processing messages correctly:
- mails moved from
new/ to cur/
- INBOX became visible in Roundcube
- no permission or index issues remained
To confirm the active configuration: doveadm config | grep -E "mail_(driver|path)"
PS - I personally encourage the use of non-A grade versions in testing environments. This is the way we all can contribute identifing issues and not let the whole pressure on the Virtualmin team shoulders.