📨 Lees eerst het vorige artikel!
Dit artikel is het vijfde deel van de serie "Een mailserver opzetten in Linux".
In het vorige deel hebben we de vier essentiële configuratiebestanden van Dovecot geanalyseerd. Als je dat nog niet hebt gelezen, raad ik aan om dat eerst te doen.
👉 Vorige deel: Analyse van essentiële Dovecot-configuratiebestanden
🔄 Informatie over volgorde
In het vorige deel heb ik aangekondigd dat we in het volgende artikel de configuratie van auth-sql.conf.ext
zullen behandelen, maar tijdens het schrijven heb ik vastgesteld dat het logischer is om eerst de DB-tabelontwerpen uit te leggen.
Daarom zal dit artikel gaan over het concept van virtuele gebruikers in Dovecot en het PostgreSQL tabelontwerp,
en in het volgende deel zal ik de instellingen van auth-sql.conf.ext
die Dovecot en PostgreSQL koppelen uitleggen.
🎯 Wat zijn Dovecot virtuele gebruikers? Waarom zijn ze nodig?
Er zijn twee hoofdmethoden voor het authentiseren van gebruikers in Dovecot.
- Systeemaccountgebaseerde authenticatie
- Authenticatie met behulp van de
/etc/passwd
en/etc/shadow
bestanden - Gebruik van reguliere systeemgebruikersaccounts
-
Accountbeheer is omslachtig en het is moeilijk om mail-specifieke accounts aan te maken
-
Virtuele gebruikers gebaseerde authenticatie (Virtuele Gebruikers)
- Authenticatie met een aparte database (PostgreSQL, MySQL, etc.)
- Onafhankelijke beheer van mailspecifieke gebruikers
- Uitstekende beveiliging en schaalbaarheid, geschikt voor grootschalige maildiensten
Wij zijn van plan om een virtuele gebruikersomgeving op te zetten met PostgreSQL.
Met andere woorden, we zullen gebruikersinformatie uit de database halen om te authentiseren zonder feitelijke Linux-accounts aan te maken.
🔹 Voordelen van de virtuele gebruikersomgeving
- Hogere beveiliging door scheiding van systeemaccounts
- Gebruik van een eenvoudige toevoeging en verwijdering van gebruikersaccounts
- Meerdere domeinen ondersteuning (beheer van meerdere maildomeinen op één server)
- Uitstekende schaalbaarheid en gemakkelijk te beheren
🛠️ Tabelontwerp in PostgreSQL
Om virtuele gebruikers adequaat te beheren in Dovecot zijn minimaal drie tabellen nodig.
1️⃣ Essentiële tabelstructuur
mail_domain
- Lijst van domeinen die worden beheerd door de mailservermail_users
- Informatie over werkelijke mailgebruikersmail_alias
- Beheer van e-mailaliassen (doorsturen)
De reden voor deze scheiding is schaalbaarheid en gemak van onderhoud.
Bij het later beheren van meerdere maildomeinen of het doorsturen van specifieke e-mails naar andere adressen, is dit zeer nuttig.
2️⃣ Tabelschema en SQL Voorbeeld
📌 1. mail_domain (beheer van domeinlijsten)
Dit is de tabel waarin de domeinen worden beheerd die op de mailserver zijn toegestaan.
Met andere woorden, de maildomeinen zoals example.com
, mydomain.com
worden gedefinieerd.
CREATE TABLE mail_domain (
id SERIAL PRIMARY KEY,
domain_name VARCHAR(255) NOT NULL UNIQUE,
active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT NOW()
);
🔹 Beschrijving
- domain_name
→ Maildomein (bijv: example.com
)
- active
→ Of het domein gebruikt moet worden (deactiveren mogelijk)
- created_at
→ Datum van aanmaak
Voorbeeld van het invoegen van monsterdata
INSERT INTO mail_domain (domain_name) VALUES ('example.com');
INSERT INTO mail_domain (domain_name) VALUES ('mydomain.com');
📌 2. mail_users (mailgebruikersaccounts)
Hier worden de informatie van gebruikersaccounts die daadwerkelijk mail gebruiken opgeslagen.
Elke gebruiker moet deel uitmaken van een specifiek domein.
CREATE TABLE mail_users (
id SERIAL PRIMARY KEY,
domain_id INT NOT NULL REFERENCES mail_domain(id) ON DELETE CASCADE,
email VARCHAR(255) NOT NULL UNIQUE,
password TEXT NOT NULL,
home_directory TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
🔹 Beschrijving
- domain_id
→ Verbindt met id
van de mail_domain
tabel (domein waartoe de mailgebruiker behoort)
- email
→ E-mailadres van de gebruiker (user@example.com
)
- password
→ Opslaan van versleuteld wachtwoord
- home_directory
→ Mail opslag pad (/var/mail/vmail/user@example.com
)
- created_at
→ Datum van accountcreatie
Voorbeeld van het invoegen van monsterdata
INSERT INTO mail_users (domain_id, email, password, home_directory)
VALUES (1, 'user@example.com', 'hashed_password_here', '/var/mail/vmail/user@example.com');
📌 3. mail_alias (e-mailaliassen / doorsturen) Dit is nodig om een e-mailadres naar een ander adres door te sturen of om meerdere aliassen voor één adres te gebruiken.
CREATE TABLE mail_alias (
id SERIAL PRIMARY KEY,
domain_id INT NOT NULL REFERENCES mail_domain(id) ON DELETE CASCADE,
source_email VARCHAR(255) NOT NULL,
destination_email VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
🔹 Beschrijving
- source_email → Oorspronkelijk e-mailadres (bijv: contact@example.com)
- destination_email → Te verzenden e-mailadres (bijv: admin@example.com)
- Voert de functie uit van automatisch doorsturen van een specifiek mailadres naar een ander adres
Voorbeeld van het invoegen van monsterdata
INSERT INTO mail_alias (domain_id, source_email, destination_email)
VALUES (1, 'contact@example.com', 'admin@example.com');
Nu worden e-mails verzonden naar contact@example.com automatisch doorgestuurd naar admin@example.com.
🔍 Aanbevolen tabellen voor toekomstige uitbreidingen
Naast het basis beheren van maildiensten kunnen ook extra functionaliteiten worden uitgebreid. Hieronder staan voorbeelden van tabellen die later uitgebreid kunnen worden.
Tabelnaam | Rol |
---|---|
mail_quota |
Beperkingen in mailcapaciteit per gebruiker |
mail_blacklist |
Lijst van te blokkeren e-mails |
mail_whitelist |
Lijst van toegestane e-mails |
mail_forwarding |
Doorsturen naar externe mailaccounts |
mail_autoresponder |
Beheer van automatische antwoorden |
mail_address_book |
Interne adressenbeheer |
🏁 Samenvatting en volgende stappen
✅ De inhoud van dit artikel
- Het concept en de noodzaak van Dovecot virtuele gebruikers
- PostgreSQL tabelontwerp (mail_domain, mail_users, mail_alias)
- Aanbeveling voor extra tabellen voor e-mailbeheeruitbreiding
Volgende aflevering aankondiging: auth-sql.conf.ext
instellingen en wachtwoord hashing methoden
Nu de databasetabellen zijn voorbereid, zullen we in de volgende aflevering uitleggen hoe Dovecot gebruikersinformatie uit PostgreSQL haalt voor authentisatie,
en we zullen het hebben over wachtwoord hashing methoden die gebruikt zullen worden in mailgebruikersaccounts.
Bijzonder zullen we de kenmerken en beveiligingsverschillen van MD5, SHA-256, BCRYPT methoden vergelijken,
en we zullen specifiek bekijken hoe deze methoden kunnen worden toegepast in Dovecot en PostgreSQL.
👉 Volgende aflevering: auth-sql.conf.ext
instellingen en wachtwoord hashing methoden (Binnenkort!)
댓글이 없습니다.