Postfix: Courier-IMAP mit SSL aufsetzen

Dieser Artikel beschreibt die grundlegende Installation und Konfiguration eines CourierIMAP-Mail-Servers mit SSL-Verschlüsselung.

SSL schloss zertifikat X.509 ubuntu thunderbird telnet SSL squeeze server postfix pop3 pop passwd PAM outlook MTA lpic 202 lpic 2 lpic iptables imap gamin firewall email debian daemon courier authdaemonrc admin 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.

courier1 zertifikat X.509 ubuntu thunderbird telnet SSL squeeze server postfix pop3 pop passwd PAM outlook MTA lpic 202 lpic 2 lpic iptables imap gamin firewall email debian daemon courier authdaemonrc admin

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:

courier2 zertifikat X.509 ubuntu thunderbird telnet SSL squeeze server postfix pop3 pop passwd PAM outlook MTA lpic 202 lpic 2 lpic iptables imap gamin firewall email debian daemon courier authdaemonrc admin

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:

thunderbird courier zertifikat X.509 ubuntu thunderbird telnet SSL squeeze server postfix pop3 pop passwd PAM outlook MTA lpic 202 lpic 2 lpic iptables imap gamin firewall email debian daemon courier authdaemonrc admin

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:

sicherheitsausnahmeregel zertifikat X.509 ubuntu thunderbird telnet SSL squeeze server postfix pop3 pop passwd PAM outlook MTA lpic 202 lpic 2 lpic iptables imap gamin firewall email debian daemon courier authdaemonrc admin

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.

Weitere LPIC-202 Artikel

Comments

  1. Hallo,

    schöner Artikel, der genau das beschreibt, das ich derzeit versuche einzurichten 😉
    Ich hätte jedoch eine Frage dazu:

    Auf meinem Server läuft bereits seit einigen Jahren ein normaler Postfix-Server, auf dem sich schon ein ganzer Haufen Mails angesammelt hat (ich belasse sie immer auf dem Server, um sie auch auf dem Handy abrufen zu können). Jetzt habe ich mich jedoch entschieden, endlich mal IMAP einzusetzen, um die Ordnerstruktur, die ich in meinem Mail-Client angelegt habe, auf dem Server zu speichern.
    Ist es irgendwie möglich, die vorhandenen Postfächer in Courier IMAP zu übernehmen? Oder wird das womöglich sogar automatisch gemacht?

    Wäre super, wenn ich eine Antwort auf diese Frage bekommen würde 🙂

    LG
    Cornelius

  2. Pingback: Courier – SASL -MySQL

Comments are closed