dovecot

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
dovecot [11/09/2016 - 08:26] – [Grundkonfiguration] thommiedovecot [22/05/2025 - 06:50] (aktuell) thommie_netzwissen.de
Zeile 1: Zeile 1:
 ====== Grundkonfiguration ====== ====== Grundkonfiguration ======
  
-Konfigurations-Optionen: https://docs.kolab.org/administrator-guide/roundcube-settings-reference.html+[[https://thomas-leister.de/mailserver-debian-bullseye/|https://thomas-leister.de/mailserver-debian-bullseye/]]
  
-===== Authentifizierung =====+====== Authentifizierung ======
  
-/etc/dovecot/conf.d/10-auth.conf definiert die zulässigen Authentifizierungs-Mechanismen +/etc/dovecot/conf.d/10-auth.conf definiert die zulässigen Authentifizierungs-Mechanismen Mit diesem Wert wird der Login über unverschlüsselte Verbindungen verhindert. Ausnahme: Client und Server mit gleicher IP.
-Mit diesem Wert wird der Login über unverschlüsselte Verbindungen verhindert. Ausnahme: Client und Server mit gleicher IP.+
  
-<code> +''disable_plaintext_auth = yes ''
-disable_plaintext_auth = yes +
-</code>+
  
-LOgin Mechanismen:+Login Mechanismen:
  
-<code> +''auth_mechanisms = plain login ''
-auth_mechanisms = plain login +
-</code>+
  
 Hier wird definiert, ob über lokale userdb authentifiziert wird oder über SQL: Hier wird definiert, ob über lokale userdb authentifiziert wird oder über SQL:
  
-<code> +''!include auth-sql.conf.ext #!include auth-ldap.conf.ext ## Hier Authentifizierung über lokale userdb ## !include auth-passwdfile.conf.ext ''
-!include auth-sql.conf.ext +
-#!include auth-ldap.conf.ext +
-## Hier Authentifizierung über lokale userdb +
-## !include auth-passwdfile.conf.ext +
-</code>+
  
 **über MySQL** **über MySQL**
  
-Quelle: https://thomas-leister.de/internet/mailserver-ubuntu-server-dovecot-postfix-mysql/ (für Server 14.04) und https://thomas-leister.de/sicherer-mailserver-dovecot-postfix-virtuellen-benutzern-mysql-ubuntu-server-xenial/ (für Server 16.04)+Quelle: [[https://thomas-leister.de/internet/mailserver-ubuntu-server-dovecot-postfix-mysql/|https://thomas-leister.de/internet/mailserver-ubuntu-server-dovecot-postfix-mysql/]] (für Server 14.04) und [[https://thomas-leister.de/sicherer-mailserver-dovecot-postfix-virtuellen-benutzern-mysql-ubuntu-server-xenial/|https://thomas-leister.de/sicherer-mailserver-dovecot-postfix-virtuellen-benutzern-mysql-ubuntu-server-xenial/]] (für Server 16.04)
  
 In dovecot-sql.conf.ext wird der SQL query definiert. In dovecot-sql.conf.ext wird der SQL query definiert.
Zeile 35: Zeile 25:
 Verbindungsaufbau Verbindungsaufbau
  
-<code>               +''connect = host=127.0.0.1 dbname=userauth user=userauth password=XXXXX '' 
-connect = host=127.0.0.1 dbname=userauth user=userauth password=XXXXX+ 
 +Welcher Hash wird benutzt? 
 + 
 +''default_pass_scheme = BLF-CRYPT '' 
 + 
 +Und hier der SELECT. Pro Login werden alle Varianblen über denselben SQL Request ermittelt ("userdb prefetch"): 
 + 
 +''# password query including userdb info in one request (prefetch) password_query = \ SELECT userid AS user, password, \ home AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \ FROM users WHERE userid = '%n' AND domain = 'netzwissen.de' '' 
 +===== Wieso Port 587 mit STARTTLS? ===== 
 + 
 +(Zitat Thomas Leister) 
 + 
 +//Postfix verwendet Port 587 für die Verbindung zu MUAs (Mail User Agents - “Mailprogramme”), weil Port 25 nur für den Transfer der E-Mails zwischen den Servern zuständig sein soll. Während auf Port 25 von jedem Sender E-Mails ohne Authentifizierung empfangen werden können, wird auf Port 587 eine vorherige Authentifizierung des Endnutzers erzwungen. Port 587 wird daher auch als “Submission”-Port bezeichnet und ist üblicherweise in Firewalls freigeschaltet (siehe auch: [[https://tools.ietf.org/html/rfc6409|RFC 6409 Submission]]). Port 25 hingegen wird beispielsweise in Unternehmensfirewalls und von manchen DSL-Routern blockiert, um das Spam-Problem einzudämmen. Aus einem solchen Netz können dann nur noch E-Mails zum zuständigen Mailserver gesendet werden - nicht mehr an jeden beliebigen Mailserver direkt. Da 587 als “universeller” Port (mit und ohne TLS-Verschlüsselung) definiert wurde, wird hier STARTTLS eingesetzt. Der ehem. “nur-TLS”-Port 465 ist nicht mehr als Standard festgelegt!// 
 + 
 +//Für Dovecot verwende ich ebenfalls einen STARTTLS-Port. Dieser ist als Port 143 in [[https://tools.ietf.org/html/rfc3501|RFC 3501]] definiert. Prinzipiell ließe sich zwar als “TLS only” Port der weiterhin spezifizierte “imaps”-Port 993 verwenden, aber aus Gründen der Einheitlichkeit (und weil auch mit STARTTLS Verschlüsselung erzwungen werden kann) habe ich mich für 143 entschieden.// 
 + 
 +//Kurz: Die Ports habe ich aus Abwägungen bezüglich der geltenden IANA-Standards und der Einheitlichkeit gewählt. Durch den Einsatz von STARTTLS entstehen (bei meiner Konfiguration) keine Nachteile.// 
 +===== Mail-User anlegen ===== 
 + 
 +dovecot (IMAP) und postfix (SMTP) holen ihre Authentifikations-Infos aus der Datenbank sqlmail. In der Datenbank steht nicht das Passwort selbst, sondern sein Hash-Wert. Für einen neuen User erzeugt man über doveadmin den hash Wert und trägt die Daten in die sqlmail DB in der tabelle accounts ein. 
 + 
 +**Verfügbare Password Hashes testen** 
 +<code> 
 + 
 +doveadm pw -l 
 </code> </code>
  
-Welcher Hash wird benutzt? Achtung: blowfish (BLF-CRYPT) ) wäre theoretisch möglich, wird zur Zeit aber von glibc unter Ubunut nicht unterstützt.+Empfohlener hash ist Blowfish "BLF-CRYPT" (ab GLIBC 2.31 unterstützt)Beispiele zum Erzeugen eines Hashes: 
 + 
 +mit blowfish (blf-crypt)
  
 <code> <code>
-default_pass_scheme = SHA512-CRYPT+doveadm pw -s BLF-CRYPT -p XXXXXxxxxxx 
 </code> </code>
  
-Und hier der SELECT. Pro Login werden alle Varianblen über denselben SQL Request ermittelt ("userdb prefetch"):+mit SHA512
  
 <code> <code>
-# password query including userdb info in one request (prefetch) +doveadm pw -s SHA512-CRYPT -p XXXXXxxxxxx 
-password_query = \ +
-        SELECT userid AS user, password, \ +
-        home AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \ +
-        FROM users WHERE userid = '%n' AND domain = 'netzwissen.de'+
 </code> </code>
  
-===== Passwort Hash erzeugen =====+**Verifikation des Hashes** 
 +<code> 
 +doveadm pw -t '{BLF-CRYPT}$2y$hashash' -p "xxxxxxxxxxx" (verified)
  
-01/2016: Dovecot selber könnte zwar auch Blowfish (BLF-CRYPT), allerdings nicht die glibc in Ubuntu Server 14 oder 16. Siehe auch https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1349252+</code> 
 + 
 +Bei Fehler
  
 <code> <code>
-doveadm pw -s SHA512-CRYPT -u thomas.rother@miteinander-esslingen.de -p 'XXXXXxxxxxx'+Fatal: reverse password verification check failed: Password mismatch 
 </code> </code>
  
-Vom Ergebnis-String alles ab $6$... in die DB schreiben+Vom Ergebnis-String wird alles ab $… in die Datenbank geschrieben. Achtung mit "trailing blanks" 
 + 
 +<code> 
 +$2y$05$vpmxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
 + 
 +</code> 
 + 
 +Siehe auch [[https://kaworu.ch/blog/2016/04/20/strong-crypt-scheme-with-dovecot-postfixadmin-and-roundcube/|https://kaworu.ch/blog/2016/04/20/strong-crypt-scheme-with-dovecot-postfixadmin-and-roundcube/]] 
 + 
  • dovecot.1473582387.txt.gz
  • Zuletzt geändert: 17/08/2024 - 07:06
  • (Externe Bearbeitung)