In den vorherigen Artikeln haben wir bereits einen grundlegenden Mailserver mit Postfix eingerichtet und TLS mit Let’s Encrypt konfiguriert:
- Postfix Mailserver unter Debian 13 einrichten
- TLS mit Let’s Encrypt für Postfix unter Debian 13 einrichten
Damit kann unser Server bereits E-Mails empfangen und versenden. Was jedoch noch fehlt, ist die eigentliche Postfachverwaltung. Genau hier kommt Dovecot ins Spiel.
In diesem Artikel richten wir Dovecot mit lokalen Linux-Benutzern und Maildir-Postfächern ein und betrachten gleichzeitig die dahinterliegenden Konzepte. Ziel ist es, die Funktionsweise moderner Mailserver wirklich zu verstehen, bevor wir später auf virtuelle Benutzer und Datenbankanbindungen umsteigen. Obwohl Dovecot auch POP3 bereitstellt, verwenden wir in diesem Tutorial IMAP. Dadurch verbleiben die E-Mails auf dem Server und können von mehreren Geräten gleichzeitig genutzt werden.
Welche Aufgabe übernimmt Dovecot?
Viele Einsteiger gehen zunächst davon aus, dass Postfix auch die Verwaltung der Postfächer übernimmt. Tatsächlich sind die Aufgaben jedoch klar getrennt:
Postfix
Postfix ist für SMTP zuständig:
- E-Mails empfangen
- E-Mails versenden
- E-Mails weiterleiten
- Kommunikation mit anderen Mailservern
Dovecot
Dovecot übernimmt:
- IMAP
- POP3
- Benutzeranmeldung
- Mailboxverwaltung
- Maildir-Verwaltung
- SMTP-Authentifizierung für Postfix
Vereinfacht dargestellt:
Internet
│
▼
Postfix
│
▼
Mailbox
│
▼
Dovecot
│
▼
Thunderbird
Wenn Thunderbird E-Mails abruft, spricht der Client nicht mit Postfix, sondern direkt mit Dovecot.
Maildir statt mbox
Historisch wurden E-Mails häufig als einzelne Datei gespeichert:
/var/mail/tobias
Dieses Format nennt sich mbox. Heute wird fast ausschließlich Maildir verwendet. Dabei wird jede E-Mail als eigene Datei gespeichert:
/home/tobias/Maildir
├── cur
├── new
└── tmp
Vorteile:
- stabiler bei mehreren gleichzeitigen Zugriffen
- ideal für IMAP
- bessere Performance bei großen Postfächern
- einfacher für Backups
Postfix auf Maildir umstellen
Prüfen wir zunächst die aktuelle Konfiguration:
postconf mail_spool_directory
postconf home_mailbox
Bei vielen Installationen ist home_mailbox zunächst leer. Wir stellen Postfix auf Maildir um:
postconf -e 'home_mailbox = Maildir/'
systemctl restart postfix
Dadurch werden lokale Benutzer künftig unter folgendem Pfad zugestellt:
/home/<user>/Maildir
Ältere Dovecot-Versionen verwenden häufig noch die Einstellung mail_location = maildir:~/Maildir. In Dovecot 2.4 wurde die Konfiguration auf mail_driver und mail_path umgestellt.
Testbenutzer anlegen
Für unser Beispiel verwenden wir einen normalen Linux-Benutzer:
adduser tobias
Danach erzeugen wir die Maildir-Struktur:
sudo -u tobias mkdir -p /home/tobias/Maildir/{cur,new,tmp}
Kontrolle:
ls -la /home/tobias/Maildir
Alternativ können die Verzeichnisse auch automatisch durch Dovecot oder den ersten Mailzugriff angelegt werden.
Dovecot für Maildir konfigurieren
Datei öffnen:
nano /etc/dovecot/conf.d/10-mail.conf
Folgende Einstellungen setzen:
mail_driver = maildir
mail_path = ~/Maildir
mailbox_list_layout = Maildir++
Was passiert hier?
mail_driver
mail_driver = maildir
Dovecot verwendet das Maildir-Format.
mail_path
mail_path = ~/Maildir
Das Postfach eines Benutzers befindet sich im jeweiligen Home-Verzeichnis. Für den Benutzer tobias ergibt sich daraus:
/home/tobias/Maildir
Dovecot und Postfix greifen somit auf dieselbe Mailbox zu. Anschließend:
systemctl restart dovecot
TLS für Dovecot konfigurieren
Damit sich E-Mail-Clients verschlüsselt mit Dovecot verbinden können, muss Dovecot Zugriff auf das TLS-Zertifikat erhalten. In unserer Umgebung verwenden wir bereits das Let’s Encrypt Zertifikat aus dem vorherigen Artikel.
Datei öffnen:
nano /etc/dovecot/conf.d/10-ssl.conf
Folgende Einstellungen prüfen oder ergänzen:
ssl = required
ssl_server_cert_file = /etc/letsencrypt/live/mail.example.de/fullchain.pem
ssl_server_key_file = /etc/letsencrypt/live/mail.example.de/privkey.pem
ssl_min_protocol = TLSv1.2
Anschließend Dovecot neu starten:
systemctl restart dovecot
Mit ssl = required werden unverschlüsselte Anmeldungen grundsätzlich verweigert. Benutzer müssen sich entweder über IMAPS (Port 993) oder über STARTTLS auf Port 143 verbinden.
Standardordner für Mailclients bereitstellen
Moderne Mailclients erwarten bestimmte Ordner wie „Gesendet“, „Papierkorb“ oder „Entwürfe“. Dovecot kann diese Ordner automatisch bereitstellen.
Datei öffnen:
nano /etc/dovecot/conf.d/15-mailboxes.conf
Folgende Einträge prüfen:
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
Dadurch erkennen Thunderbird, Outlook und mobile Geräte die Standardordner automatisch und verwenden sie korrekt.
Wie funktioniert die Anmeldung?
Hier wird es interessant. Aktuell verwenden wir keine Datenbank und keine virtuellen Benutzer. Stattdessen nutzt Dovecot die Linux-Benutzer des Systems.
In:
/etc/dovecot/conf.d/10-auth.conf
finden wir:
!include auth-system.conf.ext
Dadurch verwendet Dovecot die Systemauthentifizierung. Der Anmeldevorgang sieht folgendermaßen aus:
Thunderbird
│
▼
Dovecot
│
▼
PAM
│
▼
/etc/shadow
Wenn sich der Benutzer tobias anmeldet, prüft Dovecot das Passwort über PAM gegen die Linux-Benutzerverwaltung.
IMAP-Verbindung verstehen
Wenn Thunderbird eine Verbindung aufbaut:
mail.example.de
Port 143
STARTTLS
oder:
mail.example.de
Port 993
SSL/TLS
kommuniziert Thunderbird ausschließlich mit Dovecot.
Der Client fragt beispielsweise, Welche Ordner existieren? oder Gib mir die neuesten E-Mails. Dovecot liest die Informationen direkt aus dem Maildir und liefert sie an den Client zurück.
Die wichtigsten Mailserver-Ports
Bei einem Mailserver kommen mehrere Ports zum Einsatz, die unterschiedliche Aufgaben erfüllen:
| Port | Dienst | Zweck |
|---|---|---|
| 25 | SMTP | Kommunikation zwischen Mailservern |
| 587 | Submission | Versand durch Mailclients |
| 143 | IMAP | Mailabruf mit STARTTLS |
| 993 | IMAPS | Mailabruf mit direkter TLS-Verschlüsselung |
Wichtig: Port 25 wird für den Austausch zwischen Mailservern verwendet. Die Anmeldung eines Benutzers erfolgt normalerweise über Port 587 (Submission). Deshalb aktivieren wir die SMTP-Authentifizierung nur auf Submission und nicht auf dem klassischen SMTP-Port.
SMTP-Authentifizierung mit Dovecot SASL
Beim Versand von E-Mails läuft der Prozess anders. Thunderbird verbindet sich jetzt mit:
mail.example.de
Port 587
Das ist der Submission-Port von Postfix. Postfix muss nun prüfen, ob der Benutzer E-Mails versenden darf. Anstatt selbst Passwörter zu verwalten, fragt Postfix Dovecot. Dazu konfigurieren wir in:
nano /etc/dovecot/conf.d/10-master.conf
folgenden Socket:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
Danach:
systemctl restart dovecot
Postfix mit Dovecot verbinden
Nun konfigurieren wir Postfix:
postconf -e 'smtpd_sasl_type = dovecot'
postconf -e 'smtpd_sasl_path = private/auth'
postconf -e 'smtpd_sasl_security_options = noanonymous'
Anschließend:
systemctl restart postfix
Der Anmeldeprozess beim Versand sieht jetzt so aus:
Thunderbird
│
▼
Postfix
│
▼
Dovecot SASL
│
▼
PAM
│
▼
/etc/shadow
Dadurch verwenden IMAP und SMTP dieselben Zugangsdaten.
Submission-Port aktivieren
In:
nano /etc/postfix/master.cf
aktivieren wir Submission:
submission inet n - y - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
Danach:
systemctl reload postfix
Thunderbird konfigurieren
IMAP
Server: mail.example.de
Port: 143
STARTTLS
oder
Port: 993
SSL/TLS
Benutzer:
tobias
SMTP
Server: mail.example.de
Port: 587
STARTTLS
Authentifizierung: Passwort normal
Benutzer:
tobias
Firewall konfigurieren
Damit Mailclients und andere Mailserver den Server erreichen können, müssen die benötigten Ports in der Firewall freigegeben werden.
Bei Verwendung von UFW:
ufw allow 25/tcp
ufw allow 587/tcp
ufw allow 143/tcp
ufw allow 993/tcp
Aktuelle Regeln anzeigen:
ufw status numbered
Anschließend prüfen:
ss -tlnp | grep -E '25|587|143|993'
Die Ausgabe sollte zeigen, dass Postfix auf Port 25 und 587 sowie Dovecot auf Port 143 und 993 lauscht.
Funktion testen
Testmail erzeugen:
echo "Hallo Welt" | mail -s "Testmail" tobias
Kontrolle:
ls /home/tobias/Maildir/new
Die neue Nachricht sollte dort erscheinen. Anschließend sollte Thunderbird die E-Mail abrufen können.
Zusätzliche E-Mail-Adressen mit Aliassen erstellen
In unserem aktuellen Setup entspricht jede Mailbox einem Linux-Benutzer. Möchten wir beispielsweise die Adresse info@example.de oder support@example.de verwenden, müssten wir normalerweise zusätzliche Linux-Benutzer anlegen. Alternativ können sogenannte Aliasse verwendet werden. Ein Alias leitet eingehende E-Mails an einen bestehenden Benutzer weiter.
Datei öffnen:
nano /etc/aliases
Beispiel:
info: tobias
support: tobias
verkauf: tobias
Anschließend die Alias-Datenbank aktualisieren:
newaliases
Ab sofort werden E-Mails an info@example.de, support@example.de und verkauf@example.de automatisch an das Postfach des Benutzers tobias zugestellt.
Zu beachten ist, dass Aliasse keine eigenen Postfächer besitzen. Alle Nachrichten landen im selben Posteingang. Eigene Passwörter oder getrennte IMAP-Konten sind mit Aliassen nicht möglich. Für eigenständige Mailkonten benötigen wir entweder zusätzliche Linux-Benutzer oder später virtuelle Mailboxen, die wir im nächsten Teil der Serie einrichten werden.
Fehleranalyse und Logdateien
Bei Problemen helfen die Logdateien meist schneller als jede Konfigurationsprüfung.
Dovecot-Protokoll anzeigen:
journalctl -u dovecot -f
Postfix-Protokoll anzeigen:
journalctl -u postfix -f
TLS-Verbindung testen:
openssl s_client -connect mail.example.de:993
STARTTLS auf IMAP testen:
openssl s_client -connect mail.example.de:143 -starttls imap
Mit diesen Befehlen lassen sich die meisten Verbindungs-, Authentifizierungs- und TLS-Probleme schnell eingrenzen.
Fazit
Mit diesem Aufbau verfügen wir bereits über einen vollständig funktionierenden Mailserver mit:
- Postfix für SMTP
- Dovecot für IMAP und POP3
- Maildir-Postfächern
- TLS-Verschlüsselung
- SMTP-Authentifizierung über Dovecot SASL
- Linux-Benutzern als Mailkonten
Für Testumgebungen und zum Verständnis der internen Abläufe ist dieses Setup ideal. In produktiven Umgebungen wird jedoch meist auf virtuelle Benutzer und zentrale Mailbox-Verwaltung umgestellt. Im nächsten Teil betrachten wir deshalb den Aufbau eines modernen Mailservers mit virtuellen Mailboxen, Dovecot LMTP und Datenbankanbindung.
