Fetchmail
aus C't-Server Wiki, der freien Wissensdatenbank
Version vom 15:52, 4. Apr 2006
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. 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.