Postfix vs. ldap: bad search filter

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
altmetaller
Beiträge: 108
Registriert: 03.02.2017 12:28:41

Postfix vs. ldap: bad search filter

Beitrag von altmetaller » 21.02.2022 09:13:49

Hallo,

ich bemühe mich gerade, mit einem postfix auf einem LDAP-Server nach E-Mail-Aliasen zu suchen.

Die LDAP-Abfrage auf dem postfix funktioniert grundsätzlich:

Code: Alles auswählen

root@mail:/etc/postfix# ldapsearch -D "cn=readonly,ou=people,dc=meine-testdomain,dc=de" -w "yodasfunktioniert" -b "ou=people,dc=meine-testdomain,dc=de" -H ldap://ldap.dmz.tux-net
# extended LDIF
#
# LDAPv3
# base <ou=people,dc=meine-testdomain,dc=de> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# people, meine-testdomain.de
dn: ou=people,dc=meine-testdomain,dc=de
objectClass: organizationalUnit
objectClass: top
ou: people

# hs_jka, people, meine-testdomain.de
dn: uid=hs_jka,ou=people,dc=meine-testdomain,dc=de
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: CourierMailAccount
uid: hs_jka
cn: altmetaller
loginShell: /bin/bash
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/hs_jka
shadowMax: 99999
shadowMin: 1
shadowWarning: 7
shadowInactive: 7
sn: altmetaller
givenName:: SsO2cmc=
mail: hs_jka@meine-testdomain.de
mail: ichbin.altmetaller@meine-testdomain.de
mail: test@meine-testdomain.de
shadowLastChange: 18781
userPassword:: hierstehteinpassworthashichhoffeesistderrichtige=
disableimap: 0
disablepop3: 0
disablewebmail: 0
disableshared: 0

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2
root@mail:/etc/postfix#
In der /etc/postfix/main.cf verweise ich auf die LDAP-Konfiguration...

Code: Alles auswählen

root@mail:/etc/postfix# cat main.cf | grep alias_maps
alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf
root@mail:/etc/postfix# 
...welche wie folgt aussieht:

Code: Alles auswählen

server_host = ldap.dmz.tux-net
search_base = dc=meine-testdomain,dc=de
query_filter = (&(mail=%s)(paid_up=true))
bind_dn = cn=readonly,ou=people,dc=meine-testdomain,dc=de
bind_pw = yodasfunktioniert
Im Anschluss versuche ich, eine E-Mail zuzustellen:

Code: Alles auswählen

jka@cleversophie:~$ swaks --to test@meine-testdomain.de --server mail.dmz.tux-net
=== Trying mail.dmz.tux-net:25...
=== Connected to mail.dmz.tux-net.
<-  220 mail.localdomain ESMTP Postfix (Debian/GNU)
 -> EHLO cleversophie
<-  250-mail.localdomain
<-  250-PIPELINING
<-  250-SIZE 10240000
<-  250-VRFY
<-  250-ETRN
<-  250-STARTTLS
<-  250-AUTH DIGEST-MD5 CRAM-MD5 NTLM LOGIN PLAIN
<-  250-AUTH=DIGEST-MD5 CRAM-MD5 NTLM LOGIN PLAIN
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250-DSN
<-  250-SMTPUTF8
<-  250 CHUNKING
 -> MAIL FROM:<jka@cleversophie>
<-  250 2.1.0 Ok
 -> RCPT TO:<test@meine-testdomain.de>
<** 550 5.1.1 <test@meine-testdomain.de>: Recipient address rejected: User unknown in local recipient table
 -> QUIT
<-  221 2.0.0 Bye
=== Connection closed with remote host.
Auf dem postfix bekomme ich (natürlich) eine aussagekräftige Fehlermeldung:

Code: Alles auswählen

Feb 21 07:55:43 mail postfix/smtpd[18167]: connect from cleversophie.lan.tux-net[192.168.71.80]
Feb 21 07:55:43 mail postfix/smtpd[18167]: warning: dict_ldap_lookup: Search error -7: Bad search filter 
Feb 21 07:55:43 mail postfix/smtpd[18167]: warning: ldap:/etc/postfix/ldap-aliases.cf lookup error for "test@meine-testdomain.de"
Feb 21 07:55:43 mail postfix/smtpd[18167]: NOQUEUE: reject: RCPT from cleversophie.lan.tux-net[192.168.71.80]: 451 4.3.0 <test@meine-testdomain.de>: Temporary lookup failure; from=<jka@cleversophie> to=<test@meine-testdomain.de> proto=ESMTP helo=<cleversophie>
Feb 21 07:55:43 mail postfix/smtpd[18167]: disconnect from cleversophie.lan.tux-net[192.168.71.80] ehlo=1 mail=1 rcpt=0/1 quit=1 commands=3/4
Kurzum: "Er" meckert über den query_filter. Nur - warum?

Der Filter stammt zugegebenermaßen 1:1 aus der manpage, deckt sich aber mit den Gegebenheiten. Da ich irgendwie so gar nichts zu dem paid_up Ausdruck finde, lasse ich diesen testweise weg:

Code: Alles auswählen

server_host = ldap.dmz.tux-net
search_base = dc=meine-testdomain,dc=de
query_filter = mail=%s
bind_dn = cn=readonly,ou=people,dc=meine-testdomain,dc=de
bind_pw = yodasfunktioniert
Ergebnis der Änderung: Der LDAP-Server wird jetzt offenbar gar nicht mehr befragt:

Code: Alles auswählen

Feb 21 08:06:10 mail postfix/smtpd[19079]: connect from cleversophie.lan.tux-net[192.168.71.80]
Feb 21 08:06:10 mail postfix/smtpd[19079]: NOQUEUE: reject: RCPT from cleversophie.lan.tux-net[192.168.71.80]: 550 5.1.1 <test@meine-testdomain.de>: Recipient address rejected: User unknown in local recipient table; from=<jka@cleversophie> to=<test@meine-testdomain.de> proto=ESMTP helo=<cleversophie>
Feb 21 08:06:10 mail postfix/smtpd[19079]: disconnect from cleversophie.lan.tux-net[192.168.71.80] ehlo=1 mail=1 rcpt=0/1 quit=1 commands=3/4
Lange Rede, kurzer Sinn - ich gebe gerne zu, dass ich momentan hoffnungslos überfordert bin. Vielleicht mag mir ja jemand 'n Schubs in die richtige Richtung geben?

Gruß,
Jörg

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Postfix vs. ldap: bad search filter

Beitrag von bluestar » 21.02.2022 09:25:27

Ich kenne Postfix zwar nicht wirklich gut, dennoch könntest du es mal mit (&(objectclass=CourierMailAccount)(mail=%s)) als query_filter verwenden.
Ein Filter komplett ohne Einschränkungen auf objectclass sieht für mich ein bißchen komisch aus.

Colttt
Beiträge: 2987
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Postfix vs. ldap: bad search filter

Beitrag von Colttt » 23.02.2022 09:18:09

ich glaube da fehlt noch

Code: Alles auswählen

result_attribute = mail
Debian-Nutzer :D

ZABBIX Certified Specialist

altmetaller
Beiträge: 108
Registriert: 03.02.2017 12:28:41

Re: Postfix vs. ldap: bad search filter

Beitrag von altmetaller » 24.02.2022 09:04:59

Hallo,

lieben Dank - der ist zwingend erforderlich :-)

Zudem gibt es paid_up nicht. Ich war davon ausgegangen, dass das irgendeine ominöse Option ist. Darauf, dass es sich um ein Attribut handeln könnte, bin ich nicht gekommen…

Liebe Grüße,
Jörg

Antworten