Dies ist eine alte Version des Dokuments!


Dovecot, Authentifizierung(en)

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.:
    1. Proxy Frontend, bei dem das Frontend bereits das Passwort überprüft.
    2. Proxy Backend, bei dem das Backend das Passwort überprüft
    3. SSL Zertifikate, bei der Authentifizierung mit Hilfe von X.509 Client-Zertifikate
    4. Test, zu Testzwecken.

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

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 =
#}

Bei der Definition der Mindestanforderung unserer Dovecot-Installation, hatten wir für die Benutzeranmeldung die eMail-Adresse des endkunden gewählt. Somit können unterschiedliche Benutzer an verschiedenen Maildomänen realisiert werden. Die Adresse herbert.nullinger@it-ignorant.de muss also nicht zwingend dem gleichen Nutzer gehören, der herbert.nullinger@omni128.de verwendet.

Haben wir nur einen Mailadministrator und einen überschaubaren Kundenanteil, ist diese Art der Benutzerverwaltung sicherlich eine einfache und praktikable Variante.

Hat man hingegen mehrere Admins und viele Endkunden an verschiedenen Maildomänen am Start, wird es sehr schnell unübersichtlich. Hier nutzt man dann eines der datenbankgestützeten Benutzerverwaltungssystemen, wie z.B. postfixadmin.

Über die Konfigurationsdatei /etc/dovecot/conf.d/auth-passwdfile.conf.ext können bei Bedarf Einstellungen vorgenommen werden.

 # less /etc/dovecot/conf.d/auth-passwdfile.conf.ext
/etc/dovecot/conf.d/auth-passwdfile.conf.ext
# Authentication for passwd-file users. Included from 10-auth.conf.
#
# passwd-like file with specified location.
# <doc/wiki/AuthDatabase.PasswdFile.txt>
 
passdb {
  driver = passwd-file
  # Django : 2014-07-28
  # default: args = scheme=CRYPT username_format=%u /etc/dovecot/users
  # %u = vollständiger Nutzername (Bsp.: django@nausch.org) 
  # L  = Nutzernamen in Kleinbuchstaben umwandeln
  args = scheme=CRYPT username_format=%Lu /etc/dovecot/users
 
}
 
userdb {
  driver = passwd-file
  # Django : 2014-07-28
  # default: args = username_format=%u /etc/dovecot/users
  # %u = vollständiger Nutzername (Bsp.: django@nausch.org)
  # L  = Nutzernamen in Kleinbuchstaben umwandeln
  args = username_format=%u /etc/dovecot/users
 
  # Default fields that can be overridden by passwd-file
  #default_fields = quota_rule=*:storage=1G
 
  # Override fields from passwd-file
  #override_fields = home=/home/virtual/%u
}

Zur Aktivierung des Authentifizierungs-Mechanismus passwd-file müssen wir nun nur noch den richtigen !include in der Konfigurationsdatei /etc/dovecot/conf.d/10-auth.conf setzen.

 # 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
 
# Django : 2014-07-28
# default: !include auth-system.conf.ext
# Umstellung auf den Authentifizierungs-Mechanismus passwd-file
#!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

Jetzt müssen wir „nur„noch unsere Datei /etc/dovecot/users mit den Nuterdaten anlegen.

 # vim /etc/dovecot/users
/etc/dovecot/users
# Django : 2014-07-28
# Konfigurationsbeispiel für den Authentifizierungs-Mechanismus passwd-file
#
# Beispiel für einen Nutzer "django@nausch.org" und dem (Klartext)Passwort "Dj4n90_d3r_G33k!" :
#
django@nausch.org:{PLAIN}Dj4n90_d3r_G33k!:10000:10000::/var/spool/mail/vmail/nausch.org/django:

Dovecot hält im cash die Daten aus dieser Datei und kann somit auf Änderungen an der datei automatisch reagieren. Ein Reload des Dovecot-Daemon ist somit nicht manuell notwendig!

Beim Passwort-Mechanismus stehen uns folgende Varianten zur Verfügung:

  • BLF-CRYPT: Der als sehr sehr sicherere Blowfish-Crypt Algorithmus; das Passwort beginnt mit $2a$

(Note: bcrypt is not available on most Linux distributions)

  • SHA512-CRYPT: Sehr sichere kryptologischen Hashfunktionen; das Passwort beginnt mit $6$
  • SHA256-CRYPT: Sichere kryptologischen Hashfunktionen; das Passwort beginnt mit $5$
  • MD5-CRYPT: Als mittlerweisen recht unsicher eingestufte MD5-Hashfunktion. Das gekryptete Passwort beginnt mit $5$.

Wollen wir ein gekryptetes Passwort mit der SHA256 Hashfunktion erstellen, nutzen wir folgenden Aufruf.

 # doveadm pw -s SHA512-CRYPT
 Enter new password: 
 Retype new password: 
 {SHA512-CRYPT}$6$QP/5EBBiqFK/CtWX$GGOymjepgiS1GSYhV.XAszOVGM6gRKBVEX.jzHTYuNBww4yWoTiyLZ9dN9unLpzL2cTrcZYeCiXvC3pvJ1PNf.

Haben wir einen Mailserver mit vielen Maildomains und vielen Mailboxnutzern und ein Team von Mailadmins, wird die Pflege der Nutzerkonten über passwd-file sehr schnell zur sportlichen Herausforderung. :-?

Als einfache Lösung bietet sich nun die Datenhaltung in einer MySQL-Datenbank und zur Pflege der Daten postfixadmin an.

Links


1)
Lightweight Directory Access Protocol
2)
Generic Security Service Application Program Interface
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/mail_c7/dovecot_6.1406576832.txt.gz
  • Zuletzt geändert: 28.07.2014 19:47.
  • von django