Uncategorized
0

Dovecot verstehen und konfigurieren: Lokale Benutzer, Maildir und SMTP-Authentifizierung mit Postfix

In den vorherigen Artikeln haben wir bereits einen grundlegenden Mailserver mit Postfix eingerichtet und TLS mit Let’s Encrypt konfiguriert:

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:

PortDienstZweck
25SMTPKommunikation zwischen Mailservern
587SubmissionVersand durch Mailclients
143IMAPMailabruf mit STARTTLS
993IMAPSMailabruf 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.

Inhalt

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.