
Ich habe Benutzer in einer externen Datenbank. Bisher - ssh, postfix, dovecot und einige andere - verwenden Einträge ohne Probleme.
Ich habeMaildirsinnen/Heimanwender]und wenn das Homedir existiert, ist alles in Ordnung - Senden, Empfangen.
Wenn das Homedir nicht existiertPostfix/Dovecotdruckt Fehler, ssh - nach dem Login Ergebnisse in brandneuen Homedir gemacht - es verwendetpam_mkhomedir.soEintrag in /etc/pam.d/[in wenigen Dateien].
Postfix/Dovecot- erfolgreich nutzenpam.dmit Datenbank-Backend, ignoriert aber Einträge mitpam_mkhomedir- Ich habe viele Hinweise gelesen, in welche Datei und an welcher Position sie platziert werden soll.
Vielleicht geht es darum, die Datei /etc/pam.d/[Datei] zu benennen??
Antwort1
Postfix ist nicht für die Erstellung von Home-Verzeichnissen verantwortlich. Postfix geht davon aus, dass die Home-Verzeichnisse bereits vorhanden sind, wenn der integrierte local
Zustellungsagenten verwendet wird.
Wenn Sie stattdessen Dovecot als LDA verwenden, verlässt sich Dovecot auch auf die Tatsache, dass das Home-Verzeichnis existiert.
Bei virtuellen Benutzern kann man die Variable lda_mailbox_autocreate = yes
so setzen, dass Dovecot automatisch die benötigten Verzeichnisse anlegt.
Und da Dovecot (und Postfix) einen Benutzer für die E-Mail-Zustellung nicht „anmelden“, pam_mkhomedir
wird dies nie ausgelöst. PAM wird in diesem Fall nur zur Authentifizierung verwendet.
Antwort2
Nur für alle, die wie ich zufällig beim Googeln nach dem Dovecot-Problem darauf stoßen: Dovecot kann verwendet werden, pam_mkhomedir
wenn Sie es entsprechend einrichten. Die Dokumentation finden Sie unterhttp://wiki2.dovecot.org/PasswordDatabase/PAM#PAM_sessions
Auf einem typischen Debian/Ubuntu-System können Sie Folgendes einfügen /etc/pam.d/dovecot
:
#%PAM-1.0
@include common-auth
@include common-account
@include common-session
(Das mkhomedir
Modul wird innerhalb aufgerufen common-session
)
Und bearbeiten Sie dann /etc/dovecot/conf.d/auth-system.conf.ext
den Abschnitt mit folgendem Text:
passdb {
driver = pam
# [session=yes] ...
#args = dovecot
}
um diese args
sagen zu lassen:
args = session=yes dovecot