Dieser Artikel beschreibt die grundlegende Installation und Konfiguration eines Courier-IMAP-Mail-Servers mit SSL-Verschlüsselung.
Das folgende beispielhafte Szenario basiert auf einem Server Debian Squeeze mit Postfix als MTA. Für Ubuntu sollte das Ganze ähnlich ablaufen. Ausgangslage in diesem Beispiel ist, dass Postfix bereits lauffähig konfiguriert ist.
Courier kann zwar auch als vollwertiger, eigenständiger MTA laufen. In den meisten Fällen werden jedoch nur seine POP3 oder IMAP-Fähigkeiten eingesetzt. Holt ein Klient (z.B. Thunderbird) seine Mails via IMAP, so verbleiben diese auf dem IMAP-Server. Bei IMAP werden die Mails mit dem Client synchronisiert, im Gegensatz zu POP3, wo eine abgerufene Mail nicht mehr auf dem Server verbleibt.
Installation
Zunächst müssen wir das richtige Paket inklusive seiner Abhängigkeiten installieren:
apt-get install courier-imap-ssl
Die folgenden zusätzlichen Pakete werden installiert:
courier-authdaemon courier-authlib courier-authlib-userdb courier-base
courier-imap courier-ssl expect libfam0 tcl8.5
Zunächst mal werden wir informiert, dass Courier später auch über ein Webinterface verwaltet werden kann und dazu Änderungen in der Dateistruktur nötig wären. Wollen wir Courier über ein Webinterface administrieren? In diesem Beispiel entscheiden wir uns gegen die Administration über das Webinterface und für die manuelle Variante.
So, nun noch die Information, dass ein selbstsigniertes X.509 Zertifikat erstellt wird. Dies stellt die Verschlüsselung zwischen Server und Klient sicher. Beim ersten Kontakt (später, nach dem erfolgreichen Setup) mit dem MUA (Thunderbird, Outlook usw.) erhalten wir eine Warnmeldung, dass das Zertifikat gefälscht sein könnte. Es sei denn wir hätten es inzwischen durch eines ersetzt, dass von einer anerkannten CA (Certification Authority) signiert worden wäre, die Thunderbird kennt und akzeptiert. Doch das würde wohl Geld kosten. In diesem Beispiel entscheiden wir uns für die automatische Installation eines selbst signierten Zertifikats:
Vorbereitung
So, alles installiert. An dieser Stelle ergeht die Empfehlung, eine seperate Shell zu öffnen, in der das Logfile laufend aktualisiert wird. Mit tail -f sorgen wir dabei für eine laufende Aktualisierung (nahezu) in Echtzeit. Dies hilft uns bei der Bestätigung unserer Aktionen sowie bei der Fehlersuche:
tail -f /var/log/mail.info
(...)
Jun 20 14:12:52 box authdaemond: modules="authpam", daemons=5
Jun 20 14:12:52 box authdaemond: Installing libauthpam
Jun 20 14:12:52 box authdaemond: Installation complete: authpam
Sieht doch ganz gut aus. Dann überprüfen wir gleich mal, ob der Dienst IMAP mit SSL auf Port 993 läuft:
telnet localhost 993
Trying ::1...
Connected to localhost.
Escape character is '^]'.
… tut er offenbar.
Dateien in /etc/courier
Nun ein Blick in das neu entstandene Verzeichnis /etc/courier. Was ist denn da alles neues zu sehen?
root@box:cd /etc/courier
root@box:ls
authdaemonrc imapd.cnf imapd-ssl shared imapd imapd.pem
- imapd.pem enthält das bei der Installation automatisch erstellte selbst signierte Zertifikat.
- imapd.cnf ist die dazugehörige Konfigurationsdatei.
- imapd entspricht der unverschlüsselten Variante von imapd-ssl (um die es hier geht)
Konfiguration: /etc/courier/imapd-ssl
Werfen wir doch gleich mal einen Blick in die Hauptkonfigurationsdatei /etc/courier/imapd-ssl:
(...)
SSLPORT=993
(...)
Hier könnten wir den Port ändern, um den Dienst auf einen anderen Port zu legen. Im Beispiel ändern wir den Port auf:
SSLPORT=10001
Nach der Änderung starten wir den Dienst neu und überprüfen die Änderung mit telnet….
root@box:/etc/init.d/courier-imap-ssl restart
Stopping Courier IMAP-SSL server: imapd-ssl.
Starting Courier IMAP-SSL server: imapd-ssl.
root@box:/etc/courier# telnet localhost 10001
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Läuft also bereits auf dem neuen Port 10001. Sieht so aus, als wären wir auf dem richtigen Weg…
Authentifizierung: /etc/courier/authdaemonrc
Und wie muss sich ein Nutzer authentifizieren? Dazu werfen wir einen Blick in /etc/courier/authdaemonrc
(…)
authmodulelist="authpam"
(…)
Standardmäßig muss sich der Benutzer also via PAM mit seinen normalen Nutzerdaten anmelden, so wie sie in /etc/passwd (bzw /etc/shadow) hinterlegt sind. Vorerst belassen wir es dabei. Soll ein Nutzer nur einen Email-Account haben, ohne Möglichkeit, sich in das System einzuloggen, entfernen wir einfach die Shell des Benutzers in /etc/passwd.
Andere Möglichkeiten der Authentifizierung wären:
authuserdb authpgsql authldap authmysql authcustom authpipe
Somit wäre dann eine Authentifizierung über verschiedene Datenbankensysteme möglich, was wir hier nicht weiter behandeln.
Firewall öffnen
Im Prinzip sollte unser IMAP-Server jetzt erreichbar sein. Jetzt müssen wir nur noch den entsprechenden Port in der Firewall öffnen ( Port 993 bzw. hier in unserem Beispiel: 10001 ):
iptables -A INPUT -p TCP --sport $P_HIGH --dport 10001 -j ACCEPT
… wobei in diesem Fall $P_HIGH bereits als unprivilegierter Port >1023 definiert war.
Mail User Agent konfigurieren
Jetzt müssen wir den MUA so konfigurieren, dass die E-Mails verschlüsselt abgerufen werden können. Dies variiert natürlich in Abhängigkeit der Postfix-Konfiguration und dem MUA der benutzt wird. Beispiel Thunderbird:
Zertifikat: Ausnahmeregel bestätigen
Nun versuchen wir, die E-Mails mit dieser Konfiguration abzurufen. Dabei behalten wir ein Auge auf die Logdatei, falls etwas schiefläuft. Im besten Fall werden wir mit (der am Anfang dieses Artikels angekündigten) Sicherheitswarnung konfrontiert:
Thunderbird vertraut uns zwar nicht, aber wir vetrauen uns und wissen, dass das Zertifikat von uns ist. Wer sicher gehen will, dass sich auch wirklich niemand dazwischen gemogelt hat, sieht sich das Zertifikat an und vergleicht den Fingerabdruck mit dem auf dem Server… Nach der Bestätigung der Ausnahmeregel können wir mit Thunderbird SSL-verschlüsselte E-Mails von unserem aufgesetzten IMAP-Server holen.
Es kann bei Debian vorkommen, dass beim Abruf der E-Mails die Meldung erscheint:
filesystem error (check for configuration errors with the FAM/Gamin library)
Dies ist scheinbar debianspezifisch. Die Lösung ist, die Bibliothek libfam durch gamin zu ersetzen….:
aptitude install gamin
…und Courier neu zu starten.
/etc/init.d/courier-imap-ssl restart
Soweit das grundlegende Setup zum Einstieg, das weder Anspruch auf Vollständigkeit erhebt, noch zwangsläufig den Königsweg darstellt.

Artikel





Die folgende Übersicht stellt einige der wichtigsten Befehle im Zusammenhang mit dem 



