Wir haben Opnldap auf unserem Ubuntu-Server eingerichtet und erhielten diese Meldung für einen Benutzer:
auth: pam_unix(dovecot:account): account has expired (account expired)
Sep 3 19:05:03 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=XXXX rhost=::1 user=XXXX
Ich habe das Passwort mit ldappasswd erfolgreich geändert, aber der Fehler besteht weiterhin. Nach einigen Recherchen scheint es, dass shadowLastChange nicht aktualisiert wird.
Wie können wir das lösen?
/usr/share/slapd/slapd.conf
access to attrs=userPassword,shadowLastChange
by dn="@ADMIN@" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
# The admin dn has full write access, everyone else
# can read everything.
access to *
by dn="@ADMIN@" write
by * read
OK – das scheint ein PAM-Problem zu sein.
Wenn ich /etc/nsswitch.conf wie folgt bearbeite:
shadow: compat
Ich erhalte keine Meldung, dass der Account abgelaufen ist.
Wenn ich es ändere in:
shadow: files ldap
Das tue ich. Aber in beiden Fällen erhalte ich immer noch den Dovecot-Fehler.
Antwort1
ICHTunich hasse es, eine tote Frage wiederzubeleben, aber angesichts der Tatsache, dass dies das Top-Suchergebnis für „Dovecot PAM-Authentifizierungsfehler LDAP“ ist, möchte ich dieses zusätzliche Wissen hinzufügen:
Das einzige, was ich bei meinen Tests gesehen habe, das die shadowAccount
Attribute aktualisiert, ist der passwd
Befehl, wenn Sie das Passwort für einen Benutzer in LDAP ändern... Die meisten anderen Tools kümmern sich nicht viel um die shadowAccount
Klasse und ihre Attribute und berühren sie nicht. Ich finde jedoch nur, dass shadowAccount
Klassen zu Benutzern hinzugefügt werden müssenwenn sie sich beim Host anmelden, seitdemtutPflege. Wenn Sie nur etwas wie E-Mail-Authentifizierung (Dovecot) tun, dann ist es nicht viel Nutzen. IchkönnteIch kann mich hier vielleicht irren, aber ich habe bisher nichts anderes gesehen als eine Host-Anmeldung, bei der die shadowAccount
Attribute für irgendetwas abgefragt wurden.
Wenn Sie Dovecot authentifizieren lassendurchPAM (was Sie vermutlich sind, da Dovecot es abfragt und Sie es ändern nsswitch
), dann denken Sie bitte daran, dass PAM zwar diese zusätzlichen Attribute beachtet, Sie aber trotzdem die richtigen Tools benötigen, um sie zu ändern... was bedeutet, dass alles, was Benutzerpasswörter ändert, auch über PAM laufen muss. So unpopulär die Meinung auch sein mag, wenn Sie keine Host-Logins verlangen, sondern nur Dienste wie Dovecot oder andere, besteht keine Notwendigkeit, PAM einzubeziehen, da es viel mehr Dinge überprüft, die wahrscheinlich irrelevant sein werden. (Bestenfalls könnte es andere Dinge erzwingen, wie, ja, das Ablaufen von Passwörtern, aber persönlich würde ich solche Dinge nicht erzwingen, wenn der Dienst, bei dem Sie sich anmelden,keine Möglichkeit, ein Passwort zu ändernso) Auf lange Sicht ist es wahrscheinlich einfacher, wenn Nicht-Host/Shell-Login-Dienste LDAP selbst prüfen, was andere Dinge wie Suchfilter ermöglichtspezifisch für diesen Dienst.
JedochvorausgesetztSie haben Dovecot so eingerichtet, dass es LDAP selbst überprüft und sich nicht auf PAM verlässt. Am Ende von Dovecot 10-auth.conf
befindet sich eine Liste von !include
Zeilen für verschiedene Authentifizierungsmechanismen wie LDAP, SQL usw. Standardmäßig auth-system.conf.ext
ist die Datei enthaltenVorandere Mechanismen, wie LDAP. Das bedeutet, dass Dovecot in meinen Tests diese überprüftin der Reihenfolge, in der sie bereitgestellt werden, Dovecot wird zunächst versuchen, den Benutzer mit PAM zu authentifizieren und dann, wenn dies fehlschlägt, mit LDAP zu authentifizieren. Ergo erhalten Sie einen PAM-Fehler, der besagt, ja, das authentication failure
(sowie den ersten, der besagtWases ist ein Fehler). Wenn Sie diese Reihenfolge so ändern würden, dass die Methode mit der höchsten Erfolgswahrscheinlichkeit (LDAP, würde man annehmen) zuerst abgefragt wird, wäre keine Überprüfung bei PAM erforderlich und PAM würde daher auch keinen Fehler ausgeben.
Um dieses Problem zu lösen,könnteKommentieren Sie das aus !include auth-system.conf.ext
, dies könnte jedoch potenziell dazu führen, dass Systembenutzer (wie root
oder postmaster
) als nicht existent betrachtet werden, wenn Sie sie nicht in LDAP eingerichtet haben.
Meine persönliche Lösung hierfür bestand darin, diese Zeile auszuschneiden und an derunten, so was:
#!include auth-deny.conf.ext
#!include auth-master.conf.ext
!include auth-ldap.conf.ext
#!include auth-sql.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext
!include auth-system.conf.ext
Das bedeutet, dass DovecotErsteLDAP konsultieren,Dannkonsultieren Sie PAM, wenn LDAP keine Ergebnisse geliefert hat, soweit meine Tests das gezeigt haben.
Antwort2
Ich habe meine eigene Frage noch nie wirklich beantwortet, aber ich wollte sie teilen, falls jemand anderes jemals darauf stößt. Es hatte damit zu tun, dass saslauthd nicht installiert, konfiguriert und ausgeführt wurde. Nachdem ich das getan hatte, verschwand der Fehler.