[postfix-users] lokale User und User aus LDAP gemeinsam verwenden?
Hallo,
ich habe hier einen Mailserver, auf dem die User momentan noch als lokale Unix-User angelegt sind. Desweiteren werden lokale Aliase als Verteilerlisten verwendet. Die Zustellung erfolgt via Procmail. Procmail übergibt die E-Mails dann an den sg. zarafa-dagent (delivery-agent). Dieser wiederum schreibt die Mails dann ins MySQL-Backend des Zarafa-Groupware-Servers.
Da die Zarafa-User sowieso gegen das ActiveDirectory des Domänencontrollers authentifiziert werden, und um sich die Pflege von zwei identischen Benutzer-Datenbanken zu sparen, ist nun geplant auch auf die lokalen Unix-User zu verzichten und langfristig nur noch mit virtuellen Usern über LDAP-Lookup zu arbeiten.
Letzteres ist gut dokumentiert und funktioniert in anderen Installatioen bereits.
Das Problem ist nun folgendes: Bekomme ich es irgendwie hin einen Mischbetrieb aus beiden Varianten zu fahren? D.h. ich möchte zunächst einmal die lokalen Aliase und die lokalen User beibehalten. Gleichzeitig möchte ich aber z.B. weitere Benutzer via LDAP-Lookup aus dem AD "ziehen" können und z.B. auch die Verteilerlisten nach und nach auf LDAP umstellen.
Grundsätzlich sehe ich hierbei das Problem, dass in alle Beispiel-Setups für die LDAP-Lookups immer Virtualusers und Virtualdomains verwendet werden. Wenn ich das richtig verstanden habe, dann müssten die Lookups allerdings im Kontext der Localusers und Localdomains erfolgen.
Geht das überhaupt? Und wenn ja wie? Gibt es evtl. noch eine andere Lösung, die ich übersehen habe? Wie würdet ihr diese Aufgabe lösen?
Bin für jeden Hinweis und Tipp dankbar!
Gruß,
Jörn Bredereck
* Joern Bredereck jb@bw-networx.net:
ich habe hier einen Mailserver, auf dem die User momentan noch als lokale Unix-User angelegt sind. Desweiteren werden lokale Aliase als Verteilerlisten verwendet. Die Zustellung erfolgt via Procmail. Procmail übergibt die E-Mails dann an den sg. zarafa-dagent (delivery-agent). Dieser wiederum schreibt die Mails dann ins MySQL-Backend des Zarafa-Groupware-Servers.
Da die Zarafa-User sowieso gegen das ActiveDirectory des Domänencontrollers authentifiziert werden, und um sich die Pflege von zwei identischen Benutzer-Datenbanken zu sparen, ist nun geplant auch auf die lokalen Unix-User zu verzichten und langfristig nur noch mit virtuellen Usern über LDAP-Lookup zu arbeiten.
Letzteres ist gut dokumentiert und funktioniert in anderen Installatioen bereits.
Das Problem ist nun folgendes: Bekomme ich es irgendwie hin einen Mischbetrieb aus beiden Varianten zu fahren? D.h. ich möchte zunächst
Ja, ein Mischbetrieb ist möglich.
einmal die lokalen Aliase und die lokalen User beibehalten. Gleichzeitig möchte ich aber z.B. weitere Benutzer via LDAP-Lookup aus dem AD "ziehen" können und z.B. auch die Verteilerlisten nach und nach auf LDAP umstellen.
Grundsätzlich sehe ich hierbei das Problem, dass in alle Beispiel-Setups für die LDAP-Lookups immer Virtualusers und Virtualdomains verwendet werden. Wenn ich das richtig verstanden habe, dann müssten die Lookups allerdings im Kontext der Localusers und Localdomains erfolgen.
Postfix prüft die $local_recipient_maps, um lokale User zu identifizieren. Der Standard sieht passwd und aliases-Datei vor:
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
Du kannst da zusätzlich einen LDAP-Lookup reinhängen:
local_recipient_maps = ldap:/etc/postfix/localRecipients.cf proxy:unix:passwd.byname $alias_maps
In der Reihenfolge der maps musst Du Dir klar werden, welche (ldap oder lokal) zuerst konsultiert werden soll. Der erste Match beendet die Abfrage weiterer, nachfolgender maps.
Zusätzlich musst Du darauf achten, dass Postfix im Kontext von $local_recipient_maps nur den localpart einer Mailadresse suchen wird, weil der Namensraum des domainpart über $mydomain bereits festgelegt ist.
Für die Konstruktion der LDAP-Abfrage heißt das mit den Makros spielen, bei query_filter %u und nicht %s verwenden und ggf. den Namen der Domain in den Query mit einbauen, damit die Abfrage auch einen match ergibt.
In jedem Fall solltest Du auf der Kommandozeile mit postmap testen, ob der Query funktioniert bevor Du ihn in Postfix reinhängst:
% postmap -q recipient ldap:/etc/postfix/localRecipients.cf
p@rick
Hallo Patrick,
Am 25.09.10 22:35, schrieb Patrick Ben Koetter:
Postfix prüft die $local_recipient_maps, um lokale User zu identifizieren. Der Standard sieht passwd und aliases-Datei vor:
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
Du kannst da zusätzlich einen LDAP-Lookup reinhängen:
local_recipient_maps = ldap:/etc/postfix/localRecipients.cf proxy:unix:passwd.byname $alias_maps
In der Reihenfolge der maps musst Du Dir klar werden, welche (ldap oder lokal) zuerst konsultiert werden soll. Der erste Match beendet die Abfrage weiterer, nachfolgender maps.
Zusätzlich musst Du darauf achten, dass Postfix im Kontext von $local_recipient_maps nur den localpart einer Mailadresse suchen wird, weil der Namensraum des domainpart über $mydomain bereits festgelegt ist.
Für die Konstruktion der LDAP-Abfrage heißt das mit den Makros spielen, bei query_filter %u und nicht %s verwenden und ggf. den Namen der Domain in den Query mit einbauen, damit die Abfrage auch einen match ergibt.
In jedem Fall solltest Du auf der Kommandozeile mit postmap testen, ob der Query funktioniert bevor Du ihn in Postfix reinhängst:
% postmap -q recipient ldap:/etc/postfix/localRecipients.cf
Danke für deine Erläuterungen. Das klingt logisch und sollte eigentlich funktionieren. In der Praxis habe ich es leider nicht hinbekommen. Wahrscheinlich erwartet Postfix als Search-Result einen Eintrag wie in der /etc/passwd:
zarafa:~# postmap -q rrubic proxy:unix:passwd.byname rrubic:x:1055:1055::/home/rrubic:/bin/sh
Vom Active Directory bekomme ich als Result hingegen nur den Usenamen. Mag sein, dass das bei einem "richtigen" Posix-Schema in einer "richtigen" LDAP-Datenbank klappt, aber zumindest Out-of-the-Box scheint es bei einem Microsoft-AD nicht zu klappen.
Kann natürlich auch sein, dass ich den Query nur falsch definiert habe. Hat denn jemand eine Idee, wie so ein Query aussehen müsste um ein AD zu "befragen", damit Postfix auch etwas damit anfangen kann? Welches Result erwartet "local_recipient_maps" denn genau?
Gruß,
Jörn
* Joern Bredereck jb@bw-networx.net:
Hallo Patrick,
Am 25.09.10 22:35, schrieb Patrick Ben Koetter:
Postfix prüft die $local_recipient_maps, um lokale User zu identifizieren. Der Standard sieht passwd und aliases-Datei vor:
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
Du kannst da zusätzlich einen LDAP-Lookup reinhängen:
local_recipient_maps = ldap:/etc/postfix/localRecipients.cf proxy:unix:passwd.byname $alias_maps
In der Reihenfolge der maps musst Du Dir klar werden, welche (ldap oder lokal) zuerst konsultiert werden soll. Der erste Match beendet die Abfrage weiterer, nachfolgender maps.
Zusätzlich musst Du darauf achten, dass Postfix im Kontext von $local_recipient_maps nur den localpart einer Mailadresse suchen wird, weil der Namensraum des domainpart über $mydomain bereits festgelegt ist.
Für die Konstruktion der LDAP-Abfrage heißt das mit den Makros spielen, bei query_filter %u und nicht %s verwenden und ggf. den Namen der Domain in den Query mit einbauen, damit die Abfrage auch einen match ergibt.
In jedem Fall solltest Du auf der Kommandozeile mit postmap testen, ob der Query funktioniert bevor Du ihn in Postfix reinhängst:
% postmap -q recipient ldap:/etc/postfix/localRecipients.cf
Danke für deine Erläuterungen. Das klingt logisch und sollte eigentlich funktionieren. In der Praxis habe ich es leider nicht hinbekommen.
Was genau hast Du nicht hinbekommen? Klappt der query nicht? Wird nicht zugestellt? Was sagt das log?
Wahrscheinlich erwartet Postfix als Search-Result einen Eintrag wie in der /etc/passwd:
zarafa:~# postmap -q rrubic proxy:unix:passwd.byname rrubic:x:1055:1055::/home/rrubic:/bin/sh
Vom Active Directory bekomme ich als Result hingegen nur den Usenamen. Mag sein, dass das bei einem "richtigen" Posix-Schema in einer "richtigen" LDAP-Datenbank klappt, aber zumindest Out-of-the-Box scheint es bei einem Microsoft-AD nicht zu klappen.
Kann natürlich auch sein, dass ich den Query nur falsch definiert habe. Hat denn jemand eine Idee, wie so ein Query aussehen müsste um ein AD zu "befragen", damit Postfix auch etwas damit anfangen kann? Welches Result erwartet "local_recipient_maps" denn genau?
Postfix erwartet 'ein' Result. Die Tatsache, dass _überhaupt_ ein positives Result existiert wird als "Ja, den Empfänger gibt es" gewertet und Postfix nimmt die Mail daraufhin prinzipiell an (weil der Empfänger existiert).
Wie die Mail dann in die Mailbox kommt, ist eine andere Sache.
p@rick
Hi Joern,
On 25.09.2010 13:10 Joern Bredereck wrote:
auf die lokalen Unix-User zu verzichten und langfristig nur noch mit virtuellen Usern über LDAP-Lookup zu arbeiten.
nur kurz als Gedanke erwähnt: Neben direkten LDAP-Lookups habe ich auch Umgebungen, bei denen ich mit AD-Exports arbeite, die ich regelmäßig auf die Mailgateways schiebe und z.B. bei den relay_recipient_maps benutze. Funktioniert problemlos.
Gruß Markus
participants (3)
-
Joern Bredereck
-
Markus Winkler
-
Patrick Ben Koetter