mail_location in userdb inconsistent with imap and pigeonhole
Ladislav Laska
laska at kam.mff.cuni.cz
Sat Dec 10 18:11:33 UTC 2016
Hi!
I'm still fighting with lost mails and what I think is a locking
problem.
As I've lost some pretty important mails already, I decided to mitigate
my troubles by moving to maildir format, which should not be susceptible
to these problems.
I read the docs and wanted to test on my account, before I mess with all
the others and possibly break something. The way to do it seems to be to
do an override via userdb. I already have a passwd-file authdb, so I
uncommented those few lines in configuration, and added this to
my passwd-file:
krakonos:{SHA256}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=:1000:100::/home/krakonos:/bin/bash:userdb_mail=maildir:/home/krakonos/Mail
Now, I'm not really sure why it has to be prefixed with userdb_, but the
example in docs has it, and it seems to work.
I've attached the relevant part of a logfile, with some debugging
enabled, but in short:
Dec 10 18:39:22 ibex dovecot: imap(krakonos): Debug: Added userdb
setting: mail=maildir:/home/krakonos/Mail
[...]
Dec 10 18:39:22 ibex dovecot: imap(krakonos): Debug: maildir++:
root=/home/krakonos/Mail, index=, indexpvt=, control=,
inbox=/home/krakonos/Mail, alt=
[...]
Dec 10 18:39:52 ibex dovecot: lda(krakonos): Debug: mbox: INBOX
defaulted to /home/krakonos/.mbox/inbox
I'm confused why the last line chooses my old mbox over the new
location.
I'm even more confused by the fact the IMAP works fine, and as I connect
from mutt over imap, I can see empty mailboxes (the ~/Mail has only the
basic cur/new/tmp structure).
However, pigeonhole delivers into the .mbox, and not only if it's for
INBOX, but also for spam and others.
I read somewhere in the docs that the order is first try userdb, then
mail_location and namespaces override the rest. This might be the
problem, as I have:
mail_location = mbox:~/.mbox
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 =
}
Due to inbox=yes this would explain why inbox is using the default path in
mail_location. But why even the spam is delivered into the old mbox? And how do
I solve the problem anyway, should I just remove the namespace?
Anyway, it doesn't explain why the IMAP part and pigeonhole apply different
rules and show me different inboxes, which is probably a bug.
Thanks!
-----------------------------------------------------------------------
Here is the rest of my configuration for reference, the log is attached:
-----------------------------------------------------------------------
# 2.2.26.0 (23d1de6): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 (fed8554)
# OS: Linux 4.4.26-gentoo x86_64 Gentoo Base System release 2.2
auth_username_format = %n
hostname = ibex.krakonos.org
login_greeting = Dovecot at krakonos.org ready.
mail_debug = yes
mail_location = mbox:~/.mbox
mbox_read_locks = dotlock fcntl
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 {
args = *
driver = pam
}
passdb {
args = scheme=CRYPT username_format=%u /etc/dovecot/users
driver = passwd-file
}
plugin {
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute
sieve_execute_socket_dir = sieve-execute
sieve_extensions = +vnd.dovecot.filter +editheader
sieve_filter_bin_dir = /usr/lib/dovecot/sieve-filter
sieve_filter_socket_dir = sieve-filter
sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe
sieve_pipe_socket_dir = sieve-pipe
sieve_plugins = sieve_extprograms
}
postmaster_address = postmaster at krakonos.org
protocols = imap
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
}
ssl_cert = </etc/ssl/dovecot/server.pem
ssl_key = # hidden, use -P to show it
userdb {
driver = passwd
}
userdb {
args = username_format=%u /etc/dovecot/users
driver = passwd-file
}
protocol lda {
mail_plugins = sieve
}
--
S pozdravem Ladislav "Krakonoš" Láska http://www.krakonos.org/
More information about the dovecot
mailing list