[Dovecot] %d interpolation problem fixed
will at spanner.org
Sat Jan 21 20:50:00 EET 2006
The QuestionsAndAnswers page on the wiki is immutable, but the
configuration it gives for vpopmail users is wrong. how would I go
about correcting it, please?
On 18 Jan 2006, at 02:33, William Ross wrote:
> On 6 Dec 2005, at 17:21, Timo Sirainen wrote:
>> On Tue, 2005-12-06 at 17:11 +0000, William Ross wrote:
>>> On 6 Dec 2005, at 16:51, Timo Sirainen wrote:
>>>> On Fri, 2005-10-28 at 17:52 +0200, Riccardo Bini wrote:
>>>>>> I just wrote this: http://wiki.dovecot.org/Quota
>>>>> Well... but you have to correct %n with vpopmail backend. %u in
>>>>> default_mail_env (like in the log) is always the user name without
>>>> That's a bug in Dovecot's vpopmail code. I don't know why it
>>>> work. Would be nice if someone using vpopmail fixed that..
>>> point me in the right direction and I'll have a go.
>> If user logs in as user at domain, then they both should be in
>> request->user string. %d is taken from there. I don't see request-
>> being modified in that file either, so I think it should have
> I finally got round to working on this. I'm a perl programmer, and
> it has all been very educational, so please bear with me :)
> I was stuck because the domain name was not interpolated into the
> Maildir path, when using the configuration recommended here:
> It turns out that the answer is really simple. You don't need to
> supply a default_mail_env parameter with vpopmail and dovecot v1.x.
> Indeed, you shouldn't: the path to the maildir is retrieved from
> vpopmail and if you specify default_mail_env then it will be used
> in place of that correct value. Also, it will be used wrongly, as
> there is also an interpolation bug, and %d isn't replaced correctly.
> The code in passdb-vpopmail and userdb-vpopmail works perfectly, by
> the way: the login email address is parsed correctly, the
> vpopmail hookup is correct, and the vqpasswd struct that is
> returned by vpopmail_lookup_vqp contains all the right values. eg
> (these are debugging-for-dummies lines that I've scattered
>> dovecot: Jan 17 22:51:42 Info: auth(default): *
>> vpopmail_verify_plain: now vpop_user = sysadmin, vpop_domain =
>> spanner.org, request->user = sysadmin at spanner.org, vpw->pw_dir = /
> in the callback method I got this tab-separated auth_reply_stream:
>> dovecot: Jan 18 00:30:01 Info: auth(default): userdb_callback str:
>> USER 2 sysadmin uid=7797 gid=2109 home=/home/
> but I still saw these lines later:
>> dovecot: Jan 18 01:31:46 Info: imap(sysadmin): maildir: root=/home/
>> vpopmail/domains//sysadmin/Maildir, index=/home/vpopmail/domains//
>> sysadmin/Maildir, control=, inbox=
> I became suspicious, and tested with nonsense values in
> default_mail_env: sure enough i got the same thing. During the
> userdb stage we have the correct path to the maildir, but later on
> we see a different value derived from the nonsense configuration
> I've just entered. I guess that we're getting the initial value
> from vpopmail and try the same thing but with no default_mail_env
> entry at all. It works perfectly. I say some new words I have
> learned from my wife.
> I don't know where the failure lies, but I can tell you that the
> 'user' value passed to get_var_expand_table (which comes from getenv
> ("USER")) contains only the first part of the email address. That's
> probably not the intention, because get_var_expand_table then tries
> to split it on @.
> As it happens the home-directory value is passed to
> get_var_expand_table as the expansion for %h, so this works too, in
> a completely redundant way:
> default_mail_env = maildir:%h
> I've tested this with an new tarball of 1.0.beta1 and it works fine
> - with the configuration change - so if this all sounds sane to you
> then I'll update the wiki.
>  under vpopmail the maildir for the address brian at domain.com
> usually lives somewhere like: /home/vpopmail/domains/domain.com/
>  in order to disambiguate usernames, vpopmail has you log in
> with your full email address as the user id. dovecot would
> therefore need to split the email address and interpolate the
> fragments into the maildir path to get to the right place. however,
> the vpopmail password file also specifies the maildir for each
> user, which i guess is what dovecot is using now.
More information about the dovecot