35.4Dovecot (POP- und IMAP-Server)
Bis jetzt haben wir nur Postfix installiert. Wenn Sie mutt oder einen vergleichbaren E-Mail-Client direkt auf dem Server ausführen, können Sie E-Mails senden und empfangen. Wollen Sie aber mit externen Clients arbeiten, z.B. mit Thunderbird auf einem Linux-Notebook oder mit Mail-Apps auf einem Smartphone, dann müssen diese in der Lage sein, auf die Postfächer des Mail-Servers zuzugreifen.
Postfix bietet dafür keine Funktionen; als Mail-Server beherrscht er nur das Protokoll SMTP. Zum Abholen von E-Mails gibt es ergänzend dazu das Protokoll POP. Wenn Ihre E-Mails auf dem Server bleiben, aber extern verwaltet werden sollen, bietet sich alternativ das Protokoll IMAP an. Für diese beiden Protokolle ist das Programm Dovecot zuständig.
Bei Red-Hat-Distributionen (CentOS, Fedora, RHEL) befindet sich Dovecot mit all seinen Funktionen im Paket dovecot. Bei Debian und Ubuntu ist Dovecot hingegen über mehrere Pakete verteilt. Je nachdem, welches Protokoll Sie verwenden möchten, installieren Sie dovecot-imapd und/oder dovecot-pop3d.
Die Protokolle POP3 und IMAP verwenden die in Tabelle 35.3 zusammengestellten Ports.
Port |
Protokoll |
---|---|
Port 110 |
POP3 mit STARTTLS-Verschlüsselung bzw. ohne Verschlüsselung |
Port 995 |
POP3S mit Verschlüsselung |
Port 143 |
IMAP mit STARTTLS-Verschlüsselung bzw. ohne Verschlüsselung |
Port 993 |
IMAPS mit Verschlüsselung |
Tabelle 35.3Firewall-Ports für POP und IMAP
Bei den Protokollen POP3S und IMAPS ist die Verschlüsselung zwingend vorgesehen. Demgegenüber wurden die Protokolle POP3 und IMAP nachträglich um die STARTTLS-Funktionen erweitert, bei denen die Kommunikation unverschlüsselt beginnt, aber nach Möglichkeit verschlüsselt fortgesetzt wird.
Unter CentOS, Fedora, RHEL und SUSE sind alle POP- und IMAP-Ports standardmäßig blockiert. Unter SUSE öffnen Sie die Ports am einfachsten mit YaST. Unter Fedora sowie CentOS/RHEL 7 gehen Sie hingegen wie folgt vor, wobei Sie natürlich nur die Ports freischalten, die Sie tatsächlich nutzen möchten:
Im einfachsten Fall funktioniert Dovecot ohne Konfigurationsarbeiten – man würde es nicht für möglich halten, dass es so etwas überhaupt noch gibt! In der Praxis werden sich ein Blick in die Konfigurationsdateien und diverse kleine Änderungen aber nicht ganz vermeiden lassen.
Für die Konfiguration von Dovecot 2.n sind eine Menge Dateien vorgesehen: /etc/dovecot/dovecot.conf und /etc/dovecot/conf.d/*.conf. Die Datei 10-auth.conf enthält zudem einige include-Anweisungen für auth-*.ext-Dateien mit Ergänzungen. Die meisten include-Anweisungen sind aber standardmäßig auskommentiert und daher nicht aktiv.
Die *.conf-Dateien dienen auch zur Dokumentation von Dovecot. Das ist einerseits praktisch, andererseits aber auch sehr unübersichtlich: Standardmäßig umfassen die *.conf-Dateien rund 1100 Zeilen Code! Die tatsächlich relevanten Anweisungen befinden sich in ganz wenigen Zeilen, der Rest sind Kommentare.
Mit den folgenden Kommandos können Sie sich einen Überblick verschaffen. Die beiden verschachtelten grep-Kommandos eliminieren alle Kommentare und leeren Zeilen:
Die folgenden Zeilen präsentieren die Einstellungen der wichtigsten Konfigurationsdateien. Auf den Abdruck der Dateien, die nur Kommentare, aber keinen aktiven Code enthalten, habe ich aus Platzgründen verzichtet.
Beachten Sie, dass Sie die geschwungenen Klammern in einer eigenen Zeile schließen müssen. Die Anweisung protocol imap { } in nur einer Zeile ist syntaktisch nicht erlaubt.
Dovecot braucht deswegen so wenige Einstellungen, weil es für alle Optionen Defaultwerte gibt. dovecot -a liefert eine Liste aller Einstellungen, dovecot -n eine Liste mit allen Optionen, die von der Defaulteinstellung abweichen.
Dovecot ist zwar IPv6-tauglich, kommuniziert aber standardmäßig nur über das IPv4-Protokoll. Um auch IPv6 zuzulassen, müssen Sie in dovecot.conf den Parameter listen einstellen. * bedeutet, dass alle IPv4-Schnittstellen berücksichtigt werden, :: gilt analog für IPv6-Schnittstellen. Alternativ können Sie auch explizit die IPv4- und IPv6-Adressen der Schnittstellen angeben, die für den Mail-Verkehr vorgesehen sind.
Dovecot kommt sowohl mit dem Maildir- als auch mit dem mbox-Format zurecht, ganz egal, ob Sie das Programm als POP- oder IMAP-Server verwenden (oder beides). Wenn Sie Dovecot allerdings überwiegend als IMAP-Server einsetzen, ist das Maildir-Format aus Effizienzgründen vorzuziehen.
Dovecot versucht die Postfächer automatisch zu entdecken, was bei meinen Tests auch problemlos funktioniert hat. Es durchsucht dabei in dieser Reihenfolge die folgenden Verzeichnisse:
Die automatische Mailbox-Suche kann allerdings scheitern, wenn ein Benutzer noch keine Mail erhalten hat und sein Postfach somit leer ist, die Postfachdatei also noch gar nicht existiert. Deswegen empfiehlt es sich, den Mailbox-Ort in 10-mail.conf explizit einzustellen. Für Postfächer in /var/mail/username lautet die richtige Einstellung:
Damit weiß Dovecot, dass Ihr Server das mbox-Format verwendet und dass sich neue E-Mails in /var/mail/username befinden. Die zusätzliche Angabe des Verzeichnisses Mail ist für diverse Zusatzfunktionen von Dovecot erforderlich – auch dann, wenn sich in diesem Verzeichnis keine E-Mails befinden! Falls Dovecot als IMAP-Server verwendet wird, werden dort alle anderen IMAP-Postfächer gespeichert. Sie können natürlich ein beliebiges anderes Benutzerverzeichnis angeben, mail oder Mail sind aber die übliche Wahl. Das Benutzerverzeichnis muss vor der INBOX, also dem Postfach für neue E-Mails, angegeben werden.
Falls Sie Postfix so konfiguriert haben, dass der MTA die E-Mails im Maildir-Format an das lokale Verzeichnis Maildir zustellt, sieht die korrekte Einstellung von mail_location so aus:
Wenn Postfix so konfiguriert ist, dass es E-Mail-Adressen aus diversen Domänen in virtuellen Postfächern speichert, wird die Konfiguration komplizierter: Zum einen müssen Sie Dovecot verraten, wo sich die Postfächer befinden, und zum anderen brauchen Sie nun eine eigene Tabelle, die für alle E-Mail-Adressen Login-Namen und Passwörter für die POP- und SMTP-Authentifizierung enthält. Konfigurationstipps und ein konkretes Beispiel finden Sie auf den folgenden Webseiten:
http://wiki2.dovecot.org/VirtualUsers
https://workaround.org/ispmail/wheezy
Betrieb als POP- bzw. IMAP-Server
Dovecot funktioniert auf Anhieb als POP- oder IMAP-Server. Um Ihre E-Mails von einem externen Rechner mit einem E-Mail-Client herunterzuladen, richten Sie darin ein neues Konto ein und geben als Verschlüsselungsverfahren STARTTLS an. Der Benutzername entspricht dem Namen Ihres Linux-Accounts auf dem Server. Auch das Passwort ist dasselbe wie auf dem Server.
Dovecot unterstützt das Protokoll Transport Layer Security (TLS) und das Verfahren STARTTLS zum Aufbau einer verschlüsselten Verbindung. Standardmäßig verwendet Dovecot das selbst generierte Zertifikat /etc/ssl/certs/dovecot.pem, das Sie beim ersten Verbindungsaufbau im Mail-Client akzeptieren müssen. Wenn Sie ein eigenes Zertifikat und einen eigenen Schlüssel verwenden möchten, müssen Sie die Orte der Zertifikats- und Schlüsseldateien in 10-ssl.conf anpassen.
Im folgenden Beispiel kommen Dateien zum Einsatz, die auch für die HTTPS-Konfiguration von Apache verwendet wurden. Das zusätzliche CA-Zertifikat ist nur erforderlich, wenn Ihr Zertifikat von einer Zertifizierungsstelle stammt, die dem E-Mail-Client nicht bekannt ist. Der E-Mail-Client kann damit überprüfen, ob Ihre Zertifizierungsstelle befugt ist, Zertifikate auszustellen.
Die folgenden Kommandos zeigen, wie Sie bei Bedarf selbst ein neues, für zehn Jahre gültiges Zertifikat für Dovecot erzeugen (siehe auch Abschnitt 33.4, »Verschlüsselte Verbindungen (HTTPS)«):
Die dazu passende Dovecot-Konfiguration sieht wie folgt aus:
SMTP-Authentifizierung für Postfix
Im Postfix-Abschnitt habe ich bereits erwähnt, dass Postfix zwar das Protokoll SASL (Simple Authentication and Security Layer) unterstützt, die Authentifizierung aber nicht selbst durchführen kann. Dovecot kann Postfix in dieser Angelegenheit unter die Arme greifen.
Wozu SMTP-Authentifizierung?
Möglicherweise ist Ihnen nicht ganz klar, worum es bei der SMTP-Authentifizierung eigentlich geht. SMTP-Server nehmen von lokalen Programmen ohne Weiteres E-Mails zum Versand entgegen. Das gilt auch für Postfix: Wenn Sie mutt auf demselben Rechner wie Postfix ausführen, können Sie damit eine E-Mail verfassen und versenden, wobei Postfix sich um den eigentlichen Versand kümmert.
Wenn der Mail-Client aber extern läuft – zu Hause auf Ihrem Notebook, unterwegs auf Ihrem Smartphone –, dann müssen Sie sich beim Mail-Server authentifizieren, bevor Sie eine E-Mail versenden können. Um diese Authentifizierung geht es hier.
Der erforderliche Konfigurationsaufwand ist minimal. Zum Ersten müssen Sie in der Dovecot-Konfigurationsdatei 10-master.conf den im Abschnitt service auth bereits vorgesehenen Code zur Authentifizierung über die Socket-Datei /var/spool/postfix/private/auth aktivieren:
Zum Zweiten fügen Sie in 10-auth.conf den Authentifizierungsmechanismus login hinzu. Diese Ergänzung ist erforderlich, damit die Authentifizierung auch mit Outlook Express bzw. Windows Mail funktioniert.
Zuletzt müssen Sie am Ende der Postfix-Konfigurationsdatei /etc/postfix/main.cf einige Zeilen einfügen. Beachten Sie, dass die Pfadangabe für smtpd_sasl_path relativ zum Verzeichnis /var/spool/postfix erfolgen muss. Der Grund: Postfix läuft aus Sicherheitsgründen in einer chroot-Umgebung und interpretiert alle Pfadangaben in main.cf relativ zum Postfix-Queue-Verzeichnis.
Anschließend fordern Sie beide Dienste dazu auf, ihre Konfigurationsdateien neu einzulesen: