Da ich mit dem existierenden Howto von Damian Philipp gewisse Verständnisschwierigkeiten hatte, bekam ich zum Glück gute Hilfestellung von Jürgen Edner, dem Maintainer des Mail-Paketes – vielen Dank dafür.

Damit unser eisfair die Mails per SSL beim jeweiligen Provider abholen kann (hier wird nur das Abholen mit SSL beschrieben), benötigen wir einige Daten. Erst wenn wir diese alle beisammen haben, können wir in der Konfiguration des Mail-Paketes auf SSL umstellen, sonst bekommen wir keine Mails mehr rein.

Damit ich mir viel Tipparbeit und natürlich Tippfehler erspare, arbeite ich nicht direkt auf der Konsole des Servers, sondern benutze den Midnight-commander mc in einem ssh-client – da kann ich copy & paste verwenden. Ausserdem kann ich zwei Verbindungen, also Fenster, gleichzeitig benutzen.

Wir müssen wissen, von welchem Server und Port die Mails abgeholt werden sollen. Benutzernamen und Passwort sollten wir ja schon haben, die anderen Angaben nennt uns der Provider. Exemplarisch will ich hier einen account bei web.de umstellen. Abgeholt wird hier von pop3.web.de auf Port 995 (standard).

Zuerst benötigen wir die einzelnen Zertifikate der Zertifikatskette des Posteingangsservers. Diese kommen alle nach

/usr/local/ssl/certs

und sollten als Namen (damit wir die Datei später auch wiedererkennen) den Namen des Servers bzw. des Eigentümers bekommen und auf .pem enden. Bei den Namen verwende ich grundsätzlich Kleinbuchstaben und ersetze Leerzeichen durch den Unterstrich '_'. Die Daten erhalten wir mit:

openssl s_client -connect pop3.web.de:995 -showcerts

Da nun eine Verbindung zum POP3-Server besteht und dieser auf eine Eingabe von uns wartet, geben wir »quit« ein und beenden damit sauber die Verbindung wieder.

In dem Output finden wir die Zertifikatskette beginnend bei 0 s:/C=DE/ST=Rhineland-Palatinate… - hier also 3 Zertifikate, eingeschlossen zwischen —–BEGIN CERTIFICATE—– und —–END CERTIFICATE—–. Diese beiden Trenner gehören jeweils mit zu den Zertifikaten, also mit in die .pem-Dateien. Vor dem Zertifikat steht hinter s: bei CN= der Betreff, also der Server oder Eigentümer (Subject), dem das Zertifikat gehört. Hinter i: steht bei CN= der Aussteller (Issuer) des Zertifikats. Im Beispiel unten ist also der Server / Eigentümer des ersten Zertifikats pop3.web.de und der Aussteller Thawte SSL CA

...
Certificate chain
0 s:/C=DE/ST=Rhineland-Palatinate/L=Montabaur/O=1&1 Mail & Media GmbH/OU=WEB.DE/CN=pop3.web.de
i:/C=US/O=Thawte, Inc./CN=Thawte SSL CA
-----BEGIN CERTIFICATE-----
MIIEsjCCA5qgAwIBAgIQcYhIBPC9uf0YX4fTKfLL8DANBgkqhkiG9w0BAQUFADA8
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMVGhhd3RlLCBJbmMuMRYwFAYDVQQDEw1U
...

Wir kopieren also das Zertifikat inklusive der Trenner in eine Datei, die wir pop3.web.de.pem nennen.

Wie geht das ohne grossen Aufwand? Wir markieren in einem Fenster unseres ssh-client den gewünschten Text mit der Maus und kopieren ihn (unter z.B. Windows mit ctrl + c) in die Zwischenablage. Im anderen Fenster läuft der <MC> und wir wechseln ins Verzeichnis /usr/local/ssl/certs. Dort legen wir die neue Datei an:

touch pop3.web.de.pem

Nun machen wir das Gleiche mit allen folgenden Zertifikaten im oben erhaltenen Output.

...
1 s:/C=US/O=Thawte, Inc./CN=Thawte SSL CA
i:/C=US/O=thawte, Inc./OU=Certification Services Division/OU=(c) 2006 thawte, Inc. - For authorized use only/CN=thawte Primary Root CA
-----BEGIN CERTIFICATE-----
MIIEbDCCA1SgAwIBAgIQTV8sNAiyTCDNbVB+JE3J7DANBgkqhkiG9w0BAQUFADCB
qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
...
...
2 s:/C=US/O=thawte, Inc./OU=Certification Services Division/OU=(c) 2006 thawte, Inc. - For authorized use only/CN=thawte Primary Root CA
i:/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
-----BEGIN CERTIFICATE-----
MIIERTCCA66gAwIBAgIQM2VQCHmtc+IwueAdDX+skTANBgkqhkiG9w0BAQUFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
...

Es kommt vor, dass nur ein Zertifikat enthalten ist, dann ist dies das Serverzertifikat. Für die weiteren Zertifikate die nur namentlich in der Kette aufgeführt sind hilft dann google. Jetzt sollten wir hier also 3 .pem-Dateien erstellt haben (pop3.web.de.pem - thawte_ssl_ca.pem - thawte_primary_root_ca.pem). Erst wenn wir bei einem Zertifikat angekommen sind wo Betreff (Subject) und Aussteller (Issuer) absolut identisch sind, haben wir die Zertifikatskette komplett aufgelöst und sind fertig mit diesem Schritt. Hier im Beispiel brauchen wir also noch das Zertifikat von Thawte Premium Server CA - da hilft uns google.

Mit diesen Suchbegriffen ( Thawte Premium Server CA ) ist der erste Treffer momentan (Ende November 2013) https://www.thawte.com/roots/index.

Hier finden sich nun diverse Zertifikate zum Download. Man muss darauf achten, dass man genau das mit dem richtigen Namen herunterlädt – es gibt hier meist viele ähnlich lautende Namen, die sich nur minimal unterscheiden. Auch Namenszusätze wie G5 machen hier einen enormen Unterschied aus.

Das heruntergeladene Zertifikat Root 2 / Thawte Premium Server CA kommt auch in eine .pem-Datei (thawte_premium_server_ca.pem) und da Subject und Issuer hier identisch sind, haben wir für pop3.web.de alle Zertifikate beisammen. Falls ein Zertifikat schon als .pem-Datei vorhanden ist, brauchen wir es nicht noch einmal anlegen – daher sollten die Namen der Dateien sehr sorgfältig vergeben werden, damit wir sie nicht doppelt anlegen (wäre nur doppelte Arbeit). Falls wir bei einen Provider mehrere Posteingangsserver nutzen, muss für jeden eine .pem-Datei erstellt werden (z.B. pop.gmx.de und pop.gmx.net).

Wir wechseln ins Verzeichnis /usr/local/ssl/certs und rehashen:

cd /usr/local/ssl/certs/
/usr/bin/ssl/c_rehash

Nun können wir prüfen, ob wir wirklich für pop3.web.de alle Zertifikate beisammen haben:

/var/install/bin/certs-show-chain pop3.web.de.pem

Wenn die Kette bis +→ end of chain! aufgelöst wird, kommt der nächste Posteingangsserver dran, ansonsten sehen wir das letzte gefundene Zertifikat, ab dem wir uns weiterhangeln müssen. Wichtig ist, dass alle Zertifikatsdateien .pem heissen, in /usr/local/ssl/certs liegen und dass wir auch nach allen Änderungen neu rehashed

cd /usr/local/ssl/certs/
/usr/bin/ssl/c_rehash

haben. Wenn unser eisfair für alle Posteingangsserver die Zertifikatsketten auflösen kann, ist die meiste Arbeit bereits getan.

Wir gehen nun im einen ssh-Fenster ins Setup des Mail-Paketes und ändern folgende Parameter:

FETCHMAIL_xy_SERVER = pop3.web.de
FETCHMAIL_xy_SSL_PROTOCOL = auto
FETCHMAIL_xy_SSL_TRANSPORT = yes

Im anderen ssh-Fenster brungt uns

cd /usr/local/ssl/certs/
openssl x509 -in pop3.web.de.pem -noout -fingerprint -md5

als Output:

MD5 Fingerprint=B7:8C:97:E6:1E:88:AA:2B:0F:38:9C:78:20:E3:C7:36

Wichtig ist hier die Option -md5 , sonst erhalten wir einen Fingerprint der uns nicht weiterhilft. Wir kopieren (Zwischenablage) nun den Fingerprint in folgenden Parameter:

FETCHMAIL_xy_SSL_FINGERPRINT = B7:8C:97:E6:1E:88:AA:2B:0F:38:9C:78:20:E3:C7:36

Dies wiederholen wir für alle Mailkonten, die wir umstellen wollen. Wir speichern die Konfiguration mit F2, verlassen den Konfigurationseditormit F10 und aktivieren die neue Konfiguration. Jetzt sollte bei allen auf SSL umgestellten Konten nur noch verschlüsselt von den Posteingangsservern abgeholt werden.

Ich habe auf diese Weise Konten bei web.de – gmx.de – gmx.net – t-online.de erfolgreich umgestellt. Bei Fragen oder Unklarheiten wendet Euch bitte an die Newsgroup – bitte nicht direkt an mich.

November 2013

Stefan Puschek