Postfix + OpenLDAP mailAlternateAddress nem szeresse de miért?

 ( pista_ | 2018. július 11., szerda - 16:47 )

Hi!

Felhasználók LDAP-ban, postfix a mail és mailForwardingAddress megy rendesen, de a mailAlternateAddress nem akaródzik. A felhasználó:

========================================================
dn: uid=szistvan,ou=Users,dc=cegnev,dc=hu
mail: 
mailAlternateAddress: 
mailAlternateAddress: 
======================================================

Készítettem egy /etc/postfix/teszt.cf-t aminek a tartalma:

==================
version = 3
server_host = 10.1.1.2
search_base = dc=cegnev,dc=hu
query_filter = (|(uid=%u)(mail=%s)(mailAlternateAddress=%s))
result_attribute = mailAlternateAddress
debuglevel = 1
====================

Aztán lássuk a "sima" tesztet úgy, ahogy a mailban szerepel, és így működik:

===================================
postmap -vq  ldap:/etc/postfix/teszt.cf

postmap: dict_ldap_connect: Successful bind to server ldap://10.1.1.2:389 with dn empty or implicit
postmap: dict_ldap_connect: Cached connection handle for LDAP source /etc/postfix/teszt.cf
postmap: dict_ldap_lookup: /etc/postfix/teszt.cf: Searching with filter (|(uid=szabo.istvan)(mail=szabo.istvan@cegnev.hu)(mailAlternateAddress=szabo.istvan@cegnev.hu))
postmap: dict_ldap_debug: ldap_search_ext
postmap: dict_ldap_debug: put_filter: "(|(uid=szabo.istvan)(mail=szabo.istvan@cegnev.hu)(mailAlternateAddress=szabo.istvan@cegnev.hu))"
postmap: dict_ldap_debug: put_filter: OR
postmap: dict_ldap_debug: put_filter_list "(uid=szabo.istvan)(mail=szabo.istvan@cegnev.hu)(mailAlternateAddress=szabo.istvan@cegnev.hu)"

[...]

postmap: dict_ldap_get_values[1]: search returned 2 value(s) for requested result attribute mailAlternateAddress
postmap: dict_ldap_debug: ldap_next_attribute
postmap: dict_ldap_get_values[1]: Leaving dict_ldap_get_values
postmap: dict_ldap_lookup: Search returned ,istvan.szabo@cegnev.hu
postmap: dict_ldap_debug: ldap_msgfree
,istvan.szabo@cegnev.hu
=====================================================

Remek! Most pedig keressük a nem működőt:

=============================================
<strong>postmap -vq  ldap:/etc/postfix/teszt.cf</strong>

postmap: dict_ldap_connect: Successful bind to server ldap://10.1.1.2:389 with dn empty or implicit
postmap: dict_ldap_connect: Cached connection handle for LDAP source /etc/postfix/teszt.cf
postmap: dict_ldap_lookup: /etc/postfix/teszt.cf: Searching with filter (|(uid=istvan.szabo)(mail=istvan.szabo@cegnev.hu)(mailAlternateAddress=istvan.szabo@cegnev.hu))
postmap: dict_ldap_debug: ldap_search_ext
postmap: dict_ldap_debug: put_filter: "(|(uid=istvan.szabo)(mail=istvan.szabo@cegnev.hu)(mailAlternateAddress=istvan.szabo@cegnev.hu))"
postmap: dict_ldap_debug: put_filter: OR
postmap: dict_ldap_debug: put_filter_list "(uid=istvan.szabo)(mail=istvan.szabo@cegnev.hu)(mailAlternateAddress=istvan.szabo@cegnev.hu)"

[...]

postmap: dict_ldap_get_values[1]: Search found 0 match(es)
postmap: dict_ldap_get_values[1]: Leaving dict_ldap_get_values
postmap: dict_ldap_lookup: Search returned nothing
postmap: dict_ldap_debug: ldap_msgfree
postmap: dict_ldap_close: Closed connection handle for LDAP source /etc/postfix/teszt.cf
=============================================================================================

Na de miért nem találja??

Nézzük akkor ugyaninnen egy ldap kereséssel:

=====================
ldapsearch -H ldap://10.1.1.2 -x -D "cn=admin,dc=cegnev,dc=hu" -W -b "dc=cegnev,dc=hu" -LLL "(uid=*)" mailalternateaddress

dn: uid=szistvan,ou=Users,dc=cegnev,dc=hu
mailAlternateAddress: 
mailAlternateAddress: 
=====================================================

Esetleg valakinek ötlete, hogy mit merre nézzek, mit nézek be de csúnyán?

Előre is köszönök minden ötletet!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

valami hianyzik meg a teljes kephez. A 1. query-ben uid=szabo.istvan szerepel, a 2-ban mar uid=istvan.szabo, viszont a legalso eredmenyek kozott meg uid=szistvan.

Azt meg csak zarojelben mondom, hogy az uid inkabb numerikus id-t kene adjon. Egy normalis semaban a dn inkabb kb. cn=....,ou=....,dc=....,dc=... -szeru lenne...

--
"dolgozni mar reg nem akarok" - HZuid_7086 'iddqd' zoli berserk mode-ba kapcsol

A query_filter imigyen néz ki:

========
query_filter = (|(uid=%u)(mail=%s)(mailAlternateAddress=%s))
=========

Ez alapján keresne és ezért szerepel az uid a keresésekben. Vagy csak félreértettelek....

A "a legalso eredmenyek kozott meg uid=szistvan", melyik sorokra gondolsz?

Tudnal mutatni egy olyan ldapsearch eredmenyt, ahol ugyanaz a kereses (bindDN, filter) van, mint amit a postfixnek konfiguraltal? Ugye nem a rootDN (-nek latszo bindDN)-t hasznalod a postfixnel? Az adott LDAP attributum olvashato a test.cf-ben megadott bindDN-nel? edit: az utolso kerdes irrelevans, mert kaptal vissza ilyet a tobbi keresesnel.

Sima ldapsearch mit mond a query-re?
Lehet nincs joga olvasni a mailAlternateAddress property-t, csak bizonyos csillagalallas alatt.
Lehet a mailAlternateAddress property nem multi select a schema szerint.

Közeledünk.... az LDAP szerveren közvetlenül, minden "sallang" nélkül:

=====================
ldapsearch -x mail=szabo.istvan@cegnev.hu

dn: uid=szistvan,ou=Users,dc=cegnev,dc=hu
mail: 
[..]
mailAlternateAddress: 
mailAlternateAddress: 
==========================

Majd próbálom a "nem működőt":

===============================
ldapsearch -x mailAlternateAddress=istvan.szabo@cegnev.hu

# extended LDIF
#
# LDAPv3
# base  (default) with scope subtree
# filter: mailAlternateAddress=istvan.szabo@cegnev.hu
# requesting: ALL
#

# search result
search: 2
result: 0 Success

# numResponses: 1
============================

Akkor lássuk a jogosultságokat:

==================
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config '(olcDatabase={1}mdb)' olcAccess
dn: olcDatabase={1}mdb,cn=config
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=loginShell,gecos by dn="cn=admin,dc=cegnev,dc=hu" write by self write by * read
olcAccess: {2}to attrs=shadowLastChange by self write by * read
olcAccess: {3}to * by * read
================================

A legutolsó sor - ha jól értem - olvasásra mindent engedélyez(ne).

A loglevelt felvettem 256-ra, de ekkor is csak ennyit látok:

================================
ul 13 17:34:25 as-new-mail slapd[27810]: conn=206515 fd=33 ACCEPT from IP=127.0.0.1:45660 (IP=127.0.0.1:389)
Jul 13 17:34:25 as-new-mail slapd[27810]: conn=206515 op=0 BIND dn="" method=128
Jul 13 17:34:25 as-new-mail slapd[27810]: conn=206515 op=0 RESULT tag=97 err=0 text=
Jul 13 17:34:25 as-new-mail slapd[27810]: conn=206515 op=1 SRCH base="dc=cegnev,dc=hu" scope=2 deref=0 filter="(mailAlternateAddress=istvan.szabo@cegnev.hu)"
Jul 13 17:34:25 as-new-mail slapd[27810]: conn=206515 op=1 SEARCH RESULT tag=101 err=0 nentries=0 text=
Jul 13 17:34:25 as-new-mail slapd[27810]: conn=206515 op=2 UNBIND
Jul 13 17:34:25 as-new-mail slapd[27810]: conn=206515 fd=33 closed
=========================================

Amit írsz, esetleges jogosultsági problémát értem, de esetleg tudnál abban segíteni, hogy ezt hogyan tudom lecsekkolni? Sajnos ilyen mélyen nem szakértem az LDAP-ot.

Előre is köszönöm!