Server-Blog Ubuntu Server

Thema Dovecot: Einrichtung und Konfiguration

Abschnitt 1: Vorwort & Aufgaben von Dovecot

Wie bereits erwähnt, übernimmt **Dovecot** den Großteil der Arbeit an den Postfächern. Wenn die E-Mail die Postfix-Prüfungen bestanden hat und der Empfänger existiert, leitet Postfix die Mail per **LMTP-Protokoll** an Dovecot weiter.

Dovecot führt nun die **Sieve-Scripte** für die Domain aus und stellt die Mail im richtigen Postfach zu. Dovecot kann auch allein betrieben werden, beispielsweise als eine Art Use-Net. Mit den **Public Foldern** haben alle Benutzer jeweils Zugriff (lesen, schreiben, löschen, einstellen usw.).

Kommen wir zu den Grundlagen der Konfiguration. Dovecot hat viele kleine `.conf`-Dateien, die am Ende alle zusammen die Gesamtkonfiguration ergeben. Da Dovecot auch die Benutzerverwaltung übernimmt, erstellen wir am Schluss die User-Datei und legen die erforderlichen Ordner im System an.


Abschnitt 2: Dovecot Installation & Struktur

Die Installation haben wir bereits im **Postfix-Abschnitt** mit dem Befehl apt install ... dovecot-core ... durchgeführt.

Schauen Sie sich die Struktur im Hauptverzeichnis an:

root@mx:/etc/dovecot# ls -l
total 56
d-wx---r-- 2 root  root  4096 Mai 27 20:18 conf.d
--w----r-- 1 root  root  4343 Dez  4 2024 dovecot.conf
-r-------- 1 dovecot dovecot 2939 Mai 27 18:11 users

In **conf.d** liegen die eigentlichen Konfigurations-Abschnitte. Die Datei **dovecot.conf** ist die Hauptdatei, aber ohne nennenswerten Inhalt. Die Datei **users** beinhaltet später unsere ganzen Accounts.

root@mx:/etc/dovecot# ls -l conf.d/
total 140
-rw-r--r-- 1 root root  5252 Dez  4 2024 10-auth.conf
... (gekürzte Ausgabe)
-rw-r--r-- 1 root root  2182 Dez  1 2024 auth-system.conf.ext

Abschnitt 3: Wichtige Konfigurationsdateien in conf.d

🔒 10-auth.conf (Authentifizierung)

Diese Datei definiert, wie sich Benutzer anmelden dürfen. Wir erlauben nur verschlüsselte Authentifizierung und binden unser Passwort-File ein:

disable_plaintext_auth = yes
auth_username_format = %Lu
auth_mechanisms = plain login
!include auth-passwdfile.conf.ext

📜 10-director.conf (Load Balancing)

Der Director-Service wird hauptsächlich für größere Installationen mit mehreren Mailservern verwendet. Hier sehen Sie die Listener-Definitionen:

service director {
  unix_listener login/director {
    #mode = 0666
  }
... (gekürzte Konfiguration) ...
protocol lmtp {
  #auth_socket_path = director-userdb
}

📬 10-mail.conf (Postfach-Speicherort)

Dies ist zentral für die Speicherstruktur. Wir definieren hier das **Maildir-Format** und den Pfad. Die Variablen %Ld (Domain) und %Ln (User) sorgen für die korrekte Trennung der Postfächer.

mail_location = maildir:/srv/vmail/%Ld/%Ln/Maildir/
...

10-logging.conf

Hier wird das Logging-Verhalten definiert. Der Inhalt ist für uns im Moment nicht entscheidend, da wir die Standardeinstellungen nutzen.

plugin {
...

Abschnitt 4: User `vmail` und Ordnerstruktur anlegen

Lokaler User `vmail`

Damit Dovecot ausreichende Rechte zum Lesen, Schreiben und Löschen von E-Mails und Ordnern hat, legen wir einen lokalen Systembenutzer **vmail** an, jedoch **ohne Login-Recht** (/bin/false).

# Benutzer und Gruppe anlegen für Email
groupadd -g 12000 vmail
useradd -u 12000 -g 12000 -s /bin/false vmail

# Ordner für alle Emails anlegen
mkdir /srv/vmail
chown -R vmail:vmail /srv/vmail
chmod 770 /srv/vmail

Mehr müssen wir für die **persönlichen Postfächer** nicht machen, den Rest (Erstellung der Unterordner) erledigt Dovecot beim ersten Login oder beim Empfang der ersten Mail. Bei den Public Foldern ist etwas mehr manuelle Arbeit nötig.

Wichtiger Hinweis: Dovecot und Postfix sind sehr streng in der Syntax. Jeder Fehler löst eine Reihe von weiteren Fehlern aus. Lesen Sie auf jeden Fall die Logs (/var/log/mail.log und /var/log/mail.err) bei Ihren ersten Tests.

📣 Public Folder Struktur anlegen

Wir müssen die Ordnerstruktur für die **Public Folder** anlegen, damit E-Mails direkt in diese Ordner gesendet werden können (z.B. über die Adresse fail2ban@domain.com).

Dovecot wird die Struktur aus der 10-mail.conf auslesen und auf **location = maildir:/srv/vmail/public/%Ld/Maildir/** treffen. Die Variable %Ld wird als Domainname (z.B. domain.com) übersetzt.

Genau dort legen wir nun unsere Öffentlichen (Public) Ordner an. Als Beispiel die Struktur für eine Domain:

  • webmaster
  • hostmaster
  • postmaster
  • shopping
  • fail2ban
  • newsletter
  • info

**Achtung!** Jeder Public Folder wird mit einem Punkt (.) voran geschrieben! Die Struktur sieht dann so aus (Beispiel: `.fail2ban`):

root@mx:/etc/dovecot# ls -l /srv/vmail/public/domain.com/Maildir/.fail2ban/
total 1208
drwxrwxr-x 2 vmail vmail 253952 Jul  1 21:10 cur
drwxrwxr-x 2 vmail vmail  4096 Jul  1 21:10 new
drwxrwxr-x 2 vmail vmail  4096 Jul  6 11:29 tmp

Wenn alle Ordner für alle Ihre Domains angelegt sind, setzen Sie die Berechtigung mit:

chown -R vmail:vmail /srv/vmail/public
chmod -R 775 /srv/vmail/public/

Abschnitt 5: Datenbank für die E-Mail-Benutzer anlegen

Alle Benutzer liegen in der einfachen Textdatei **/etc/dovecot/users**, wobei das Passwort mit einem starken Hash versehen wird.

Der systeminterne Benutzer vmail braucht keine Loginmöglichkeit, bekommt aber ein hochkomplexes, nicht erratbares Passwort zur Sicherung: {SHA512-CRYPT}$X.

Wir erstellen ein Passwort mit **doveadm pw -s SHA512-CRYPT** (Beispiel mit 'mypassword'):

root@mx:/etc/dovecot# doveadm pw -s SHA512-CRYPT
Enter new password: mypassword
Retype new password: mypassword
{SHA512-CRYPT}$6$t8EtOg7SKgJ8V26w$l.zf5MZhXyasSMu8yzNf6dUf4D/Wz/mRHauSnBYtu1b5b2bysgMEq0yZWPC7DB/pb8lYWobgD7ngALiE.pq2j1

Nun können wir mit folgender Zeile den ersten User anlegen. Datei öffnen mit:

nano /etc/dovecot/users

Wichtige Hinweise zum Schluss:

  • Ihr öffentliches und internes DNS muss funktionieren. Alle Namen und Adressen müssen sich auflösen lassen (wichtig für die Validierung).
  • Ihre Zertifikate müssen gültig sein und Ihre Systemzeit muss stimmen.


Abschnitt 6: Dovecot Version CE 2.4

Dieser Blogbeitrag basiert auf der **Dovecot Community Edition (CE) Version 2.4**. Die gezeigten Konfigurationen sind für diese Version optimiert und sollten auch mit neueren Minor-Versionen kompatibel sein.