[[Vorlage(Getestet, bionic, focal)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] }}} [[Inhaltsverzeichnis(1)]] [[Bild(./dovecot_logo.gif, align=left)]] [http://www.dovecot.org/ Dovecot] {en} ist ein Open-Source-E-Mailserver für Linux, der die Protokolle IMAP und POP3 unterstützt. Seine Spezialität sind kleine Netzwerke (ca. 200 Mailboxen) bis hin zu großen Firmennetzwerken (über 1000 Mailboxen). Die Daten werden im mbox- bzw. Maildir-Format abgelegt und können so leicht migriert oder in E-Mail-Clients genutzt werden, die lokal auf die Daten zugreifen. Des Weiteren müssen keine Benutzer angelegt werden. Jeder lokale Benutzer kann sich direkt auf dem Mailserver mit seinem Benutzerdaten anmelden. = Installation = == Grundfunktionalität == Zuerst muss das Grundpaket installiert werden [1]: {{{#!vorlage Paketinstallation dovecot-core }}} Die zu installierenden Protokoll-Pakete sind abhängig von den E-Mail-Protokollen, die man anbieten möchte. Wer Dovecot z.B. als reinen IMAP-Server nutzen möchte, braucht '''dovecot-pop3d''' nicht zu installieren; umgekehrt gilt natürlich dasselbe. Mindestens eines muss aber installiert sein. {{{#!vorlage Paketinstallation dovecot-imapd dovecot-pop3d }}} == Benutzerauthentifizierung == Dovecot kann sich gegen sehr viele Benutzerdatenbanken authentifizieren. Neben lokal gespeicherten Passwortdatenbanken oder der Authentifizierung anhand der Systembenutzer kann LDAP oder eine klassische Datenbank benutzt werden. Dovecot unterstützt [:MySQL:], [:PostgreSQL:] und [:SQLite:]. {{{#!vorlage Paketinstallation dovecot-ldap, optional dovecot-mysql, optional dovecot-pgsql, optional dovecot-sqlite, optional }}} == Hilfspakete == Zudem bietet Dovecot noch einige Hilfspakete. Insbesondere die beiden Sieve-Pakete, die eine serverseitige E-Mail-Filterung ermöglichen und das Antispam-Plugin sind sehr nützlich. {{{#!vorlage Paketinstallation dovecot-lmtpd, optional dovecot-sieve, optional dovecot-managesieved, optional dovecot-antispam, optional }}} = Dienststeuerung = Dovecot arbeitet als [:Dienste:Dienst] im Hintergrund. Nachdem alle benötigten Pakete (nach)installiert und der Server korrekt konfiguriert wurde, kann man ihn aus einem Terminal heraus [2] über den Befehl {{{#!vorlage Befehl sudo service dovecot restart }}} neu starten. = Konfiguration = Dovecot 2 wird, anders als noch Dovecot 1, über Konfigurationsdateien unterhalb des Verzeichnisses '''/etc/dovecot/conf.d/''' konfiguriert. Die Datei '''/etc/dovecot/dovecot.conf''' ist weiterhin vorhanden, sie bindet die jeweiligen spezifischen Konfigurationsdateien ein. Eine monolithische Konfiguration ist somit weiterhin möglich, die Aufsplittung der Konfiguration ist allerdings sehr empfehlenswert, da man so bei einer Fehlkonfiguration nur den betroffenen Teil zurücksetzen muss, um wieder einen funktionierenden E-Mail-Server zu haben. Falls man sich die komplette aktuelle Konfiguration anzeigen lassen möchte, kann man dies mit: {{{#!vorlage Befehl doveconf -n }}} tun. == Konfiguration der POP3 und IMAP-Backends == Grundsätzlich sollten die Standardeinstellungen bei beiden ausreichen, allerdings schadet es nicht, sich die beiden Konfigurationsdateien einmal anzusehen. Diese sind '''/etc/dovecot/conf.d/20-pop3.conf''' und '''/etc/dovecot/conf.d/20-imap.conf'''. In beiden findet man eine Variable, mit der man auf Eigenheiten bestimmter E-Mail-Clients eingehen kann. Diese lauten `pop3_client_workarounds` beziehungsweise `imap_client_workarounds` und sind standardmäßig auskommentiert. Die möglichen Belegungen werden in den Kommentaren dazu erläutert. Ebenso findet man in beiden Dateien die Variable `mail_max_userip_connections`, welche angibt, wie viele gleichzeitige Verbindungen von einem Benutzer pro verbundener Internet-IP erlaubt sind. Diese ist bei beiden standardmäßig auf 10 eingestellt, was im Normalfall ausreichen sollte. Gerade bei IMAP in Verbindung mit IMAP IDLE für Push-Benachrichtigungen kann es aber vorkommen, das mehr Verbindungen benötigt werden. Wenn man dann noch mit mehreren Clients (Laptop, Smartphone, Tablet) hinter einem NAT-Router sitzt, bekommt man Verbindungsprobleme. Dann kann es helfen, diese Variable auf 20 oder höher zu setzen. == Verschlüsselte Kommunikation == Grundsätzlich sollte man nur verschlüsselte Kommunikation mit dem E-Mail-Server zulassen. Dazu fragt Dovecot bei Installation, ob ein selbstsigniertes Zertifikat erstellt werden soll. Hat man dies verneint, kann man dies mit [:ssl-cert:] nachholen. Besser ist es allerdings, ein korrekt signiertes Zertifikat zu benutzen. Dabei muss man genau wie in [:Apache/SSL:] beschrieben vorgehen. Alternativ kann man auch [:CAcert#Webserver:] nutzen oder eine eigene [:CA:Certificat Authority] betreiben. Hat man ein SSL-Zertifikat, muss man dieses in der Konfigurationsdatei '''/etc/dovecot/conf.d/10-ssl.conf''' eintragen. {{{ ssl = required ssl_cert = pgsql< ändern für Postgres driver = mysql # The mysqld.sock socket may be in different locations in different systems. # Use "host= ... pass=foo#bar" with double-quotes if your password has '#' character. connect = host=datenbankserver dbname=datenbankname user=datenbankbenutzer password=datenbankpasswort # Alternatively you can connect to localhost as well: #connect = host=localhost dbname=mails user=admin password=pass password_query = SELECT username, domain, password \ FROM users WHERE username = '%n' # deactivated if we are using statuc userdb user_query = SELECT home, uid, gid FROM users WHERE username = '%n' AND domain = '%d' default_pass_scheme = SHA512-CRYPT }}} Die queries müssen relevante Felder mit den passenden Namen zurückliefern! Heißen diese, wie in der oben genannten Beispieltabelle, schon in der Datenbank richtig, ist nichts weiter zu tun. Ansonsten müssen alle betroffenen Felder mit dem "AS"-Stichwort umbenannt werden. Folgende Namen müssen für die entsprechenden Felder verwendet werden: {{{#!vorlage Tabelle Feld Name +++ Benutzer `username` +++ Domäne `domain` +++ Passwort `password` +++ Home-Verzeichnis `home` +++ User-ID `uid` +++ Gruppen-ID `gid` }}} Ein entsprechender password_query mit unpassenden Benutzer- und Passwort-Feldern könnte dann wie folgt aussehen: {{{#!code sql SELECT user AS username, domain, pw_hash AS password FROM usertable WHERE user = '%n' }}} Für den user_query gilt das gleiche: {{{#!code sql SELECT homedir AS home, user_id AS uid, group_id AS gid FROM usertable WHERE user = '%n' AND domain = '%d' }}} == Plugins == Dovecot bringt mehrere Plugins mit, die man optional aktivieren kann, um zusätzliche Funktionalitäten bereitzustellen. Plugins können in der Datei '''10-mail.conf''' global aktiviert werden. Alternativ bietet es sich an, die Plugins in den Konfigurationsdateien der Unterkomponenten zu aktivieren. So nützt einem das Antispam-Plugin bei Benutzung von POP3 wenig, da die Funktionalität hier brachliegt. Es liegt also nahe, dieses nur in der IMAP-Konfiguration zu aktivieren. In der '''10-mail.conf''' trägt man die zu verwendenden Plugins als Leerzeichen-getrennte Liste in die `mail_plugins` ein, wobei man die Option durch Entfernen des Kommentarzeichens `#` am Zeilenanfang aktivieren muss. In den Konfigurationsdateien der Unterkomponenten trägt man die Plugins am Ende der bestehenden Auflistung ein, wobei das voranstehende `mail_plugins = $mail_plugins` nicht verändert werden darf, da sonst vorherige Plugins deaktiviert werden. === Sieve === E-Mails in Dovecot kann man mit [wikipedia:Sieve:Sieve-Skripten] automatisch filtern lassen. Wenn das Paket '''dovecot-sieve''' installiert wurde, kann pro Postfach ein Sieve-Skript abgelegt werden. Der Ort, an dem das Sieve-Skript abgelegt wird, wird in '''90-sieve.conf''' festgelegt. Standardmäßig ist dies '''$HOME/.dovecot.sieve'''. Die Logdatei findet sich unter '''$HOME/.dovecot.sieve.log'''. Das Sieve-Skript benötigt ohne eigene Konfiguration also ein (virtuelles) Homeverzeichnis. Um das Plugin zu aktivieren kann man es, alternativ zur erwähnten globalen Konfigurationsdatei, in der '''20-lmtp.conf''' eintragen. ##Das Erstellen von Sieve-Skripten ist im Artikel [:Sieve:] erklärt. === Manage-Sieve === Will man die Sieve-Skripte nicht manuell per Texteditor auf dem Server anpassen, muss bei Ubuntu nur das am Anfang des Artikels genannte Paket für das Manage-Sieve-Plugin installiert werden. Das Plugin ist nach einem Neustart von Dovecot automatisch aktiviert und übernimmt zudem die SSL-Einstellungen des Hauptprogramms. Hat man dort, wie empfohlen, SSL als erforderlich markiert, findet auch die Verbindung zum Manage-Sieve-Plugin nur verschlüsselt statt. Ist das Plugin installiert, kann man seine Sieve-Skripte auch über entsprechende Oberflächen schreiben. Der Webmailer [https://roundcube.net/ Roundcube] {en} bietet dabei eine grafische Schnittstelle. [:KMail:] hat einen simplen Texteditor integriert, der beim Speichern das Skript auf den Server lädt. Bei Thunderbird lässt sich diese Funktionalität über ein Plugin nachrüsten. === Antispam === Das Antispam-Plugin erlaubt das einfache Markieren von Nachrichten als Spam bzw. nicht-Spam. Dazu muss man nach erfolgter Konfguration die E-Mails in den Spam-Ordner verschieben, um sie als Spam zu markieren bzw. aus dem Spam-Ordner herausschieben, um sie als nicht-Spam (Ham) zu kennzeichnen. Das Plugin trainiert dann automatisch den eingetragenen Spamfilter. Antispam sortiert nicht eingehende E-Mails automatisch in den Spam-Ordner. Dafür erstellt man sich eine für die eigenen Spam-Konfiguration passende Sieve-Regel wie z.B. die folgende: {{{ require ["fileinto","imapflags"]; # rule:[SPAM] if header :contains "subject" ["***SPAM***"] { setflag "\\seen"; fileinto "Spam"; stop; } else { # The rest goes into INBOX # default is "implicit keep", we do it explicitly here keep; } }}} Das Plugin kann entweder global oder in der '''20-imap.conf''' aktiviert werden und benötigt eine funktionierende Spamassasin-Installation. Zusätzlich muss ein Skript erstellt werden, das den Spamfilter antrainiert. Dieses speichert man unter '''/usr/local/bin/sa-learn-pipe.sh''' mit folgendem Inhalt: {{{#!code bash #!/bin/bash echo /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt echo "$$-start ($*)" >> /tmp/sa-learn-pipe.log /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt && rm -f /tmp/sendmail-msg-$$.txt & echo "$$-end" >> /tmp/sa-learn-pipe.log exit 0 }}} Dieses Skript wird dann in der Pluginkonfiguration '''90-plugin.conf''' eingetragen, zusammen mit ein paar weiteren Optionen. {{{ plugin { # antispam_mail_sendmail_args= --username=%u # Wenn man benutzerspezifische Spamfilter benutzen möchte antispam_mail_spam = --spam antispam_mail_notspam = --ham antispam_mail_sendmail = /usr/local/bin/sa-learn-pipe.sh # Das oben erstellte Skript antispam_spam = Spam;SPAM # Ordner die Spam enthalten antispam_trash = Trash;trash # Papierkörbe; wenn eine Mail hierhin verschoben wird, gilt sie nicht als "Ham" } }}} === Weitere Plugins === Dovecot bringt noch weitere Plugins mit, unter anderen ein Plugin, mit dem man Quotas für Benutzer aktivieren kann. Für diese sei aber auf das ausführliche Dovecot-Wiki verwiesen. = Links = * [http://www.dovecot.org/ Projektseite] {en} * [https://doc.dovecot.org/ Dokumentation] {en} * [ubuntu_doc:community/Dovecot:Dovecot] {en} im Ubuntu-Wiki * [ubuntu_doc:lts/serverguide/dovecot-server.html:Dovecot Server] {de} - Ubuntu Server-Leitfaden * [https://skrilnetz.net/server-side-mail-filtering-with-horde-ingo-and-sieve/ Server side Mail Filtering with Horde – Ingo and Sieve] {en} * [:Serverdienste#E-Mail:] {Übersicht} weitere E-Mail-Server # tag: Netzwerk, Internet, Server, Kommunikation, Email, IMAP, POP, SMTP