Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
dovecot [11/09/2016 - 08:26] – [Grundkonfiguration] thommie | dovecot [05/03/2024 - 10:52] (aktuell) – Externe Bearbeitung 127.0.0.1 |
---|
| =====User anlegen ===== |
| |
| **Verfügbare Password Hashes testen** |
| |
| ''doveadm pw -l '' |
| |
| Dovecot selber kann Blowfish (BLF-CRYPT), allerdings nicht die glibc, die in Ubuntu Server 14 bis 18 verbaut war(siehe auch [[https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1349252|https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1349252]]). Das ist Ubuntu 20 mit GLIBC 2.31 gelöst. |
| |
| Beispiele zum Erzeugen eines Hashes: |
| |
| mit blowfish (blf-crypt) |
| |
| ''doveadm pw -s BLF-CRYPT -u thomas.rother@miteinander-esslingen.de -p XXXXXxxxxxx '' |
| |
| mit SHA512 |
| |
| ''doveadm pw -s SHA512-CRYPT -u thomas.rother@miteinander-esslingen.de -p XXXXXxxxxxx '' |
| |
| Vom Ergebnis-String alles ab $6$ bzw. $2y$ in die Datenbank schreiben |
| |
| **Login-Test** |
| |
| ''doveadm pw -t '{SHA512-CRYPT}$hashash' -p "xxxxxxxxxxx" (verified)'' |
| |
| ''doveadm pw -t '{BLF-CRYPT}$2y$hashash' -p "xxxxxxxxxxx" (verified)'' |
| |
| Oder bei Fehler |
| |
| ''Fatal: reverse password verification check failed: Password mismatch'' |
| |
| |
| Sobald BCRYPT mal tut: [[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/]] |
| |
====== Grundkonfiguration ====== | ====== Grundkonfiguration ====== |
| |
Konfigurations-Optionen: https://docs.kolab.org/administrator-guide/roundcube-settings-reference.html | Konfigurations-Optionen: |
| |
| [[https://docs.kolab.org/administrator-guide/roundcube-settings-reference.html|https://docs.kolab.org/administrator-guide/roundcube-settings-reference.html]] |
| |
| Konfigurations-Empfehlungen: [[https://thomas-leister.de/mailserver-debian-stretch/|https://thomas-leister.de/mailserver-debian-stretch/]] |
| |
===== 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. |
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 | |
</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. | Welcher Hash wird benutzt? Achtung: blowfish (BLF-CRYPT) ) wäre theoretisch möglich, wird zur Zeit aber von glibc unter Ubunut nicht unterstützt. |
| |
<code> | ''default_pass_scheme = SHA512-CRYPT '' |
default_pass_scheme = SHA512-CRYPT | |
</code> | |
| |
Und hier der SELECT. Pro Login werden alle Varianblen über denselben SQL Request ermittelt ("userdb prefetch"): | Und hier der SELECT. Pro Login werden alle Varianblen über denselben SQL Request ermittelt ("userdb prefetch"): |
| |
<code> | ''# 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' '' |
# password query including userdb info in one request (prefetch) | |
password_query = \ | ===== Wieso Port 587 und 143 mit STARTTLS? ===== |
SELECT userid AS user, password, \ | |
home AS userdb_home, uid AS userdb_uid, gid AS userdb_gid \ | (Zitat Thomas Leister) |
FROM users WHERE userid = '%n' AND domain = 'netzwissen.de' | |
</code> | |
| |
===== Passwort Hash erzeugen ===== | //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!// |
| |
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 | //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.// |
| |
<code> | //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.// |
doveadm pw -s SHA512-CRYPT -u thomas.rother@miteinander-esslingen.de -p 'XXXXXxxxxxx' | |
</code> | |
| |
Vom Ergebnis-String alles ab $6$... in die DB schreiben | |