Fetchmail

aus C't-Server Wiki, der freien Wissensdatenbank

Um Postfächer auf den lokalen Server umzuleiten, benötigt man Fetchmail, nach Möglichkeit in der SSL Variante.

apt-get install fetchmail fetchmail-ssl

Für die einfache Verwendung ohne SSL reicht es eine Datei /etc/fetchmailrc anzulegen, mit Rechten 0600. Darin steht zunächst ein Standard Empfänger durch die Anweisung set postmaster

set postmaster "postmaster"

Anschließend können die Postfächer die abgeholt werden angegeben werden.

poll
pop.isp.de
proto pop3
user ’ispusername’
password ’secret’
is username

Dabei ist username der Systembenutzer auf dem Mailserver und ispusername und secret die Zugangsdaten beim fernen Mailprovider. Wer sein Passwort nicht direkt in die fetchmailrc hacken will, der kann auch die Datei .netrc im Home Verzeichnis des fetchmail Users verwenden (normalerweise /var/run/fetchmail). Diese enthält gesondert die Zugangsdaten für jeden Account. Eine mögliche .netrc könnte wie folgt aussehen:

machine pop.isp.de
login ispusername
password secret
machine pop3.web.de
login user@web.de
password secret2

Verwendet man diese Variante, können die Zeilen mit der Angabe des Passworts in der fetchmailrc weggelassen werden. Das Problem ist allerdings das der Inhalt des Fetchmail Homedirectories bei jedem Start gelöscht wird. Somit müsste man die .netrc Datei bei jedem Start von wo anders wieder in das Verzeichnis kopieren.

Möchte man den Vorgang des Mail abholens per SSL absichern, erstellt man zunächst eine neue Datei .fetchmailrc im Homeverzeichnis von root. Dahinein kopiert man den oben angegebenen Block mit dem Zusatz ssl:

#~/.fetchmailrc
poll
pop.isp.de
proto pop3
user ’ispusername’
password ’secret’
is username
ssl

Ruft man nun als root fetchmail -v auf, bekommt man diverse Anzeigen. Unter anderem etwas ähn- liches wie

pop.isp.de key fingerprint: 24:23:09:0B:15:E3:AE:0F:5F:22:BC:14:1D:FB:3A:33

Nun kopiert man sich den fingerprint und ergänzt den Block in /etc/fetchmailrc zu folgendem:

#etc/fetchmailrc
poll
pop.isp.de
proto pop3
user ’ispusername’
password ’secret’
is username
ssl
sslfingerprint "‘24:23:09:0B:15:E3:AE:0F:5F:22:BC:14:1D:FB:3A:33"’
sslcertck
sslcertpath /etc/ssl/certs

Die Datei .fetchmailrc im Home Verzeichnis von root kann nun wieder gelöscht werden. Nun holt man sich das Zertifikat des Servers

openssl s_client -connect pop.isp.de:995 -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-----

Damit nun überprüft werden kann ob das Zertifikat auch stimmt, muss ein weiteres Zertifikat her: Das Zertifikat der CA die das Zertifikat des Servers unterschrieben hat. Zunächst gilt es also herauszufinden, wie die für den Server zuständige CA heisst. Den Namen findet man zumeist nach dem Ende des Zertifikats:

0sV2lPdcBWgnn5tvUPzKppC3HMQSuDgNEHIZf9OOKKHhWEs=
-----END CERTIFICATE-----
---
Server certificate
subject=/C=DE/ST=Bayern/L=Muenchen/O=GMX
Aktiengesellschaft/OU=mail/CN=pop.gmx.net/Email=webmaster@gmx.net
issuer=/C=DE/ST=Hamburg/L=Hamburg/O=TC TrustCenter for Security in Data
Networks GmbH/OU=TC TrustCenter Class 3 CA/Email=certificate@trustcenter.de

Hier sieht man, dass das zuständige Trust Center (=CA) für diesen Server die TrustCenter for Security in Data Networks GmbH ist. Nach dem Namen dieser CA sollte man nun am besten Googeln. Auf der Homepage dieser Firma sollte man nun die Zertifikate finden. Sie müssen vom Typ x509 und im PEM-Format sein. Es kommt auch vor, das die Zertifikate nur im DER-Format vorliegen. Dieses kann man mittels dem Befehl

openssl x509 -in certificate.der -inform DER -outform PEM

in das PEM-Format umwandeln.

Tip: Ich habe das gesuchte CA-Zertifikat (1&1 Pop3-Server) einfach aus dem Web-Browser (hier Internet-Explorer) exportiert und wie oben beschrieben von DER- ins PEM-Format gewandelt. Gruss neobiker

Man kopiert nun die Daten jedes Zertifikats inklusive —–BEGIN CERTIFICATE—– und —–END CERTIFICATE—– in jeweils eine Datei im Verzeichnis /etc/ssl/certs. In diesem Fall zum Beispiel /etc/ssl/certs/isp.pem Anschließend muss das Verzeichnis neu gehasht werden, indem man man folgendes aufruft:

c_rehash /etc/ssl/certs

Ähnlich kann man nun bei weiteren Postfächern vorgehen. Um die Intervalzeiten festzulegen in denen Fetchmail Nachrichten abruft, kann man über die Zeile

#etc/fetchmailrc
set daemon 120

ein Interval in Sekunden eingeben. Vorsicht ist allerdings bei manchen Providern geboten, da diese die Intervalzeiten beschränken. So ist bei Web.de ein Interval von 15 Minuten er- forderlich. Dies lässt sich jedoch einfach konfigurieren in dem im entsprechenden poll Block zusätzlich die Zeile

interval 15

eingebaut wird.

Autor(en)

Volker