I was able to solve this by specifying userdb use the passwd-file in addition to passdb using bsdauth:
userdb { args = username_format=%u /etc/passwd default_fields = quota_rule=*:storage=1G driver = passwd-file }
This is combined with:
passdb { driver = bsdauth }
This may be an ugly solution but it does seem to work and only requires me maintain a single passwd file.
-- Aaron Lin jrmu@ircnow.org IRCNow (https://ircnow.org)
On Mon, Aug 04, 2025 at 07:32:55PM -0700, jrmu@ircnow.org wrote:
I am now trying to use bsdauth instead of passwd-file:
passdb { driver = bsdauth }
When I attempt to login via IMAP, dovecot reports this error:
Aug 4 19:19:43 jrmu dovecot: imap(77561): Error: Couldn't drop privileges: User is missing UID (see mail_uid setting)
Below is the output of dovecot -n:
dovecot -n
2.3.21.1 (d492236fa0): /etc/dovecot/dovecot.conf
OS: OpenBSD 7.7 amd64 ffs
Hostname: jrmu.host.nastycode.com
auth_debug = yes auth_debug_passwords = yes auth_verbose = yes auth_verbose_passwords = sha1 first_valid_uid = 1000 listen = 104.167.242.227, 2602:fccf:1:2227:: mail_debug = yes mail_location = maildir:/home/%u/Maildir mbox_write_locks = fcntl mmap_disable = yes namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = bsdauth } ssl_cert = </etc/ssl/jrmu.host.nastycode.com.crt ssl_key = # hidden, use -P to show it verbose_ssl = yes
dovecot will properly drop privileges work if I hard code mail_uid and mail_gid:
mail_uid = 1001 mail_gid = 1001
But shouldn't dovecot be allowed to drop to any user that logs in, and not get hard coded to a single uid?
-- Aaron Lin jrmu@ircnow.org IRCNow (https://ircnow.org)
On Mon, Aug 04, 2025 at 07:50:54AM +0300, Aki Tuomi wrote:
On 04/08/2025 01:30 EEST jrmu--- via dovecot <dovecot@dovecot.org> wrote:
Greetings Dovecot team/users,
I am trying to use Dovecot to serve Maildir files. The users' email is located in ~/Maildir (in each user's home directory). I tried specifying
mail_location = maildir:~/Maildir
but I get this error:
Aug 4 00:06:34 ch dovecot: imap(username): Error: Relative home directory paths not supported: 0
Are relative home directory paths not supported?
Here is the output of dovecot -n:
dovecot -n
driver = passwd-file } verbose_ssl = yes
1375 bytes received in 0.00 seconds (5.18 MB/s)
-- Aaron Lin jrmu@ircnow.org IRCNow (https://ircnow.org)
dovecot mailing list -- dovecot@dovecot.org To unsubscribe send an email to dovecot-leave@dovecot.org
Either add
mail_home = /path/to/home/%u (or something like this)
or your passwd-file needs to returns home directory.
Aki