Bitte zuerst den vorherigen Teil lesen
Dieser Artikel ist der sechste Teil der Serie "Mailserver unter Linux einrichten".
Im vorherigen Teil haben wir die Entwurf einer virtuellen Benutzerkontentabelle mit PostgreSQL abgeschlossen.
Falls Sie ihn noch nicht gelesen haben, empfehlen wir Ihnen, dies zuerst zu tun.
👉 Vorheriger Teil: Dovecots virtuelles Benutzerkonzept und PostgreSQL Tabellenentwurf


Was ist die Dovecots auth-sql.conf.ext Konfiguration?

Um Dovecot virtuelle Benutzer über eine Datenbank und nicht über Systemkonten zu authentifizieren, muss die Datei auth-sql.conf.ext konfiguriert werden.
Durch diese Konfiguration kann Dovecot Benutzerinformationen aus PostgreSQL abrufen und diese zur Authentifizierung verwenden.


SQL-Authentifizierungskonfiguration für Dovecot (auth-sql.conf.ext)

Die Hauptkonfigurationselemente, die für die Verbindung von Dovecot mit PostgreSQL eingestellt werden müssen, sind die folgenden.

1. Pfad zur Konfigurationsdatei

Die Konfigurationsdatei befindet sich unter folgendem Pfad.

/etc/dovecot/conf.d/auth-sql.conf.ext

Wenn die Datei nicht vorhanden ist, können Sie sie mit dem folgenden Befehl erstellen.

sudo touch /etc/dovecot/conf.d/auth-sql.conf.ext

2. Hauptkonfigurationselemente

driver = sql
connect = host=localhost dbname=mail user=mailadmin password=yourpassword

default_pass_scheme = SHA256-CRYPT

password_query = SELECT email AS user, password FROM mail_users WHERE email='%u';

user_query = SELECT home_directory AS home FROM mail_users WHERE email='%u';

Erklärung der Konfiguration

  • driver = sql → Verwendung von SQL-basiertem Authentifizierung
  • connect = host=localhost dbname=mail user=mailadmin password=yourpassword → PostgreSQL Verbindungsinformationen
  • default_pass_scheme = SHA256-CRYPT → Festlegung des Standard-Passwort-Hashing-Algorithmus. Bei der Verwendung von bcrypt, einstellen auf 'BLF-CRYPT'
  • password_query → Vergleicht das vom Benutzer eingegebene Passwort mit dem in der Datenbank gespeicherten Hashwert
  • user_query → Gibt den Speicherpfad für die E-Mail des Benutzers zurück

3. Dovecot Dienst neu starten

Nach der Anwendung der Einstellungen starten Sie Dovecot neu.

sudo systemctl restart dovecot

Test der Dovecot-PostgreSQL-Integration

Um zu überprüfen, ob die Konfiguration korrekt angewendet wurde, verwenden Sie den folgenden Befehl.

1. Authentifizierungs-Test

doveadm auth test user@example.com password123

Wurde die Konfiguration erfolgreich vorgenommen, sollte die passdb Authentifizierung erfolgreich sein.

2. Überprüfung des Fehlerprotokolls

Wenn die Konfiguration nicht korrekt angewendet wurde, können Sie das Protokoll überprüfen, um die Ursache zu analysieren.

journalctl -xe | grep dovecot

Sichere Authentifizierung im Mailserver

Passwort-Hashing-Methoden (Vergleich und Anwendung von MD5, SHA-256, BCRYPT)

Wenn Dovecot und PostgreSQL integriert sind, müssen Passwörter unbedingt gehashed gespeichert werden.
Die Sicherheit und die Leistung variieren je nach Hashing-Verfahren.

1. Vergleich der Hashing-Methoden

Hashing-Methode Sicherheitslevel Geschwindigkeit Anwendungsbeispiel
MD5 Schwach (Kollisionsanfällig) Schnell Nicht empfohlen
SHA-256 Mittel (vergleichsweise sicher) Durchschnittlich Allgemeine Sicherheitsanforderungen
BCRYPT Starke Sicherheit Langsam Hohe Sicherheitsanforderungen

Da die Schwächen von MD5 bekannt sind, sollte es vermieden werden.
SHA-256 ist allgemein weit verbreitet und bietet ein gutes Gleichgewicht zwischen Geschwindigkeit und Sicherheit.
BCRYPT bietet die stärkste Sicherheit, ist aber für leistungskritische Umgebungen möglicherweise nicht optimal.


Hashing mit dem Dovecot-Befehl (doveadm pw)

Sie können Passwörter auch direkt in Dovecot hashen.

1. SHA-256 Hashing

doveadm pw -s SHA256-CRYPT

Wenn Sie das Passwort eingeben, wird ein Hashwert wie folgt erstellt.

{SHA256-CRYPT}$5$rounds=5000$abc123def456$ABCDEF1234567890ABCDEF1234567890

2. BCRYPT Hashing

doveadm pw -s BLF-CRYPT

Beispielausgabe:

{BLF-CRYPT}$2a$05$abcdefghij1234567890ABCDEFGHIJKL$CDEFGHIJKLMNOPQRSTUVWXYZ123456

Dieser Hashwert sollte in der mail_users Tabelle von PostgreSQL gespeichert werden.


Direktes Hashing in PostgreSQL (pgcrypto Erweiterung verwenden)

Mit der pgcrypto Erweiterung in PostgreSQL können Passwörter auch ohne doveadm gehasht werden.

1. pgcrypto Erweiterung aktivieren

CREATE EXTENSION IF NOT EXISTS pgcrypto;

2. SHA-256 Hashing um Passwort zu speichern

INSERT INTO mail_users (domain_id, email, password, home_directory)
VALUES (1, 'user@example.com', crypt('mypassword', gen_salt('bf')), '/var/mail/vmail/user@example.com');

3. BCRYPT Hashing um Passwort zu speichern

INSERT INTO mail_users (domain_id, email, password, home_directory)
VALUES (1, 'user@example.com', crypt('mypassword', gen_salt('bf', 12)), '/var/mail/vmail/user@example.com');

Zusammenfassung und nächste Schritte

In diesem Artikel behandelte Themen - Konfiguration von Dovecots auth-sql.conf.ext
- Test der Dovecot-PostgreSQL-Integration
- Anwendung der Hashing-Methoden SHA-256 und BCRYPT
- Direktes Hashing in PostgreSQL

Vorschau auf den nächsten Teil: SMTP-Authentifizierung von Postfix und Dovecot
Da Dovecot nun konfiguriert ist, ist der nächste Schritt, Postfix so einzurichten, dass es die Authentifizierung von Dovecot nutzt.

👉 Nächster Teil: SMTP-Authentifizierung von Postfix und Dovecot (Kommt bald!)