Dies ist eine alte Version des Dokuments!
Dovecot, Authentifizierung(en)
Authentifizierungsquellen
Bei der Authentifizierungsquellen kennt Dovecot mehrere Quellen:
- passwd:
Als Quellen werden die User-Daten /etc/shadow (Überprüfung des Userenviroments, also $HOME, $UID und $GID) und /etc/passwd (Überprüfung des Passwortes) genutzt. - passwd-File:
Die /etc/dovecot/users Dovecot-eigene User-Verwaltungs-Datei beinhaltet (neben der Überprüfung des Userenviroments, also $HOME, $UID und $GID auch Überprüfung des Passwortes - LDAP
Mit Hilfe von LDAP1) via via annonymous bind oder technischem User kann ebenso die Benutzerverwaltung erfolgen. - SQL
Ebenso können die gängisten SQL-Datenbanken, wie MySQL, PostgreSQL oder SQLite verwendet werden. Weitere Hinweise dazu findet man im Dovecot Wiki. - Kerberos
Nutzt man das GSSAPI2) für Kerberos 5, so benötigt man weiterhin passwd, damit Dovecot $HOME ermitteln kann um in Erfahrung zu bringen, wo sich die Mailbox des erfolgen, nutzt man die Endkunden befindet. Soll über Kerberos lediglich die Authentifizierung über den Ticket Authentification genutzt werden, verwendet man statt dessen die pam_krb5. - vpopmail
Hinweise hierzu findet man im Dovecot Wiki. - Dict
Hinweise zu „Key-value authentication database“ findet man im Dovecot Wiki. - static:
Bei Systemen ohne nötiger Überprüfung von Username und Passwort wird static verwendet, so z.B.:- Proxy Frontend, bei dem das Frontend bereits das Passwort überprüft.
- Proxy Backend, bei dem das Backend das Passwort überprüft
- SSL Zertifikate, bei der Authentifizierung mit Hilfe von X.509 Client-Zertifikate
- Test, zu Testzwecken.
Konfiguration
Die Konfiguration der Authentifizierung erfolgt über die Datei /etc/dovecot/conf.d/10-auth.conf und über die jeweils eingebundene auth-<mechanism>.conf.ext aus dem Verzeichnis /etc/dovecot/conf.d/.
# # ll /etc/dovecot/conf.d/auth-*
-rw-r--r-- 1 root root 499 Nov 24 2013 /etc/dovecot/conf.d/auth-checkpassword.conf.ext -rw-r--r-- 1 root root 489 Nov 24 2013 /etc/dovecot/conf.d/auth-deny.conf.ext -rw-r--r-- 1 root root 343 Nov 24 2013 /etc/dovecot/conf.d/auth-dict.conf.ext -rw-r--r-- 1 root root 924 Nov 24 2013 /etc/dovecot/conf.d/auth-ldap.conf.ext -rw-r--r-- 1 root root 561 Nov 24 2013 /etc/dovecot/conf.d/auth-master.conf.ext -rw-r--r-- 1 root root 515 Nov 24 2013 /etc/dovecot/conf.d/auth-passwdfile.conf.ext -rw-r--r-- 1 root root 788 Nov 24 2013 /etc/dovecot/conf.d/auth-sql.conf.ext -rw-r--r-- 1 root root 611 Nov 24 2013 /etc/dovecot/conf.d/auth-static.conf.ext -rw-r--r-- 1 root root 2185 Nov 24 2013 /etc/dovecot/conf.d/auth-system.conf.ext -rw-r--r-- 1 root root 330 Nov 24 2013 /etc/dovecot/conf.d/auth-vpopmail.conf.ext
Per Default wird der Authentifizierungs-Mechanismus passwd verwendet, also gegen die beiden Systemkonfigurationsdateien /etc/passwd und /etc/shadow. Dies ist mit dem !include-Statement am Ende der Dovecot-Konfigurationsdatei /etc/dovecot/conf.d/10-auth.conf geregelt.
# vim /etc/dovecot/conf.d/10-auth.conf
- /etc/dovecot/conf.d/10-auth.conf
... #!include auth-deny.conf.ext #!include auth-master.conf.ext !include auth-system.conf.ext #!include auth-sql.conf.ext #!include auth-ldap.conf.ext #!include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-vpopmail.conf.ext #!include auth-static.conf.ext
auth-system.conf.ext
Will man lediglich den Systemeigenen Usern, die ein Konto auf dem Linux-Host haben, ein Konto zuweisen, kann natürlich der Mechanismus passwd genutzt werden. Bei der Anmeldung kann aber somit „nur“ der Username verwendet werden und def. nicht die eMail-Adresse des Endkunden - ein nogo für Umgebungen mit mehreren virtuellen Maildomänen. Aus diesem Grunde haben wir uns auch bei den Eingangsüberlegungen zu unserem Dovecot-Server, auch gegen diesen Mechanismus ausgesprochen!
Beispiel:
# grep 1000 /etc/passwd
django:x:1000:1000:django:/home/django:/bin/bash
Der Username django kann zwar benutzt werden, nicht aber django@nausch.org bzw. django@mailserver.guru.
Über die Konfigurationsdatei /etc/dovecot/conf.d/auth-system.conf.ext können bei Bedarf Einstellungen vorgenommen werden.
# less /etc/dovecot/conf.d/auth-system.conf.ext
- /etc/dovecot/conf.d/auth-system.conf.ext
# Authentication for system users. Included from 10-auth.conf. # # <doc/wiki/PasswordDatabase.txt> # <doc/wiki/UserDatabase.txt> # PAM authentication. Preferred nowadays by most systems. # PAM is typically used with either userdb passwd or userdb static. # REMEMBER: You'll need /etc/pam.d/dovecot file created for PAM # authentication to actually work. <doc/wiki/PasswordDatabase.PAM.txt> passdb { driver = pam # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=<n>] # [cache_key=<key>] [<service name>] #args = dovecot } # System users (NSS, /etc/passwd, or similiar). # In many systems nowadays this uses Name Service Switch, which is # configured in /etc/nsswitch.conf. <doc/wiki/AuthDatabase.Passwd.txt> #passdb { #driver = passwd # [blocking=no] #args = #} # Shadow passwords for system users (NSS, /etc/shadow or similiar). # Deprecated by PAM nowadays. # <doc/wiki/PasswordDatabase.Shadow.txt> #passdb { #driver = shadow # [blocking=no] #args = #} # PAM-like authentication for OpenBSD. # <doc/wiki/PasswordDatabase.BSDAuth.txt> #passdb { #driver = bsdauth # [blocking=no] [cache_key=<key>] #args = #} ## ## User databases ## # System users (NSS, /etc/passwd, or similiar). In many systems nowadays this # uses Name Service Switch, which is configured in /etc/nsswitch.conf. userdb { # <doc/wiki/AuthDatabase.Passwd.txt> driver = passwd # [blocking=no] #args = # Override fields from passwd #override_fields = home=/home/virtual/%u } # Static settings generated from template <doc/wiki/UserDatabase.Static.txt> #userdb { #driver = static # Can return anything a userdb could normally return. For example: # # args = uid=500 gid=500 home=/var/mail/%u # # LDA and LMTP needs to look up users only from the userdb. This of course # doesn't work with static userdb because there is no list of users. # Normally static userdb handles this by doing a passdb lookup. This works # with most passdbs, with PAM being the most notable exception. If you do # the user verification another way, you can add allow_all_users=yes to # the args in which case the passdb lookup is skipped. # #args = #}
Links
~~DISCUSSION~~