Good to Know Database

Raspbian Wheezy: POP3- und IMAP-Verbindungen zum Cyrus-Daemon mit TLS absichern


Ein Mail-Client verbindet sich entweder über POP3 oder über IMAP mit dem Mailserver um neue E-Mails abzurufen. Diese Verbindungen sind unverschlüsselt und können belauscht werden. Die folgende Anleitung soll Ihnen zeigen, wie Sie die POP3- und IMAP-Verbindungen zum Cyrus-Daemon mit SSL verschlüsseln können.

Für die folgenden Schritte wird vorausgesetzt, dass Sie bereits Cyrus als POP3- und IMAP-Server installiert haben. Sollte dies nicht der Fall sein, lesen Sie bitte die Anleitung Raspbian Wheezy: Mailserver mit Postfix und Cyrus einrichten.

Zur Verschlüsselung der POP3- und IMAP-Verbindungen benötigen Sie ein Zertifikat und den dazugehörigen Schlüssel. Diese zwei Dateien können Sie wie folgt mit OpenSSL erstellen und sollten in den Verzeichnissen /etc/ssl/certs beziehungsweise /etc/ssl/private abgelegt werden. Durch die Option -days können Sie festlegen, wie lange das Zertifikat gültig sein soll.

pi@raspberrypi ~ $ sudo openssl req -new -x509 -nodes -out /etc/ssl/certs/cyrus-imapd.pem -keyout /etc/ssl/private/cyrus-imapd.key -days 3650
Generating a 2048 bit RSA private key
.....................................+++
...............+++
writing new private key to '/etc/ssl/private/cyrus-imapd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bayern
Locality Name (eg, city) []:Woerth an der Donau
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Privat
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:raspberrypi.home.lan
Email Address []:pi@home.lan

Hinweis: Als Common Name müssen Sie unbedingt die Adresse des Servers angeben, welche Sie für den Zugriff auf den Mailserver verwenden. Andernfalls erhalten Sie bei jedem Verbindungsaufbau über POP3S und IMAPS eine Fehlermeldung weil der Hostname nicht mit dem Common Name des Zertifikates übereinstimmt.

Das Zertifikat und den dazugehörigen Schlüssel müssen Sie jetzt in der Konfigurationsdatei /etc/imapd.conf eintragen.

pi@raspberrypi ~ $ sudo vi /etc/imapd.conf

Suchen Sie in der imapd.conf zuerst nach dem folgenden Abschnitt.

# File containing the global certificate used for ALL services (imap, pop3,
# lmtp, sieve)
#tls_cert_file: /etc/ssl/certs/ssl-cert-snakeoil.pem

Ändern Sie die letzte Zeile wie folgt ab oder fügen diese zur Konfigurationsdatei hinzu.

tls_cert_file: /etc/ssl/certs/cyrus-imapd.pem

Als nächstes suchen Sie den folgenden Abschnitt.

# File containing the private key belonging to the global server certificate.
#tls_key_file: /etc/ssl/private/ssl-cert-snakeoil.key

Ändern Sie auch hier die letzte Zeile wie folgt ab.

tls_key_file: /etc/ssl/private/cyrus-imapd.key

Nachdem Sie die imapd.conf angepasst haben, müssen Sie in der cyrus.conf den Zugriff über POP3S und IMAPS erlauben. Öffnen Sie daher die cyrus.conf mit einem Editor.

pi@raspberrypi ~ $ sudo vi /etc/cyrus.conf

Suchen Sie in der Konfigurationsdatei nach den folgenden vier Zeilen.

        imap            cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
        #imaps          cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
        pop3            cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
        #pop3s          cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50

Damit der Zugriff über POP3S und IMAPS erlaubt wird, müssen Sie das Kommentarzeichen vor imaps und pop3s entfernen.

        imap            cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
        imaps           cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
        pop3            cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
        pop3s           cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50

Sollten Sie den Zugriff über eine unverschlüsselte POP3- beziehungsweise IMAP-Verbindung unterbinden wollen, müssen Sie nur die Zeilen für imap und pop3 auskommentieren.

        #imap           cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
        imaps           cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
        #pop3           cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
        pop3s           cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50

Beachten Sie dabei, dass cyradm für die Konfiguration des IMAP-Servers ebenfalls eine IMAP-Verbindung benötigt. Daher sollten Sie den Zugriff auf den IMAP-Server nur für externe Verbindungen unterbinden und lokale Zugriffe auf IMAP erlauben. Dazu ändern Sie die Zeile für imap wie folgt ab.

        imap            cmd="imapd -U 30" listen="localhost:imap" prefork=0 maxchild=100
        imaps           cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
        #pop3           cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
        pop3s           cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50

Damit der Benutzer cyrus auf die Zertifikate unter /etc/ssl/private zugreifen kann, müssen Sie diesen noch zur Gruppe ssl-cert hinzufügen.

pi@raspberrypi ~ $ sudo adduser cyrus ssl-cert
Adding user `cyrus' to group `ssl-cert' ...
Adding user cyrus to group ssl-cert
Done.

Nachdem Sie alle Änderungen vorgenommen haben, müssen Sie den Cyrus-Daemon neu starten.

pi@raspberrypi ~ $ sudo /etc/init.d/cyrus-imapd restart
[ ok ] Restarting Cyrus IMAPd: cyrmaster.

Weiterführende Tutorials

Raspbian Wheezy: Funktion des Cyrus POP3S-Servers testen
Raspbian Wheezy: Funktion des Cyrus IMAPS-Servers testen


Dieser Eintrag wurde am 12.08.2013 erstellt und zuletzt am 25.09.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_2290.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer