Lees eerst het vorige deel
Dit artikel is de zesde uit de serie "Een mailserver opzetten op Linux".
In het vorige deel hebben we Het ontwerp van de virtuele gebruikersaccounttabel met PostgreSQL afgerond.
Als je dit nog niet hebt bekeken, raden we aan het eerst te lezen.
👉 Vorige deel: Het concept van virtuele gebruikers in Dovecot en het ontwerp van de PostgreSQL-tabel


Wat is de instelling van Dovecot's auth-sql.conf.ext?

Om Dovecot virtuele gebruikers via de database in plaats van systeemaccounts te authentificeren, moet je het bestand auth-sql.conf.ext instellen.
Met deze instelling kan Dovecot gebruikersinformatie uit PostgreSQL ophalen voor authenticatie.


De SQL-authenticatie instellingen voor Dovecot (auth-sql.conf.ext)

De belangrijkste items die je moet instellen om Dovecot met PostgreSQL te verbinden zijn als volgt:

1. Pad naar het configuratiebestand

Het configuratiebestand bevindt zich op de volgende locatie:

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

Als het bestand niet bestaat, kun je het maken met de volgende opdracht:

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

2. Belangrijke configuratie-items

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';

Uitleg van de instellingen

  • driver = sql → SQL-gebaseerde authenticatie gebruiken
  • connect = host=localhost dbname=mail user=mailadmin password=yourpassword → PostgreSQL connectie-informatie
  • default_pass_scheme = SHA256-CRYPT → Standaard wachtwoord hashing-algoritme instellen. Als bcrypt wordt gebruikt, stel in op 'BLF-CRYPT'
  • password_query → Vergelijk het ingevoerde wachtwoord van de gebruiker met de hashwaarde uit de database
  • user_query → Retourneer het opslagpad van de gebruiker mail

3. Dovecot-service opnieuw opstarten

Herstart Dovecot na het toepassen van de instellingen.

sudo systemctl restart dovecot

Testen van de integratie van Dovecot met PostgreSQL

Gebruik de volgende opdracht om te controleren of de instellingen correct zijn toegepast.

1. Authenticatietest

doveadm auth test user@example.com password123

Als alles goed is ingesteld, moet de passdb authenticatie succesvol zijn.

2. Controleer de foutlogboeken

Als de instellingen niet correct zijn toegepast, kun je de logs controleren om de oorzaak te analyseren.

journalctl -xe | grep dovecot

Beveiligde authenticatie op de mailserver

Wachtwoord hashing methoden (Vergelijking en toepassing van MD5, SHA-256, BCRYPT)

Wanneer Dovecot en PostgreSQL zijn geïntegreerd, moeten wachtwoorden altijd in gehashte staat worden opgeslagen.
De beveiliging en prestaties verschillen afhankelijk van de hashingmethode.

1. Vergelijking van hashingmethoden

Hashing methode Beveiligingsniveau Snelheid Voorbeeld gebruik
MD5 Kwetsbaar (kan botsingen hebben) Snel Afgeraden
SHA-256 Gemiddeld (relatief veilig) Gemiddeld Algemene beveiliging nodig
BCRYPT Zeer sterke beveiliging Langzaam Bij hoge beveiligingseisen

Aangezien MD5 bekend staat om zijn kwetsbaarheden, is het beter om het niet te gebruiken.
SHA-256 wordt algemeen gebruikt en biedt een goede balans tussen snelheid en beveiliging.
BCRYPT biedt de hoogste beveiliging, maar is trager, dus in omgevingen waar prestaties belangrijk zijn, moet je geschikte alternatieven overwegen.


Hashing van wachtwoorden met de Dovecot-opdracht (doveadm pw)

Je kunt ook direct wachtwoorden hashen met Dovecot.

1. SHA-256 hashing

doveadm pw -s SHA256-CRYPT

Voer het wachtwoord in om de volgende hashwaarde te genereren.

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

2. BCRYPT hashing

doveadm pw -s BLF-CRYPT

Voorbeeld van output:

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

Sla deze hashwaarde op in de mail_users tabel van PostgreSQL.


Directe hashing in PostgreSQL (pgcrypto extensie gebruiken)

Met de pgcrypto extensie in PostgreSQL kun je wachtwoorden hashen zonder doveadm.

1. Activeer de pgcrypto extensie

CREATE EXTENSION IF NOT EXISTS pgcrypto;

2. Wachtwoord opslaan na SHA-256 hashing

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. Wachtwoord opslaan na BCRYPT hashing

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');

Samenvatting en volgende stappen

Wat er in dit artikel is behandeld - Instellingen van Dovecot's auth-sql.conf.ext
- Testmethoden voor de integratie van Dovecot en PostgreSQL
- Toepassing van SHA-256 en BCRYPT hashingmethoden
- Directe hashing in PostgreSQL

Aankomende deel: Integratie van SMTP-authenticatie tussen Postfix en Dovecot
Nu Dovecot is ingesteld, is de volgende stap Postfix in te stellen om gebruik te maken van de authenticatie van Dovecot.

👉 Volgende deel: Integratie van SMTP-authenticatie tussen Postfix en Dovecot (Binnenkort!)