Martin:Sicher mailen per DSL

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

Dieser Artikel soll irgendwann einmal beschreiben, wie man mit TLS-Zertifikaten dafür sorgt, daß Mails, die von einem zentralen Server übers Internet an eine dynamische IP-Adresse geroutet werden sollen. auch wirklich an ihrem Bestimmungsort ankommen.

Problem und Lösungsansatz

Viele haben einen sogenannten "Rootserver", der irgendwo beim Internet-Provider im Rechenzentrum steht. Jeder hat außerdem einen DSL-Anschluß, der praktisch wie eine Standleitung benutzt werden könnte, wenn da nicht die Sache mit der Zwangstrennung und den dynamischen, immer wieder wechselnden IP-Adressen wäre.

Obwohl man also über gut verfügbare Infrastruktur in Form des "Rootservers" verfügt und einen DSL-Anschluß hat, muß man weiterhin mit Protokollen wie POP3 und IMAP arbeiten um an seine Mails zu kommen, denn der DSL-Anschluß ist aufgrund seiner wechselnden IP-Adressen nicht zum Betrieb eines Mailservers geeignet. Zum einen könnte es sein, daß nach dem Wechsel der IP-Adresse eingehende Mails bei jemand anderem eingeliefert werden, oder daß ein Bounce entsteht. (Zum anderen nehmen viele Mailserver keine Mails von Einwahlrechnern mehr an. - Separate Problemstellung, ggf. nicht hier behandeln.)

Das Problem soll gelöst werden, indem der "Rootserver" mit dem per DSL angeschlossenen Standort über SMTP mit TLS kommuniziert. Die Verschlüsselung per TLS soll dabei nicht in erster Linie dazu dienen, die Vertraulichkeit der Mails sicherzustellen (das ist bei Internet-Mails ohnehin illusorisch), sondern lediglich sicherstellen, daß immer die beiden richtigen Systeme miteinander kommunizieren. Da auf die Verwendung eines VPN- oder SSH-Tunnel verzichtet wird, können bei einer solchen Konfiguration keine Probleme hinsich tlich des Wiederaufsetzens nach Verbindungsabbrüchen auftreten. Wie immer, wo reines SMTP im Spiel ist, ist die Kommunikation auf diese Weise ausgesprochen robust.

Zielgruppe

Die u.g. Konfigurationsbeispiele sind kein Kochrezept, sondern sollen als Anhaltspunkte für die eigene Implementierung gesehen werden. Es können nicht alle Eventualitäten berücksichtigt werden, z.B., ob das über DSL erreichbare System selbst als Mailserver für die Endanwender dient, ob es ein Mailgateway in der DMZ ist, das den eigentlichen Mailserver bedient, oder ob vielleicht nur ein Teil der Anwender über die DSL-Maschine erreicht wird, während die anderen direkt auf dem "Rootserver" arbeiten.

Des weiteren sollte man schon genau wissen, wie und woher man einen festen DNS-Hostnamen für das DSL-System bekommt.

Jemand, der sich ein wenig mit Postfix auskennt, einigermaßen weiß wie das Internet funktioniert und optimalerweise genug SMTP spricht um ein wenig von Hand herumzutesten, sollte ohne weiteres klarkommen.

OpenSSL und die Zertifikatserzeugung werden etwas genauer behandelt, weil es auch viele Mailadmins gibt, für die das alles ein Buch mit sieben Siegeln ist.

Beschreibung der Demo-Umgebung

  • server.example.com ist ein "Rootserver" o.ä., der irgendwo bei einem Provider im Rechenzentrum steht und als Mailexchanger für die Domain example.com fungiert.
  • dslbox.dynamic.tld ist eine dezentrale Maschine ("DSL-Box"), die hinter einem DSL-Anschluß hängt, mit einem festen DNS-Namen z.B. von dyndns.org ausgestattet ist und an die die Mails weitergeroutet werden sollen.
  • Verwendeter MTA ist Postfix mit TLS-Unterstützung ab Version 2.3.
  • Betriebssystem ist egal, solange Postfix drauf läuft.

Prinzipielle Vorgehensweise

  • Auf Rootserver und DSL-Box werden wir mit OpenSSL selbstsignierte Zertifikate generieren.
  • Auf der DSL-Box werden wir:
    • Das Zertifikat des Rootservers hinterlegen.
    • Sicherstellen, daß aus dem Internet nur Mails angenommen werden, wenn die Verbindung mit dem Zertifikat des Rootservers verschlüsselt ist.
  • Auf dem Rootserver werden wir:
    • Das Zertifikat der DSL-Box hinterlegen.
    • Mails an die Zieldomain in Richtung DSL-Box routen.
    • Sicherstellen, daß Mails an die DSL-Box nur dorthin zugestellt werden, wenn das Zertifikat validiert wurde und der darin eingetragene Common Name ggf. einer bestimmten Namenskonvention entspricht.

Umsetzung

Generierung und Hinterlegung der Zertifikate

Wir gehen davon aus, daß die Zertifikate auf beiden Systemen unter /etc/postfix/tls abgespeichert werden. Die Zertifikate werden mit reichlich Laufzeit generiert, damit wir viel Zeit haben, bis das System wieder angefaßt werden muß.

Vorgehensweise auf dem Rootserver:

cd /etc/postfix/tls
touch server.example.com-key.pem
chmod 600 server.example.com-key.pem
openssl req -x509 -days 3650 -newkey rsa:2048 -nodes \
    -out server.example.com-cert.pem \
    -keyout server.example.com-key.pem

Vorgehensweise auf der DSL-Box:

cd /etc/postfix/tls
touch dslbox.dynamic.tld-key.pem
chmod 600 dslbox.dynamic.tld-key.pem
openssl req -x509 -days 3650 -newkey rsa:2048 -nodes \
    -out dslbox.dynamic.tld-cert.pem \
    -keyout dslbox.dynamic.tld-key.pem

Konfiguration der DSL-Box

Hinterlegung des Rootserver-Zertifikats

  • server.example.com auf die DSL-Box in /etc/postfix/tls

Konfiguration des SMTP-Service

Konfiguration des Rootservers

Hinterlegung des Zertifikats der DSL-Box

  • dslbox.dynamic.tld-cert.pem auf den Rootserver in /etc/postfix/tls