I wrote:

> If I use userdb passwd-file with the same two files, then sometimes the
> wrong userdb information will be used.

Shortly after reporting this issue, I came across two configuration
solutions for my problem (please read below for details). I haven't
tested the first one yet:

Assume I have the current passdb setup:

  passdb passwd-file {
    args = <snip>/%l.passwd
  }
  passdb passwd-file {
    args = <snip>/virtual.passwd
  }

One way to make it impossible to log in to usernames found in %l.passwd
if the password doesn't match %l.passwd is to add a "deny" passdb:

  passdb passwd-file {
    args = <snip>/%l.passwd
  }
  passdb passwd-file {
    args = <snip>/%l.passwd
    deny = yes
  }
  passdb passwd-file {
    args = <snip>/virtual.passwd
  }

This seems like it should allow users in %l.passwd to log in, but if the
password doesn't match, they'll be denied before an ambiguous username/password
in virtual.passwd is tried.


The solution I settled on, and which I confirmed works for my setup, is
to set the "user=" field in %l.passwd to change IP-based virtual
usernames into fully qualified usernames, and then only use
virtual.passwd for all userdb lookups.

For example, consider username "testguy" in %l.passwd, which also exists
in virtual.passwd. In all cases, for virtual user [EMAIL PROTECTED], I
set up a %l.passwd entry for "testguy" with example.com's IP, and also
an entry in virtual.passwd for "[EMAIL PROTECTED]".

My solution adds "[EMAIL PROTECTED]" to testguy's passwd-file
entry in %l.passwd file.


Now, I can stop using %l.passwd as a userdb file, and all userdb info
for virtual users will be looked up by the fully qualified username in
virtual.passwd. There is no ambiguity when a non-virtual user logs in,
because the per-IP names are always looked up with their canonical
domain even if they match system usernames.


Thanks for your time,
Alan Ferrency
pair Networks, Inc.
[EMAIL PROTECTED]


On Thu, 13 Sep 2007, Alan Ferrency wrote:

> On Mon, 10 Sep 2007, Timo Sirainen wrote:
>
> > On Mon, 2007-09-10 at 11:42 -0400, Alan Ferrency wrote:
>
> (Snip: I use userdb prefetch and a bunch of userdb_* settings in the
> passdb file, and Timo suggested it was not necessary. I then recalled an
> incorrect explanation for why I might have done this...)
>
> > > I think this may have been related to file permissions: we didn't want
> > > to give all users read access to the userdb file after they've logged
> > > in, and prefetching allowed us to limit access to only the login/auth
> > > user. Running an smtpauth port for deliver kind of makes that a moot
> > > point anyway, though, so maybe we can clean things up a bit.
> >
> > Only dovecot-auth process accesses the userdb file.
>
> I now remember (rediscovered) why I had to use userdb prefetch in
> our setup.
>
> I'm using multiple passdb passwd-file files, one of which provides local
> IP based virtual mail hosting. Usernames are not guaranteed to be unique
> across both files.
>
> If I use userdb passwd-file with the same two files, then sometimes the
> wrong userdb information will be used. If I log in to a username which
> is in both the first and second passdb file, and use the password for
> the second passdb's version of the username, it will log in correctly
> but use the username's userdb information in the _first_ userdb file
> that matches (instead of the second).
>
> This is, needless to say, Very Bad. I fixed it using userdb prefetch,
> but I would prefer a better solution.
>
> In this case, our preferred behavior is unambiguous, but I couldn't
> figure out how to configure it. If the username exists in the first
> passdb, but the incorrect password is used, login should be denied,
> instead of checking the second passdb file. The second passdb should
> only be used if the username doesn't exist in the first passdb.
>
> This would avoid the possibility of accidentally using the second passdb
> for login, but the first userdb file for user information, and would
> remove ambiguity from setups such as ours.
>
> Is the current behavior considered correct? Is this configurable to do
> what I need instead?  I didn't find anything addressing it in the wiki.
>
>
> Thanks,
>
> Alan Ferrency
> pair Networks, Inc.
> [EMAIL PROTECTED]
>
>
>
>
>
>

Reply via email to