On Wed, 2009-07-08 at 21:36 +0200, Julien Danjou wrote:
At 1247080982 time_t, Timo Sirainen wrote:
The thing is that danjou.info/jd/ is the homedir of the user (returned by SQL),
Make your SQL query return absolute path for home dir.
Sigh. That sounds like you let the bug. Quite sad to read.
"let the bug"? The idea is anyway that you return home=/var/mail/vmail/danjou.info/jd and set
mail_location = maildir:%h
That makes much more sense to me. I've considered making it an error to return relative home dirs from userdb, but that might break some setups that are actually working right..
I smell (did not dig into the code) that there's a chdir() to mail_location that is missing for a reason I don't know.
It's not supposed to chdir to mail_location. It's supposed to chdir to home dir.
Ok. Saw that in deliver.c. That's weird since it runs as 'mail', and mail's home is /var/mail,
Well, I guess there's some confusion about what a home dir is.. With Dovecot the home dir is always what userdb returns as the home dir. Dovecot doesn't care about /etc/passwd at all, unless your userdb is passwd. So Dovecot doesn't know/care that deliver is run as "mail" user, it doesn't care what /etc/passwd contains for the mail user.
where as mail_location is /var/mail/vmail/%h. And almost all the mails (except the couples of ones I mentionned) are delivered and still delivered currently.
It's probably the large mails that cause the problem. Dovecot writes them to a temporary file under home directory.