* Steffen Krick Steffen.Krick@gmx.de wrote:
Postifx soll die lokalen Benutzer aus einem LDAP Verzeichnis suchen. Die Abfrage postmap -q "ricky@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@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