Schlagwort-Archive: SSL

Mit fetchmail Mails verschlüsselt abrufen

Mails verschlüsselt abrufen

Damit ich meine Mails von meinem Provider sicher abholen kann habe ich die Übertragung von POP3 auf Secure POP3 umgestellt. Das dient weniger dazu das kein anderer die Mails bei der Übertragung lesen kann sondern eher dazu das mir niemand anderer einen falschen POP3 Server unterschieben kann indem er die DNS-Einträge verändert. Sollte das passieren würde mein Rechner über das falsche Zertifikat stossen und die Übertragung abbrechen. Zweck erfüllt.

Zum Abrufen der Mails nutze ich fetchmail auf meinem Linux-System. Fetchmail lässt sich mit ein paar zusätzlichen Einträgen in der fetchmailrc soweit umstellen das die Übertragung der Mails aus POP3 und IMAP4 nicht mehr mittels TCP-Port 110 bzw. 143 sondern über die Ports 995 bzw 993 verschlüsselt erfolgen.

Das wichtigste an Änderungen ist das Hinzufügen der Zeile ssl, um die Funktionalität in fetchmail einzuschalten. Zusätzlich wird natürlich noch das Paket openssl benötigt um die notwendigen Verschlüsselungs Routinen bereit zu stellen.

Nach der Änderung sieht meine fetchmailrc so aus:

poll „pop.gmx.net“ protocol POP3 :
user „175739“ there
with password „XXXXXXXXXXXXXX“
is „carsten“ here
ssl

Für einen Test rufe ich /etc/init.d/fetchmail oneshot auf meinem Suse Linux System auf. Alternativ kann auch fetchmail -v pop.gmx.net aufgerufen werden. Der Parameter -v ist wichtig, um die entsprechenden Einträge in /var/log/fetchmail oder der Konsole sehen zu können.

fetchmail: 6.3.9-rc2 querying pop.gmx.net (protocol POP3) at Mon Jan 19 19:26:03 2009: poll started
fetchmail: Trying to connect to 213.165.64.22/995…connected.
fetchmail: Issuer Organization: Thawte Consulting cc
fetchmail: Issuer CommonName: Thawte Premium Server CA
fetchmail: Server CommonName: pop.gmx.net
fetchmail: pop.gmx.net key fingerprint: BA:03:AC:50:A9:A0:C7:AF:1E:79:3A:B7:C0:E7:19:5E
fetchmail: pop.gmx.net fingerprints do not match!20757:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed:s3_clnt.c:894:
fetchmail: SSL connection failed.
fetchmail: socket error while fetching from pop.gmx.net
fetchmail: Query status=2 (SOCKET)

Als nächstes wird der gefundene Fingerabdruck der fetchmailrc hinzugefügt.

sslfingerprint „BA:03:AC:50:A9:A0:C7:AF:1E:79:3A:B7:C0:E7:19:5E“

Falls der Mailserver kein Zertifikat einer CA benutzt muss noch eine Kopie davon auf dem eigenen System hinterlegt werden. Dies kann man mit dem Befehl

root/:> openssl s_client -connect pop.gmx.net:995 -showcert

für einen POP3 Server erledigen, für IMAP4 sieht es wie folgt aus:

root/:> openssl s_client -connect pop.gmx.net:993 -showcert

erledigen. Irgendwo steht in dem Text ein Bereich, der etwa so aussieht:

—–BEGIN CERTIFICATE—–
MII[…]
—–END CERTIFICATE—–

Falls auf dem eigenen System ein entsprechendes Zertifikat einer CA fehlt, so muss unter /etc/ssl/certs eine neue Datei mit genau dem Inhalt angelegt werden.

Alle gesammelten Zertifikate müssen in ein Verzeichnis kopiert und dort gehashed werden, damit fetchmail sie verwenden kann. Der einfachste Weg dazu ist das Programm 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.

Nun kommen noch zwei weitere Zeilen in die fetchmailrc hinein:

sslcertck
sslcertpath /etc/ssl/certs;

Die beiden Zeilen gehören natürlich in den selben Block wie das poll-Kommando. Sie sorgen dafür dass das Zertifikat vom Mailserver mit der eigenen Kopie verglichen wird und im Fehlerfall die Verbindung beendet wird. Die lokalen Zertifikate werden dabei in sslcertpath gesucht.

Sollte alles richtig eingestellt sein und funktionieren, dann solten folgende Zeilen in /var/log/fetchmail auftauchen:

fetchmail: 6.3.9-rc2 querying pop.gmx.net (protocol POP3) at Mon Jan 19 19:26:03 2009: poll started
fetchmail: Trying to connect to 213.165.64.22/995…connected.
fetchmail: Issuer Organization: Thawte Consulting cc
fetchmail: Issuer CommonName: Thawte Premium Server CA
fetchmail: Server CommonName: pop.gmx.net
fetchmail: pop.gmx.net key fingerprint: BA:03:AC:50:A9:A0:C7:AF:1E:79:3A:B7:C0:E7:19:5E
fetchmail: pop.gmx.net fingerprints match.
fetchmail: POP3< +OK GMX POP3 StreamProxy ready <1219.1232389566@mp069>
fetchmail: POP3> CAPA
fetchmail: POP3< +OK fetchmail: POP3<> AUTH CRAM-MD5
fetchmail: POP3< + [Hier wäre das Passwort als MD5 Hash]

fetchmail: POP3< +OK Mailbox locked and ready
fetchmail: POP3> STAT
fetchmail: POP3< +OK 0 0 fetchmail: No mail for 175739 at pop.gmx.net

fetchmail: POP3> QUIT
fetchmail: POP3< +OK GMX POP3 server signing off

fetchmail: 6.3.9-rc2 querying pop.gmx.net (protocol POP3) at Mon Jan 19 19:26:16 2009: poll completed

und die Datei /etc/fetchmailrc etwa so aussehen:

poll „pop.gmx.net“ protocol POP3 :
user „175739“ there

with password „XXXXXXXXXXXXX“
is „carsten“ here
ssl
sslfingerprint „BA:03:AC:50:A9:A0:C7:AF:1E:79:3A:B7:C0:E7:19:5E“
sslcertck
sslcertpath /etc/ssl/certs;

Viel Erfolg und sicheres einsammeln von Mails 🙂