Windows: hMailServer und SSL

In der Regel werden E-Mails ohne Verschlüsselung übertragen. Verwendet man den Freeware-Mailserver hMailServer so lässt sich mit wenigen Handgriffen eine SSL-Verschlüsselung für SMTP, POP3 und IMAP einrichten.

Voraussetzungen

Im DNS beim Provider sollte ein Host A-Eintrag, typischerweise “mail.domain.tld” vorhanden sein, der auf die statische, öffentliche IP-Adresse des Internet-Anschlusses zeigt. Ferner sollte ein MX-Eintrag vorhanden sein, der wiederum auf den Host A-Eintrag verweist. Alternativ kann der MX-Eintrag auch direkt auf die öffentliche IP-Adresse zeigen.

Der Server muss keineswegs direkt mit einer öffentlichen IP-Adresse am Internet angeschlossen sein. Es genügt, wenn am Internet-Gateway, also typischerweise am Router, eine öffentliche IP-Adresse vorliegt und z.B. mittels NAT auf den E-Mailserver die entsprechenden Ports weiter- bzw. umgeleitet werden.

Vorbereitung

Im ersten Schritt wird ein Schlüssel generiert und eine Zertifikatanforderung (CSR, Certificate Signing Request) mittels OpenSSL erstellt.

  • OpenSSL für Windows herunterladen (Die Light-Version reicht aus.) und installieren.
  • Eine Eingabeaufforderung öffnen und in den Ordner “C:\OpenSSL-Win32\bin” wechseln.
  • Zunächst muss eine Variable zur OpenSSL-Konfigurationsdatei gesetzt werden:
set openssl_conf=C:\OpenSSL-Win32\bin\openssl.cfg
  • Folgender Befehl generiert ein Schlüsselpaar. Dieser wird für die Zertifikatanforderung benötigt:
openssl genrsa -out FQDN.key 2048

Der FQDN bezeichnet die Internetadresse über die der Server im Netzwerk wie dem Internet erreichbar ist, z.B. mail.domain.tld. Es besteht die Möglichkeit, eine Passphrase einzugeben. Dies hat zum einen den Vorteil, das der Schlüssel dadurch sicher aufbewahrt werden kann, auf der anderen Seite hat es aber auch den Nachteil, das die Passphrase bei der Verwendung des Schlüssels durch einen Server(dienst) eingegeben werden muss. Der Einfachheit halber wird an dieser Stelle keine Passphrase eingegeben. Es besteht die Möglichkeit via OpenSSL zu einem späteren Zeitpunkt den Schlüssel durch eine Passphrase zu schützen oder die Passphrase auch zu entfernen.

  • Mit nachfolgendem Befehl wird die Zertifikatanforderung erzeugt:
openssl req -new -key FQDN.key -out FQDN.csr

Daraufhin wird man nach Land, Ort, Firma, usw. gefragt. Wichtig ist bei “Common Name” den öffentlichen FQDN des Servers einzutragen!

Mit Hilfe dieser Zertifikatanforderung kann man ein öffentliches Zertifikat anfordern oder auch mit einer eigenen Zertifizierungsstelle (CA, Certificate Authority) ein selbstsigniertes Zertifikat erstellen.

Zwischenzertifikate (Intermediate Certificates)

Unter Umständen muss der Server nicht nur sein eigenes Zertifikat, sondern auch ein sogenanntes Zwischenzertifikat ausliefern, damit die Zertifikatkette erfolgreich nachverfolgt und damit die Echtheit bestätigt werden kann.

Der hMailServer bietet dazu keine eigene Konfigurationsmöglichkeit an, so das man das Server-Zertifikat um das Zwischenzertifikat erweitern muss.

Zu diesem Zweck die Server- als auch die Zwischen- und ggf. das Root-Zertifikatdatei mit einem Editor (Notepad, Notepad++, …) öffnen. Den Inhalt der Zwischen- und RootCA-Zertifikatdatei der Datei mit dem Server-Zertifikat hinzufügen und Dieses abspeichern.

Die Reihenfolge von oben nach unten lautet:

  • Server-Zertifikat für den hMailServer
  • Zwischenzertifikat(e)
  • RootCA-Zertifikat

Man muss in der richtigen Reihenfolge ggf. die komplette Kette einfügen.

Selbstsigniertes Zertifikat erzeugen

Möchte man ein eigenes, selbstsigniertes Zertifikat verwenden, so wird Dieses mit folgendem Befehl erzeugt:

openssl x509 -req -days 30 -in FQDN.csr -signkey FQDN.key -out FQDN.crt

Die Gültigkeit des Zertifikats wird mittels “-days 30″, in diesem Fall 30 Tage, angegeben.

Zertifikat in hMailServer einbinden

Sobald man ein Zertifikat erhalten hat, muss Dieses samt dem Schlüssel in den hMailServer eingebunden und die Ports entsprechend konfiguriert werden.

  • Den hMailServer-Administrator öffnen und am Server anmelden.
  • Zu “Settings – Advanced – SSL certificates” wechseln.
  • Auf die Schaltfläche “Add…” klicken.
  • Einen Namen vergeben und den Ordner auch als die Datei für das Zertifikat und den Schlüssel angeben.
  • Auf die Schaltfläche “Save” klicken.

Nun müssen noch die entsprechenden SSL-verschlüsselten Ports der E-Mail-Protokolle eingerichtet werden.

  • Zu “Settings – Advanced – TCP/IP ports” wechseln.
  • Auf die Schaltfläche “Add…” klicken.
  • Das Protokoll auswählen.
  • Die IP-Adresse angeben. (“0.0.0.0” bedeutet keine Bindung an eine bestimmte IP-Adresse.)
  • Den Port eingeben:
SMTP über SSL (SMTPS): 465
POP3 über SSL (POP3S): 995
IMAP über SSL (IMAPS): 993
  • Den Haken setzen bei “Use SSL” und das Zertifikat auswählen.
  • Auf die Schaltfläche “Save” klicken.

Damit die geänderten Einstellungen übernommen werden, muss der hMailServer neu gestartet werden.

Möchte man verhindern, das unverschlüsselte Verbindungen aufgebaut werden können, entweder die bestehenden Ports entfernen, an eine andere IP-Adresse (z.B. localhost) binden oder in der Firewall des Computers oder Routers filtern.

Achtung: Den Port 25 (SMTP) sollte man nicht ohne vorige Abklärung entfernen, da sonst keine E-Mails mehr von extern zugestellt werden können!

Konfiguration der E-Mail-Clients

Die E-Mail-Clients müssen für die Verwendung von SSL konfiguriert werden. Unter Umständen sind die notwendigen Ports manuell einzugeben.

Verwendet man ein selbstsigniertes Zertifikat kann es je nach E-Mail-Client vorkommen, das eine Warnung angezeigt wird, dass das Zertifikat nicht vertrauenswürdig ist. Das ist z.B. bei Microsoft Outlook und Thunderbird der Fall. Meist besteht die Möglichkeit, das Zertifikat zu importieren und damit die Warnhinweise zu umgehen.

Infos zu OpenSSL

Hilfreiche Infos und Befehlbeispiele zu OpenSSL finden man unter

magenbrotWiki – OpenSSL-Zertifikate

Günstige öffentliche SSL-Zertifikate

Bei der Netz-Gemeinde geniest die PSW Group einen guten Ruf:

PSW Group – SSL-Zertifikate & Trust-Logos

Persönliche Bemerkung: Das soll an dieser Stelle keine Werbung für die PSW Group sein. Ich selbst habe dort noch keine Zertifikate erworben, allerdings eilt der Ruf der Firma voraus und auch die tabellarische Darstellung der angebotenen Zertifikate macht einen guten Eindruck.

Danksagung

Vielen Dank an Herr Oliver Vrchoticky von www.stayer.de der diesen Blog-Beitrag angeregt hat.

Quellen:

hMailServer – Documentation – v5.3 – SSL

How To Setup hMailServer To Use a SSL Certificate

18 Kommentare

  1. Robert Schleusener

    Hallo,
    beim hMailServer habe ich es genau wie beschrieben mit der Einbindung meines PSW Testzertifikates und des Intermediate Certificates durchgeführt. Leider ohne Erfolg, Thunderird bemängelt stets, das Zertifikat und benötigt zumindest eine einmalige Bestätigung.

    Funktioniert den die Einbindung von Intermediate Certificates beim hMailServer oder gibt es hier eine Unverträglichkeit mit Thunderird?
    Gruß Robert

  2. andy

    Zeigt Thunderbird den vollständigen Pfad der Zertifikate an?
    Evtl. läuft beim Ausliefern des Zwischenzertifikats schief.

    Ich habe mit PSW bislang nicht gearbeitet und kenne nur den guten Ruf.
    Möglicherweise wird den Test-Zertifikaten nicht vertraut bzw. sind nicht validiert und von daher kommt eine Meldung.

    Was genau meldet den Thunderbird, wenn er an dem Zertifikat etwas auszusetzen hat?

  3. Robert Schleusener

    Hallo Andy,

    danke für die Rückmeldung.
    Diverse Forenseinträge habe ich schon zu diesem Thema hMailServer und Zwischenzertifikat gelesen. Eine positive Rückmeldung, dass es so funktioniert, fehlt mir jedoch noch. Funktioniert es denn bei Dir und welchen Mail-Client verwendest Du.

    Ich verwende nur Thunderbird und habe die entsprechenden Fehlermeldungen. Ich habe auch einen Test mit Windows Live Mail durchgeführt. Es wurde der IMAP Port 993 angegeben, 143 ist nicht freigeschaltet. Also sollte es auch verschlüsselt sein. Ein Fehlermeldung gab es bei Windows Live Mail nicht, unabhängig davon, ob das Zwischenzertifikat mit installiert war oder nicht.

    Wenn ich das Zertifikat mit/ohne Zwischenzertifikat im Apache (XAMPP-Testinstallation) einbinde, dann funktioniert es prima im Firefox und im IE8.

    Zurück zum Mailserver. Ich habe auch noch ein anderes Zertifikat. Wenn ich das Zertifikat direkt anklicke, dann ist die Zertifikatshierarchie
    GeoTrust Global CA
    RapidSSL CA
    meine.domain.tld

    Schaue ich im Thunderbird v17 nach, dann finde ich nur
    meine.domain.tld

    Auf der GeoTrust Homepage gibt es auch einen SSL Checker. Wenn ich hier das Zertifikat im hMailServer prüfe, dann erhalte ich als Fehlermeldung: Invalid Chain.

    Thunderbird meldet immer: Unbekannte Identität
    und man hat dann die Möglichkeit, das Zertifikat temporär oder dauerhaft einzubinden.

    So wie ich es sehe, hat der hMailServer ein Problem mit der Auslieferung des Zwischenzertifikats.
    Oder hat jemand andere Infos?

  4. andy

    Bei zwei hMailServer-Installationen funktioniert sowohl Thawte SSL123 als auch StartSSL. Beides mit Zwischenzertifikaten, beides mit Thunderbird und Outlook.
    Nach deiner Schilderung stimmt wohl wirklich etwas beim Ausliefern des Zwischenzertifikats nicht.

    Wurde das Server- als auch das Zwischenzertifikat wie beschrieben zusammenkopiert und dann im hMailServer eingebunden?
    Evtl. mal die Reihenfolge ändern.
    Evtl. unterschiedliche Zertifikatsformate?

  5. Robert Schleusener

    Das mit der Reihenfolge habe ich schon getestet. Mein eigenes Zertifikat muss an erster Stelle stehen. Steht das Zwischenzertifikat vorn, so wird wohl nur dies vom hMailServer gesehen, die Verbindung wird dann komplett abgelehnt.

    Da muss ich wohl mit der einmaligen Nachfragebestätigung beim Client leben.

  6. Uwe Janssen

    Ich habe von PSW ein Wildcard Zertifikat, ich habe schon mit dem Support von PSW zusammen per Teamviewer auf dem Hmailserver gearbeitet jedoch haben wir es nicht hinbekommen das Zwischenzertifikat zum laufen zu bringen. Vielleicht kann mir ja jemand von Euch helfen.

    Grüsse Uwe

  7. andy

    Hallo Uwe,

    wir haben bei Kunden Zertifikate von Comodo und Thawte (bezogen über https://icertificate.eu/)im Einsatz, bislang ohne größere Probleme.
    Wie habt ihr denn versucht, das Zertifikat einzubinden?
    Fehlt evtl. das Zwischenzertifikat? (Kann man zusammen mit dem Zertifikat über Notepad++ gerade zusammenkopieren).

  8. Uwe Janssen

    Ahhh, ich hatte eine Anleitung in der Man die Datei des Zwischencertifikates mit einer Hashnummer versehen musste und dann in hmailserver/extern/ca reinkopieren muss.
    Danke jetzt rennt alles bei mir ..

    Grüsse Uwe Janssen

  9. Chris

    Vielen, vielen herzlichen Dank für diese super Anleitung!

  10. Andreas Mettler

    Hallo und schon mal danke für jede Hilfe!

    Ich habe gemäß der Anleitung das Schlüsselpaar generiert, die Zertifikatsanforderung erzeugt und dann das selbstsignierte Zertifikat erzeugt. Nun habe ich im bin-Verzeichnis von OpenSSL diese drei Dateien: FQDN.crt, FQDN.csr und FQDN.key. Bei SSL-Certificates in hmail wähle ich aus: FQDN.crt für certificate-file und FQDN.key für private-keyfile. Dann trage ich unter TCP/IP Ports die drei Ports ein und wähle für Connction Security SSL/TLS aus und das vorher angelegte Zertifikat. Ich öffne auf der Firewall die drei Ports. Ich starte hmail über die Dienste neu.

    Beim Anlegen einer neuen Emailadresse mit Thunderball werden die Einstellungen für die Adresse automatisch mit “keine Verschlüsselung” gefunden. Ich wähle mit “manuell bearbeiten” SSL/TLS und Authentifizerung “automatisch erkennen”. Es werden automatisch die richtigen Ports eingetragen. “Erneut testen” führt dann zu “Thunderbird konnte keine Einstellungen für Ihr Email-Konto finden”. Lasse ich die Einstellung bei “keine Verschlüsselung” kann ich auf das Emailkonto zugreifen. Thunderbird verhält sich also praktisch so, als wären hmail überhaupt nicht für das Zertifikat konfiguriert worden.

    Hat jemand eine Idee?

    Danke
    Andreas Mettler

  11. Robert Schleusener

    Hallo,
    welche Ports (HMS und MailClient) werden denn verwendet?
    “selbstsigniertes Zertifikat” hier wird der Mailclient wohl erst mal eine Fehlermeldung erzeugen. Besser ist da ein Zertifikat von Let’s Encrypt.

    Gruß Robert

  12. Robert Schleusener

    Im Thunderbird nutze ich folgende Einstellungen:
    IMAP -servername- Port 993 SSL/TLS Passwort, normal
    SMTP -servername- Port 465 SSL/TLS Passwort, normal
    Dann auf fertig klicken.

    Die Port müssen im Server natürlich entsprechend eingestellt und freigegeben sein. Underschlüsselte Ports soweit möglich nicht mehr eintragen/freigeben.

  13. Andreas Mettler

    Hallo Robert, danke für Deine Reaktion!

    SMTP: 465
    POP3: 995
    IMAP: 993

    Sowohl bei hMailServer, wie auch bei Thunderbird.

    Die Einträge für die Ports 25, 110, 143 und 587 für unverschlüsselte Emails habe ich dringelassen, wie sie waren.

    In der Firewall des Servers habe ich diese Ports auch geöffnet.

    Im Augenblick würde ich mich sogar freuen, wenn wenigstens die Fehlermeldung käme, der Client verhält sich aber so, als wäre kein SSL Zertifikat eingetragen.

  14. Andreas Mettler

    Ich hab mal alle Einstellungen als Screenshot hochgeladen. Vielleicht springt der Fehler jemandem sofort ins Auge?

    http://mettlerweb.de/download/screenshots.zip

  15. Robert Schleusener

    Beim Zugriff erscheint die Fehlermeldung zum Zertifikat. Ich kann es dann übernehmen und es ist auch im Thunderbird sichtbar. Mangels Passwort natürlich kein Zugriff und sicher binn ich jetzt gesperrt.

    Ist denn der Mailaccount im Thunderbird angelegt?
    Falls nein, dann die Daten wie im 8.png eintragen. Authentifizierung auf “Passwort, normal” einstellen. Sorry dann aber nicht auf “Fertig”, sondern auf “Erweiterte Einstellungen” gehen. Dann wird der Account im TB angelegt. Bitte mal testen.

  16. Andreas Mettler

    Die Sache funktioniert jetzt. Vielen Dank! 🙂

    Andreas

  17. Michael Buchholz

    …uralter Thread, aber …

    Funktioniert mit de OpenSSL-x64 nicht…

    1. openssl.cfg existiert nicht, also eine erstellt
    2. “openssl req -new -key FQDN.key -out FQDN.csr” funktioniert noch problemlos
    3. “openssl x509 -req -days 30 -in FQDN.csr -signkey FQDN.key -out FQDN.crt” scheitert dann gnadenlos mit …

    C:Program FilesOpenSSLbin>openssl x509 -req -days 30 -in FQDN.csr -signkey FQDN.key -out FQDN.crt
    Can’t open FQDN.csr for reading, No such file or directory
    7300:error:02001002:system library:fopen:No such file or directory:cryptobiobss_file.c:69:fopen(‘FQDN.csr’,’r’)
    7300:error:2006D080:BIO routines:BIO_new_file:no such file:cryptobiobss_file.c:76:

    (FQDN natürlich mit dem Domainnamen ersetzt)
    bin- Dir liegt im Pfad, ebenso ist die Systemvariable “openssl_conf” korrekt in Windows gesetzt.

    Tja …

  18. Andy

    Damals hat das alles funktioneirt, allerdings haben sich mittlerweile Änderungen an OpenSSL unter Windows ergeben.
    Am besten das Ganze mal mit vollständigen Pfaden ausprobieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

© 2024 Andy's Blog

Theme von Anders NorénHoch ↑