I'm trying to use auth bind to avoid having a plain text password in a
config file.  With %u instead of %n, the @domain part of the login
ends up in the uid field of the search filter.  As I said, my OUs have
overlapping users, so I have configured things such that the users are
logging in with user@domain,  and need to get the domain component
into the search base as you cannot filter on an Organizational Unit
in an ldap filter.  If I have a single search base, it will return
multiple users for those %ns that overlap.  If I use %u, it will
return no users for any account, because the uids do not have the
@domain in them.  I tried both ways. 

Luke

On Mon, Aug 31, 2020 at 09:45:17PM +0200, Marc Roos wrote:
> You have two ways of authenticating against ldap. I decided to use the 
> method where a single account has access to the user credentials. 
> (Advantage of this method, you can limit ldap lookups eg do not have to 
> do 2nd for the userdb)
> 
> debug_level = 1
> uris = ldaps://ldap.local:8443
> dn = cn=aaaa,cn=bbbbb,ou=ccccc,dc=dddd,dc=eeee,dc=local
> dnpass = xxxx
> base = ou=asdfadsfa,ou=hhhh,ou=ggg,dc=fffff,dc=eeee,dc=local
> scope = subtree
> 
> user_filter = (&(objectClass=posixAccount)(uid=%u)
> pass_attrs = 
> uid=user,userPassword=password,host=host,homeDirectory=userdb_home,uidNu
> mber=userdb_uid,gidNumber=userdb_gid
> 
> However I did not have any issues authenticating against ldap with yours 
> also. But using the %u
> 
> 
> 
> 
> 
> -----Original Message-----
> From: Luke Schierer [mailto:luke-dove...@schierer.org] 
> Sent: maandag 31 augustus 2020 21:32
> To: dovecot@dovecot.org
> Subject: using %d as a variable in the ldap search base
> 
> Hi,
> 
> I'm trying to configure dovecot to use LDAP authentication directly, and 
> I'm having a bit of trouble.  I have a somewhat unusual setup, in that I 
> have an LDAP directory that has 3 OUs each of which have their own set 
> of users, some of which overlap.  As I was trying to figure things out, 
> I was setting the search base in my /etc/dovecot/dovecot-ldap.conf.ext 
> file which is referenced by /etc/dovecot/conf.d/auth-ldap.conf.ext  file 
> to
> 
> base = ou=%d,dc=thecrazyguys,dc=net
> 
> however, the resulting searches against the directory endup just 
> dropping the %d, resulting in
> 
> ou=,dc=thecrazyguys,dc=net 
> 
> which is invalid.  On a whim, I tried a search base of
> 
> base = dc=%d,dc=thecrazyguys,dc=net
> 
> and found that it did correctly substitute in the variable, which would 
> be correct, except that my ldap tree is set up with OUs and not an extra 
> DC segment.
> 
> for whatever reason, it will do variable substitution for dc=%d, but not 
> for ou=%d. this is certainly not documented, and seems like wrong 
> behavior, since having an ou in a search base is valid.
> 
> I'm including configuration information below.  Please let me know if 
> I've missed including information that is required. 
> 
> Thanks!
> Luke
> 
> 
> luke@schierer@littera001:/etc/dovecot$ lsb_release -rd
> Description: Ubuntu 18.04.5 LTS
> Release: 18.04
> luke@schierer@littera001:/etc/dovecot$
> 
> luke@schierer@littera001:/etc/dovecot$ dpkg -l | grep -i dovecot ii 
> dovecot-core 1:2.2.33.2-1ubuntu4.6 amd64 ii dovecot-imapd 
> 1:2.2.33.2-1ubuntu4.6 amd64 ii dovecot-ldap 1:2.2.33.2-1ubuntu4.6 amd64 
> ii dovecot-pop3d 1:2.2.33.2-1ubuntu4.6 amd64 
> luke@schierer@littera001:/etc/dovecot$
> 
> root@littera001:/etc/dovecot# dovecot -n # 2.2.33.2 (d6601f4ec): 
> /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.21 (92477967) # OS: 
> Linux 4.15.0-112-generic x86_64 Ubuntu 18.04.5 LTS auth_verbose = yes 
> first_valid_uid = 1001 imap_hibernate_timeout = 100 secs lock_method = 
> dotlock mail_cache_min_mail_count = 15 mail_fsync = always mail_location 
> = maildir:~/Maildir:LAYOUT=fs:INDEX=MEMORY
> mail_nfs_index = yes
> mail_nfs_storage = yes
> mail_privileged_group = mail
> mailbox_list_index = yes
> maildir_broken_filename_sizes = yes
> maildir_very_dirty_syncs = yes
> mbox_min_index_size = 10 B
> mmap_disable = yes
> namespace inbox {
>   inbox = yes
>   location =
>   mailbox Drafts {
>     special_use = \Drafts
>   }
>   mailbox Junk {
>     special_use = \Junk
>   }
>   mailbox Sent {
>     special_use = \Sent
>   }
>   mailbox "Sent Messages" {
>     special_use = \Sent
>   }
>   mailbox Trash {
>     special_use = \Trash
>   }
>   prefix =
>   separator = /
> }
> passdb {
>   args = /etc/dovecot/dovecot-ldap.conf.ext
>   driver = ldap
> }
> protocols = " imap pop3"
> ssl_cert = </etc/dovecot/dovecot.pem
> ssl_key =  # hidden, use -P to show it
> userdb {
>   args = /etc/dovecot/dovecot-ldap.conf.ext
>   driver = ldap
> }
> protocol imap {
>   mail_max_userip_connections = 20
> }
> root@littera001:/etc/dovecot# 
> 
> root@littera001:/etc/dovecot# cat /etc/dovecot/dovecot-ldap.conf.ext | 
> grep -v ^# | uniq | more
> 
> hosts = censor001.plerumque.thecrazyguys.net
> 
> tls = yes
> tls_require_cert = allow
> 
> debug_level = 4
> 
> auth_bind = yes
> 
> base = ou=%d,dc=thecrazyguys,dc=net
> 
> scope = subtree
> 
> user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid
> 
> user_filter = (&(objectClass=posixAccount)(uid=%n))
> 
> blocking = no
> root@littera001:/etc/dovecot# 
> 
> 

Reply via email to