LDAP multiple values attributes filter

emailldapopenldappostfix

Can't find same question, but I think it's regular issue. I have LDAP user:

dn: uid=alise,ou=peoples,dc=acme,dc=com
objectClass: inetOrgPerson
objectClass: top
cn: alise
sn: alise
uid: alise
userPassword: {SCHEME}password
mail: alise@domain1.tld
mail: alise@domain2.tld
mailAlias: bill@domain1.tld
mailAlias: bill@domain2.tld

I need to return mail attribute, but filtered by domain. For example if I search:

ldapsearch -xLLL -b ou=peoples,dc=withsound,dc=ru '(mailAlias=bill@domain1.tld)' mail

I get:

dn: uid=alise,ou=peoples,dc=acme,dc=com
mail: alise@domain1.tld
mail: alise@domain2.tld

But I need something like:

ldapsearch -xLLL -b ou=peoples,dc=withsound,dc=ru '(mailAlias=bill@domain1.tld)' mail=*domain1.tld


dn: uid=alise,ou=peoples,dc=acme,dc=com
mail: alise@domain1.tld

I can't simply use | grep domain1.tld cause I use LDAP search in Postfix

I really don't want to separate user and make only one email field…

Best Answer

A search term like this should help:

(&(mailAlias=bill@domain1.tld)(mail=*domain1.tld))

LDAP search terms get combined like this:

(Operator(filter)(filter)(filter)...)

with Operator being & (AND), | (OR) and ! (NOT).