Ubuntu 16.04 - Mailserver - Dovecot
Dovecot ist ein Open Source IMAP und POP3 Server, der Dieste bereitstellt um Mails mit einem Client wie Outlook oder Thunderbird abzuholen. Der Server legt die E-Mails im mbox oder Maildir-Format ab.
Die Installation wird analog zu meinem alten Setup ablaufen. Werde die Schritte aber dennoch notieren um sie mir wieder ins Gedächtnis zu rufen und einen vollständigen Notizzettel zu haben :-)
Für die Installation des Grundsystems benötigt man das Core-Paket (dovecot-core) und mindestens eines der beiden folgenden Pakete:
- dovecot-imapd
- dovecot-pop3d
Möchte man nur einen IMAP Server muss man das Paket dovecot-pop3d nicht installieren und umgekehrt.
Damit Dovecot Werte aus einer MySQL Datenbank lesen kann wird noch das Paket dovecot-mysql installiert.
Die Konfiguration findet zwar grundsätzlich in der Datei /etc/dovecot/dovecot.conf statt, in Ubuntu sind die meißten Optionen allerdings in Dateien in /etc/dovecot/conf.d ausgelagert. Daher ist es eigentlich nicht nötig die Hauptkonfigurationsdatei zu verändern.
Alle Einstellungen die von den Standardeinstellungen abweichen, kann man sich mit
anzeigen lassen. Nach Änderungen an der Konfiguration muss natürlich Dovecot neu gestartet werden.
Standardmäßig werden die Protokolle aktiviert, deren Paket man installiert hat. Diese Pakete legen Dateien an die unter /usr/share/dovecot/protocols.d/*.protocol zu finden sind.
10-auth.conf (Benutzerauthentifikation)
Die Benutzer sollen über eine MySQL Datenbank verwaltet werden können. Dazu haben wir ja schon wie in der Einleitung beschrieben das Paket dovecot-mysql installiert.
Die Konfiguration erfolgt über /etc/dovecot/conf.d/10-auth.conf. Hier muss die Zeile für die Authentifikation über das System auskommentiert werden und die Zeile für die Authentifikation am SQL Server einkommentiert werden:
Außerdem sollen bei einer unverschlüsselten Verbindung keine Klartext Kennwörter erlaubt sein. Dazu aktiviert man in der Datei den Eintrag:
Da ich für Benutzer keine besonderen Einstellungen wie Quotas oder ähnliches verwenden möchte, verwende ich die am Ende der Datei /etc/dovecot/conf.d/auth-sql.conf.ext stehende, statische userdb Einstellung. Diese besagt dass für jeden Benutzer ein Verzeichnis unter /var/vmail/[Domainname]/[Benutzername] angelegt wird in dem bessen Mails gespeichert werden.
Außerdem wird hier festgelegt dass der Zugriff auf die Verzeichnisse über einen gemeinsamen Benutzer namens vmail mit der Gruppe vmail passieren soll.
Diesen Benutzer und die Gruppe muss man anlegen:
Außerdem muss das Verzeichnis /var/vmail angelegt werden und dem Benutzer vmail und der Gruppe vmail zugewiesen werden.
In der Datei /etc/dovecot/auth-sql.conf.ext wird außerdem auf die Datei /etc/dovecot/dovecot-sql.conf.ext referenziert in der weitere Parameter für die Verbindung mit der Datenbank festgelegt werden.
Für die Authentifikation der Benutzer wird eine MySQL Datenbank benötigt. Sollte der Server noch nicht installiert sein tut man dies mit:
Wie in der Datei /etc/dovecot/dovecot-sql.conf.ext beschrieben muss man eine neue Datenbank mit ein paar Tabellen anlegen. Die Datenbank bekommt den Namen vmail. Dieser Name wird in den meißten Anleitungen im Netz gewält. Als Kollation verwende ich utf8_general_ci.
Für den Zugriff auf die Datenbank wird noch ein Benutzer benötigt.
Als nächstes die Benutzertabelle:
Um einen Benutzer anzulegen muss man einen Eintrag in der users - Tabelle mit Benutzernamen, Domain und einem Passwort-Hash erzeugen. Den Passwort-Hash kann man z.B. erzeugen mit:
Es wird zweimal um die Eingabe des neuen Passworts gefragt und dann der Hash ausgegeben. Das {SHA512-CRYPT} am Anfang muss man weglassen, da es nur den verwendeten Algorithmus zeigt.
Sind die Tabellen angelegt, können wir uns an die Konfiguration machen. Dazu editiert man die Datei /etc/dovecot/dovecot-sql.conf.ext.
Hier wählt man zunächst die Verbindungsart aus. Nicht vergessen die benötigten Einträge auch einzukommentieren.
Als nächstes legt man die Verbindungsparameter fest. Man kann statt dem Socket auch localhost verwenden.
Der voreingestellte Hashing Algorithmus MD5 gilt nicht als besonders sicher. Daher verwende ich als Passwort Schema den stärkeren SHA512-CRYPT Algorithmus.
Den Passwort-Query kann man so einkommentieren wie er im Beispiel steht:
10-mail.conf (Mailbox Format und Speicherort)
Dovecot kann Postfächer im mbox sowie im Maildir Format verwalten. Bei der mbox Variante werden alle Mails in einer Datei gespeichert, beim maildir Format ist jede Mail eine eigene Datei.
Standardmäßig ist das mbox Format voreingestellt und das INBOX Verzeichnis des Postfachs liegt unter /var/mail/%u und die restlichen Verzeichnisse im Benutzerordner unter ~/mail.
Da mein bisheriger Mailbestand auf Maildir basiert und Maildir einfacher zu handhaben ist und obendrein auch fehlertoleranter ist, werde ich Dovecot so konfigurieren dass Dovecot wieder das Maildir Format verwendet.
Dazu editiert man die Datei /etc/dovecot/conf.d/10-mail.conf und trägt als mail_location folgendes ein:
Zusätzlich muss noch unser neuer Systembenutzer vmail sowie dessen Gruppe in diese Datei eingetragen werden:
Damit wird Dovecot mitgeteilt, wie und mit welchem Benutzer/Gruppe auf die Mailbox Verzeichnisse zugegriffen werden soll.
Als nächste Datei kommt die /etc/dovecot/conf.d/10-master.conf.
Da ich IMAP nur über Port 143 mit TLS erlauben möchte, habe ich iher IMAPS deaktiviert indem ich den Port auf 0 gesetzt habe.
Außerdem habe ich hier dem Benutzer vmail Zugriff auf den Auth-Socket von Dovecot gegeben:
10-ssl.conf (Verbindung absichern mit TLS/SSL)
Die SSL/TLS Konfiguration kann angepasst werden indem man die Datei /etc/dovecot/conf.d/10-ssl.conf editiert. Ich empfehle ein Zertifikat von Let's encrypt zu verwenden. Man kann während der Einrichtung aber auch das selbst signierte Zertifikat von Ubuntu verwenden. Dieses kann man installieren und erzeugen mit:
Damit werden diese beiden Dateien erzeugt:
SSL-Zertifikat
|
/etc/ssl/certs/ssl-cert-snakeoil.pem
|
SSL-Schlüssel
|
/etc/ssl/private/ssl-cert-snakeoil.key
|
Spätestens wenn der Server mal Live geht sollte das Zertifikat gegen eines von Let's encrypt ersetzt werden. Zum Testen während der Einrichtung wird dieses aber erst mal reichen.
Folgende Anpassungen werden jetzt in der Datei /etc/dovecot/conf.d/10-ssl.conf gemacht:
Um zu testen ob das Zertifikat korrekt eingebunden wurde kann man folgenden Befehl verwenden:
Funktioniert natürlich nur dann wenn der Dovecot Server neu gestartet wurde und die zuletzt getätigten Einstellungen auch übernommen wurden.
In der Datei /etc/dovecot/conf.d/15-lda.conf habe ich nur die Postmaster-Adresse gesetzt damit ich mitbekomme, wenn eine Zustellung fehlschlägt.
In der Datei /etc/dovecot/conf.d/15-mailboxes.conf werden Details zu den Mailboxen wie z.B. Unterordner die standardmäßig angelegt werden definiert. Ich habe hier die Standard-Order so eingestellt dass diese automatisch aboniert werden.
Zum Abschluss dieses Schrittes muss man jetzt dem Dovecot neu starten:
Jetzt sollte man sich mit einem E-Mail Client mit dem IMAP-Server verbinden können. Man wird eine Warnung wegen dem selbst signierten Zertifikat bekommen für welches man eine Ausnahme festlegen muss. Dann sollte die Verbindung aber klappen. Folgende Einstellungen sollten gewählt werden:
Einstellung
|
Wert
|
Verbindungsart
|
IMAP
|
Port
|
143
|
Verbindungssicherheit
|
STARTSSL
|
Authentifizierung
|
Passwort, normal
|
Vorbereitungen für Postfix
Postfix wird später anfragen an Dovecot stellen, ob ein Benutzer berechtigt ist Mails zu versenden. Dazu muss Dovecot einen Socket bereitstellen über den Postfix seine Anfragen stellen kann. Der Socket wird in der Datei /etc/dovecot/conf.d/10-master.conf konfiguriert.
Für die lokale Zustellung in die Postfächer wird LMTP (Local Mail Transport Protocol) verwendet, das ähnlich wie SMTP ist. Dazu wird das Paket dovecot-lmtpd benötigt.
Dazu richten wir postfix nochmal einen Socket in der Datei /etc/dovecot/conf.d/10-master.conf ein: