This page in English.
Weil ich üblicherweise SSH benutze, um mich auf andere Rechner zu verbinden, ist mir jeglicher Gedanke an im Klartext übertragene Passwörter zuwider. Aus diesem Grund habe ich von fetchmail zu einem gegen OpenSSL gelinkten fetchmail umgestellt.
Diese Umstellung bedeutet, daß fetchmail und die entsprechenden POP3 und IMAP4-Server sich nicht mehr im Klartext sondern verschlüsselt unterhalten, also nicht mehr über Port 110 bzw. 143 sondern ueber 995 bzw. 993. Dafür müssen Änderungen in der .fetchmailrc vorgenommen werden.
Das wichtigste ist das Hinzufügen der Zeile ssl, um die SSL-Funktionalität überhaupt anzuschalten. Meine .fetchmailrc sieht nun so aus:
poll pop3.web.de with
proto pop3
user christoph.rummel
is bronski
no rewrite
ssl
Ein Aufruf sieht jetzt so aus:
bronski@lampe:~$ fetchmail -v pop3.web.de
fetchmail: 5.9.11 querying pop3.web.de (protocol POP3) at Wed, 02 Oct 2002 18:37:27 +0200 (CEST): poll started
fetchmail: Issuer Organization: Thawte Consulting cc
fetchmail: Issuer CommonName: Thawte Server CA
fetchmail: Server CommonName: pop3.web.de
fetchmail: pop3.web.de key fingerprint: 1F:41:82:3D:67:D7:44:28:AA:64:DA:06:9C:D6:76:47
fetchmail: pop3.web.de fingerprints match.
fetchmail: Warning: server certificate verification: unable to get local issuer certificate
5458:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed:s3_clnt.c:832:
fetchmail: SSL connection failed.
fetchmail: 5.9.11 querying pop3.web.de (protocol POP3) at Wed, 02 Oct 2002 18:37:28 +0200 (CEST): poll completed
fetchmail: normal termination, status 0
Als erste Tat fügen wir den so gefunden Fingerabdruck der .fetchmailrc hinzu:
sslfingerprint "1F:41:82:3D:67:D7:44:28:AA:64:DA:06:9C:D6:76:47"
Jetzt benötigen wir noch die Zertifikate der Server. Dafür benutze ich OpenSSL:
bronski@gate:~$ openssl s_client -connect pop3.web.de:995 -showcerts
Obiges Beispiel ist für POP3, für IMAP sähe das so aus:
bronski@gate:~$ openssl s_client -connect mail.mac.com:993 -showcerts
Das Ergebnis dieses Befehles sind eine Menge Daten, darunter auch das x509-Zertifikat im PEM-Format. Das, was uns interessiert, ist was mit folgenden Zeilen beginnt und endet:
-----BEGIN CERTIFICATE-----
MII[...]
-----END CERTIFICATE-----
Das ist allerdings nicht alles, was wir brauchen - wir benötigen
ebenfalls der Zertifikat der ausstellenden CA (Zertifikat-Agentur, eine vertrauenswürdige Einrichtung,
die Zertifikate ausstellt), damit das Server-Zertifikat bestätigt
werden kann.
Üblicherweise gibt einem die Ausgabe des letzten Befehles
genügend Informationen um herauszufinden, welche CA es ist,
von der wir das Zertifikat benötigen. Mehrere Möglichkeiten:
Entweder bietet der POP Dienstanbieter schon alle benötigten
Zertifikate zum Download an, oder der URL der CA ist in der
Beschreibung der Zertifikate angegeben, oder man muss aus dem
Namen der CA auf den URL schliessen. Ist man einmal dort angekommen,
dann ist es üblicherweise das Class 3 Zertifikat, das man
sucht.
mail.mac.com z.B. liefert das CA-Zertifikat gleich mit, so dass
man garnicht erst weitersuchen muss. pop3.web.de liefert nur das
eigene Zertifikat, das CA-Zertifikat bekommt man unter folgender
Adresse: http://trust.web.de/root.sql/
Update (2002-10-02):
Seit heute hat web.de kein selbst unterschriebenes CA-Zertifikat mehr
sondern endlich ein offizielles, anerkanntes. Dabei handelt es sich um
das der Thawte Server CA.
Falls das Zertifikat nur im DER-Format vorliegt, muß man es eben in das PEM-Format umwandeln. Das kann man ebenfalls mit openssl machen:
bronski@gate:~$ openssl x509 -in certificate.der -inform DER -outform PEM
Alle gesammelten Zertifikate müssen in Verzeichnis kopiert
und dort gehashed werden, damit fetchmail sie verwenden kann.
Der einfachste Weg dazu ist c_rehash zu benutzen, das
bei apache dabei ist.
c_rehash ist auch im OpenSSL-Sourcecode enthalten,
dort liegt es im Unterverzeichnis tools.
OpenSSL bringt jedoch auch schon von Haus aus einige der
bekanntesten CA-Zertifikate mit. Diese liegen, je nach Distribution
und Installation, beispielsweise in /etc/ssl/certs.
bronski@gate:~$ mkdir .certs
bronski@gate:~$ cp webde*.pem .certs
bronski@gate:~$ c_rehash .certs
webdepop3.pem => 7712a0b8.0
webdeimap.pem => 0dcae815.0
thawteserverca.pem => ddc328ff.0
Nun kommen zwei weitere Zeilen in die .fetchmailrc:
sslcertck
sslcertpath /home/bronski/.certs
Diese beiden Zeilen gehören in den selben Block wie das
dazugehörige poll-Kommando.
Die erste Zeile weist fetchmail an, die Verbindung abzubrechen,
falls kein gütiges Zertifikat gefunden werden kann
(für den Fall, daß das Zertifikat zurückgezogen
worden oder abgelaufen ist), und die zweite Zeile zeigt
fetchmail, wo es die Zertifikate findet.
Wenn, wie erwähnt, das Zertifikat abläuft, dann schlägt
das Mail pollen natürlich fehl. In so einem Fall
nimmt man das sslcertchk wieder raus. Dann wird zwar das
Zertifikat nicht mehr überprüft, aber man kommt wenigstens
an seine Mail.
Jetzt sieht das Mails Abholen folgendermassen aus:
bronski@lampe:~$ fetchmail -v pop3.web.de
fetchmail: 5.9.11 querying pop3.web.de (protocol POP3) at Wed, 02 Oct 2002 18:42:00 +0200 (CEST): poll started
fetchmail: Issuer Organization: Thawte Consulting cc
fetchmail: Issuer CommonName: Thawte Server CA
fetchmail: Server CommonName: pop3.web.de
fetchmail: pop3.web.de key fingerprint: 1F:41:82:3D:67:D7:44:28:AA:64:DA:06:9C:D6:76:47
fetchmail: pop3.web.de fingerprints match.
fetchmail: POP3< +OK WEB.DE POP3-Server
fetchmail: POP3> USER christoph.rummel
fetchmail: POP3< +OK Bitte Kennwort eingeben/enter password
fetchmail: POP3> PASS *
fetchmail: POP3< +OK Postfach bereit/mailbox locked and ready
fetchmail: POP3> STAT
fetchmail: POP3< +OK 0 0
fetchmail: No mail for christoph.rummel at pop3.web.de
fetchmail: POP3> QUIT
fetchmail: POP3< +OK
fetchmail: 5.9.11 querying pop3.web.de (protocol POP3) at Wed, 02 Oct 2002 18:42:05 +0200 (CEST): poll completed
fetchmail: normal termination, status 1
Übrigens: Das Passwort wird aus der .netrc geholt. (chmod 600 .netrc nicht vergessen!)
Viel Erfolg und sicheres Mail-Einsammeln!
P.S.: Bis jetzt konnte ich leider noch keinerlei Dokumentation über Authentifizierung mit Benutzerzertifikaten finden, was aber sicherlich sehr spannend wäre!
P.P.S.: Falls noch irgendwelche Fragen offen sind, einfach über das Kontakformular die Frage stellen.