[postfix-users] LDAP Lookup

Stefan Förster cite+de-postfix-users at incertum.net
Fr Jun 27 14:00:00 CEST 2008


* Steffen Krick <Steffen.Krick at gmx.de> wrote:
>> Postifx soll die lokalen Benutzer aus einem LDAP Verzeichnis suchen.
>> Die Abfrage  postmap -q "ricky at gesotec.local"
>> ldap://etc/postfix/ldap/local_recipients.cf liefert das Ergebnis
>> "ricky".
>> 
>> Die Mails für ricky können dann anschließend aber nicht ins Maildir
>> eingeliefert werden.  Folgende Fehlermeldung aus dem Log:
>> [...]
>>> Die UserID 30001 gehört zu ricky.
>> 
>> anscheinend kennt PAM den User mit der ID 30001 nicht. Wenn Du mit
>> getent passwd nach ricky oder 30001 suchst, findet er da das
>> Home-DIrecotry des Users?
>> 
> 
> gentent liefert folgendes.
> 
> skr at gdasvr55:~$ getent passwd ricky
> ricky:x:30001:513:Richard M,,,,:/home/ricky:/bin/bash

Somit halten wir als wichtigstes Ergebnis dieses sonnigen
Freitagmorgens einmal fest: Ich bin ein Trottel.

Danach kann ich Dir dann sagen, daß die Meldung von dovecot, genauer
dem deliver-Programm stammt. Dieses wird mit der UID 30001 gestartet
und führt folgenden Code aus:

,----
| process_euid = geteuid();
| if (destination != NULL)
|         user = destination;
| else if (process_euid != 0) {
|         /* we're non-root. get our username and possibly our home. */
|         struct passwd *pw;
|
|         pw = getpwuid(process_euid);
|         if (pw != NULL) {
|                 user = t_strdup(pw->pw_name);
|                 if (getenv("HOME") == NULL)
|                         env_put(t_strconcat("HOME=", pw->pw_dir, NULL));
|         } else if (user == NULL) {
|                 i_fatal_status(EX_USAGE,
|                                "Couldn't lookup our username (uid=%s)",
|                                dec2str(process_euid));
|         }
| } else {
|         i_fatal_status(EX_USAGE,
|                 "destination user parameter (-d user) not given");
| }
`----

Als zweites Ergebnis nehmen wir also mit, daß die 30001 korrekt beim
Aufrunf von geteuid(2) zurückgegeben wird, der Aufruf von getpwuid(2)
für die 30001 liefert jedoch keinen Usernamen zurück (bzw. aus der
pw-strcut lässt sich selbiger nicht extrahieren). Das heißt, daß
eigentlich auch ein "getent passwd 30001" kein Ergebnis liefern
dürfte. Woran das jetzt genau liegt, kann ich Dir nicht sagen, ich
bleibe aber dabei, daß Du wohl ein Problem bei der LDAP-Integration in
PAM hast.



Ciao
Stefan
-- 
Stefan Förster     http://www.incertum.net/     Public Key: 0xBBE2A9E9
FdI #37: Fehlertolerant - Das Programm erlaubt keine Benutzereingaben.


More information about the postfix-users mailing list