[Dovecot] [BUG?] LDAP authentication with aliases issues

Paweł Lęcznar maillistpld at gmail.com
Sun Jul 31 23:48:16 EEST 2011


Hello,

I am trying to configure Dovecot with LDAP authentication. My LDAP tree 
structure is as following:
     dc=root,dc=pl
      \_ ou=Users
         \_ uid=test
      \_ ou=Mail
         \_ ou=domain.pl
            \_ uid=alias_to_test

I cannot authenticate using 
'uid=alias_to_test,ou=domain.pl,ou=Mail,dc=root,dc=pl'. If I try to 
authenticate using 
'uid=alias_to_test,ou=domain.pl,ou=Mail,dc=root,dc=pl', following entry 
appears in the Dovecot's log file:

#v+
auth: Debug: client in: AUTH    1       PLAIN   service=imap    secured 
lip=127.0.0.1   rip=127.0.0.1   lport=993       rport=59818     
resp=YWxpYXMxQGFsaWFzeS5wbABhbGlhczFAYWxpYXN5LnBsAGFzZHF3ZWFzZA==
auth: Debug: ldap(alias_to_test at domain.pl,127.0.0.1): pass search: 
base=uid=alias_to_test,ou=domain.pl,ou=Mail,dc=root,dc=pl scope=base 
filter=(&(objectClass=posixAccount)) fields=uid,userPassword
auth: Debug: auth(alias_to_test at domain.pl,127.0.0.1): username changed 
alias_to_test at domain.pl -> test
auth: Debug: ldap(test,127.0.0.1): result: uid(user)=test 
userPassword(password)={CRYPT}ACnZvF4.K46UI
auth: Debug: client out: OK     1       user=test
auth: Debug: ldap(test,127.0.0.1): user search: 
base=uid=test,ou=,ou=Mail,dc=root,dc=pl scope=base 
filter=(&(objectClass=posixAccount)(uid=test)) 
fields=homeDirectory,uidNumber,gidNumber
auth: Debug: master out: FAIL   2551840769
#v-


In the LDAP server log file, following entries appear during 
authentication attempt

#v+
ldap slapd[11729]: conn=1125 op=0 BIND dn="cn=Manager,dc=root,dc=pl" 
method=128
ldap slapd[11729]: conn=1125 op=0 BIND dn="cn=Manager,dc=root,dc=pl" 
mech=SIMPLE ssf=0
ldap slapd[11729]: conn=1125 op=0 RESULT tag=97 err=0 text=
ldap slapd[11729]: conn=1125 op=1 SRCH 
base="uid=alias_to_test,ou=domain.pl,ou=Mail,dc=root,dc=pl" scope=0 
deref=3 filter="(&(objectClass=posixAccount))"
ldap slapd[11729]: conn=1125 op=1 SRCH attr=uid userPassword
ldap slapd[11729]: conn=1125 op=1 SEARCH RESULT tag=101 err=0 nentries=1 
text=
ldap slapd[11729]: conn=1125 op=2 do_search: invalid dn: 
"uid=test,ou=,ou=Mail,dc=root,dc=pl"
ldap slapd[11729]: conn=1125 op=2 SEARCH RESULT tag=101 err=34 
nentries=0 text=invalid DN
#v-

It seems that LDAP AuthDatabase doesn't change the context when looking 
up for the target object, to which the alias points. Futhermore, the 
filter for the target object '(&(objectClass=posixAccount)(uid=test))' 
was not defined by me anywhere in the configuration file 'dovecot-ldap.ext'.
I have tried both authentication ways: 'password lookups' and 
'authentication binding' with the same result. However, There is no 
problem to authenticate as 'uid=test,ou=Users,dc=root,dc=pl' (of cource 
after modifying the configuration file listed at the end).

I suppose that it can be a bug in LDAP AuthDatabase, so I am writing 
this post as a potential bug report.


Below are my configuration data:
***************
# dovecot -n
# 2.0.13: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.38.8-1 x86_64
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login
auth_socket_path = /var/run/dovecot/auth-userdb
auth_verbose = yes
auth_verbose_passwords = plain
listen = *
mail_debug = yes
mail_gid = 2000
mail_uid = 2000
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope 
encoded-character vacation subaddress comparator-i;ascii-numeric 
relational regex imap4flags copy include variables body enotify 
environment mailbox date
passdb {
   args = /etc/dovecot/dovecot-ldap.conf.ext
   driver = ldap
}
plugin {
   sieve = ~/.dovecot.sieve
   sieve_dir = ~/sieve
}
postmaster_address = postmaster at domain.pl
protocols = imap pop3 sieve
service auth {
   unix_listener /var/spool/postfix/private/auth {
     mode = 0666
   }
   unix_listener auth-userdb {
     group = vmail
     mode = 0600
     user = vmail
   }
}
service imap-login {
   inet_listener imap {
     port = 143
   }
   inet_listener imaps {
     port = 993
     ssl = yes
   }
}
service pop3-login {
   inet_listener pop3 {
     port = 110
   }
   inet_listener pop3s {
     port = 995
     ssl = yes
   }
}
ssl = required
ssl_cert = </etc/openssl/certs/vmail.pem
ssl_key = </etc/openssl/private/vmail.key
userdb {
   args = /etc/dovecot/dovecot-ldap.conf.ext
   driver = ldap
}
verbose_ssl = yes

***************
# cat /etc/dovecot/dovecot-ldap.ext
uris = ldap://X.Y.Z.V/
dn = cn=Manager,dc=root,dc=pl
dnpass = password
auth_bind = no
ldap_version = 3
base = uid=%n,ou=%d,ou=Mail,dc=root,dc=pl
deref = always
scope = base
pass_attrs = uid=user,userPassword=password
pass_filter = (&(objectClass=posixAccount))
default_pass_scheme = CRYPT


More information about the dovecot mailing list