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 Authentifizierungconnect = host=localhost dbname=mail user=mailadmin password=yourpassword
→ PostgreSQL Verbindungsinformationendefault_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 Hashwertuser_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
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!)
Add a New Comment