[Dovecot] Arghh, dovecot-2 and lda

Brandon Lamb brandonlamb at gmail.com
Sun Jul 18 23:37:41 EEST 2010


On Sun, Jul 18, 2010 at 1:33 PM, Timo Sirainen <tss at iki.fi> wrote:
> On 18.7.2010, at 21.28, Brandon Lamb wrote:
>
>> On Sun, Jul 18, 2010 at 1:02 PM, Timo Sirainen <tss at iki.fi> wrote:
>>> On 18.7.2010, at 19.57, Brandon Lamb wrote:
>>>
>>>> In my exim log i just see these
>>>> 2010-07-18 11:51:08 1OaYOJ-0003Vn-2P == brandon at olypen.com
>>>> R=router_pop T=dovecot_deliver defer (2): No such file or directory:
>>>> failed to chdir to maildir:~/maildir:INDEX=~/maildir/dovecot-index
>>>
>>> Actually, there is no such error message in Dovecot code. It's exim that logs this error..
>>
>> Right but that means exim is talking to dovecot-lda because it is
>> getting the maildir:~/maildir value, no way exim could no that unless
>> dovecot told it. So then there SHOULD be a log in debug or deliver
>> from lda if exim got that showing *something* right?
>
> Or is it possible that Exim looks up mail field as a home directory from the database? I think this error happens before dovecot-lda is even run (it's chdiring before running it).

But I thought exim just pipes the mail to dovecot-lda and then
dovecot-lda looks up the user info, home and mail location and
actually writes the file, exim doesnt do any database lookups or am I
totally in the dark?

OH! Well damn, look I have a router_home_directory, so... hm, do I
assume exim passes this to dovecot-lda somehow as an environment
variable or something?

I swear I looked at this like 50 times last night...

router_pop:
    debug_print= "R: dovecot_deliver for $local_part@$domain"
    driver = accept
    transport = dovecot_deliver
    local_parts = mysql; SELECT username FROM SQL_AUTH LEFT JOIN
(SQL_POP) ON (SQL_POP.user_id = SQL_AUTH.user_id) WHERE username =
'${quote_mysql:$local_part}' AND domain = (SELECT IF( STRCMP('',
'${quote_mysql:$domain}'), '${quote_mysql:$domain}', 'olypen.com') )
AND SQL_POP.status != 'disabled'
    router_home_directory = ${lookup mysql {SELECT SQL_POP.maildir
FROM SQL_AUTH LEFT JOIN (SQL_POP) ON (SQL_POP.user_id =
SQL_AUTH.user_id) WHERE username = '${quote_mysql:$local_part}' AND
domain = '${quote_mysql:$domain}' LIMIT 1}}
    user = 8
    group = 8


More information about the dovecot mailing list