Hello, Thanks. Please ignore LDAP here. Whatever attribute names they are, it's just a sample here.
I read the link ldap_table-5. The problem is that there is no way to return one value of an attribute based on the user's input domain. Because of configuration item result_attribute = displayName, initials It returns both. e.g postmap -q 'u...@abc.com' ldap://xxx I want it to return the `user` part and domain part based on the user's input. However, it does the job like, # pseudo code ldapsearch -h -.... (|(displayName=%s)(initials=%s)) displayName, initials Appartmently it returns the values of displayName, initials respectively. Thanks, -hongquan On Tue, Dec 13, 2022 at 11:23:55 AM +0800, luckydog xf wrote: > # Here is my ldap query > bind = no > version = 3 > server_host = ldap://172.16.232.201:389 > start_tls = no > search_base = cn=users,cn=accounts,dc=ipa,dc=pthl,dc=hk > scope = sub > query_filter = (|(displayName=%s)(initials=%s)) > result_attribute = displayName, initials > result_format = %s In a well-designed email LDAP schema there are two single-valued valued attributes for each user (atribute names may vary, but the semantics remain the same): * mail - primary (canonical) email address of the user * mailRoutingAddress (sometimes "maildrop", ...) - The routing address of the underlying mailbox. There are then also frequently multi-valued attributes that hold one or more email addresses under which the user receives mail: * mailAlternateAddress (or with "smtp:" prefix proxyAddresses, ...) - All or additional to "mail" addresses. See LDAP_README for examples. https://www.postfix.org/LDAP_README.html > How to return the only one based on query input? E.g when the user's > input is u...@abc.com, it returns u...@abc.com, vice versa. See ldap_table(5) for the supported result format syntax, this describes some selectors based on the key rather than the lookup result https://www.postfix.org/ldap_table.5.html -- Viktor. On Tue, Dec 13, 2022 at 11:15 AM luckydog xf <luckydo...@gmail.com> wrote: > # Here is my LDAP > bind = no > version = 3 > server_host = ldap://172.16.232.201:389 > start_tls = no > search_base = cn=users,cn=accounts,dc=ipa,dc=pthl,dc=hk > scope = sub > > query_filter = (|(displayName=%s)(initials=%s)) > > result_attribute = displayName, initials > > result_format = %s > > # my ldap > displayName and initials are two different email addresses. One is > u...@abc.com, while the other is u...@xyz.com. > > I use postmap -q 'u...@abc.com', it returns two addresses. > How to return the only one based on query input ? > >