Post auf Kommando

fetchmail

01.10.2002 Das Programm fetchmail holt Post von Mail-Accounts ab und sortiert die Mails in Postfächer auf dem eigenen Rechner oder gibt sie an den lokalen Mail-Server weiter. Es "spricht" u. a. POP3 und IMAP und kann dabei auch noch mit Verschlüsselung per SSL oder ssh umgehen.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen - wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Während sogenannte Mail Transfer Agents (MTA) wie z. B. Sendmail, Postfix oder Qmail Ihre Mails vom lokalen Rechner aus losschicken oder sie dort in Empfang nehmen, sorgt fetchmail dafür, dass die Post bei einem Server "draußen" im Netz abgeholt wird. Es kann dabei gleichzeitig von mehreren Accounts Mail herunterladen und lässt sich als Systemdienst automatisieren und in Skripte einbauen.

Konfiguration

Welche Mail-Server fetchmail kontaktieren soll, steht in der Konfigurationsdatei ~/.fetchmailrc. Diese können Sie von Hand im Lieblings-Editor bearbeiten oder aber das Programm fetchmailconf auf der Kommandozeile starten. Klicken Sie die Buttons Configure fetchmail und Novice Configuration an und tragen Sie bei New Server den Mail-Server ein, von dem Sie in Zukunft Post abholen wollen. Nach Bestätigen durch die [Return]-Taste öffnet sich ein Fenster, in dem Sie den Protokolltyp spezifizieren. In den meisten Fällen wird dies POP3oder IMAPsein. Im Feld New user tragen Sie das Benutzerkennzeichen ein und drücken [Return]. Ein weiteres Fenster öffnet sich, in dem Sie das Passwort für den Mail-Server-Account und den Namen des Benutzers auf dem lokalen Computer angeben (Feld Local names). In der Liste unter Local names steht nun neben dem richtigen lokalen User-Namen auch noch der vorher eingegebene Account auf dem Server. Diesen müssen Sie markieren und per Klick auf Delete löschen. Klicken Sie Ok und Save. Ihre Einstellungen können Sie nun in der ~/.fetchmailrc überprüfen:

# Configuration created Thu Aug 22 17:07:33 2002 by fetchmailconf
set postmaster "huhn"
set bouncemail
set no spambounce
set properties ""
poll pop.gmx.net with proto POP3
       user 'hjurzik@gmx.de' there with password 'XXXXXX' is 'huhn' here

Das Passwort wird im Klartext abgelegt. Damit für andere Benutzer diese Information verschlossen bleibt, ändern Sie die Zugriffsrechte auf der Kommandozeile mit dem Befehl:

huhn@asteroid:~$ chmod 600 ~/.fetchmailrc

Im Hauptfenster von fetchmailconf bewirkt ein Klick auf den Button Test fetchmail das Gleiche wie der Aufruf fetchmail -d0 -v --nosyslog auf der Kommandozeile: Lokaler Rechner und POP-Server unterhalten sich, ohne dass ein Transfer stattfindet. Sollte eine Fehlermeldung, wie z. B.

fetchmail: SMTP connect to localhost failed
fetchmail: SMTP transaction error while fetching from pop.gmx.net

auftauchen, ist der lokale MTA nicht richtig konfiguriert. Abhilfe schafft das Einrichten von Sendmail oder Postfix [1].

Hier geht die Post ab

Beim Start von fetchmail lassen sich auf der Kommandozeile einige Parameter zur Verfeinerung verwenden. Einige davon dürfen stattdessen auch in der Konfigurationsdatei stehen. In der Man Page werden diese Einstellungen als Keyword mit aufgeführt. Die Option -a (Kurzform für --all) bewirkt, dass alle alten und neuen Mails vom Server geholt werden. In der Datei ~/.fetchmailrc wird diese Einstellung dauerhaft durch den Eintrag fetchall eingerichtet. Ebenso lässt sich der Parameter -k (für --keep, d. h. Mails werden auf dem Server nicht gelöscht) in der Konfigurationsdatei fixieren:

user 'hjurzik@gmx.de' there with password 'XXXX' is 'huhn' here options keep

Das Gegenteil von -k bzw. --keep heißt -K (lange Form: --nokeep). Neue Mails werden auf diese Weise abgeholt und auf dem Server gelöscht. Der Eintrag in der ~/.fetchmailrc lautet entsprechend nokeep. Alte Mails lassen sich mit dem Aufruf fetchmail -F (für --flush) auf dem Server löschen - allerdings nur, wenn Sie über POP oder IMAP gehen. Vorsicht mit dieser Option: Hängt sich der eigene MTA einmal auf und wird fetchmail damit unterbrochen, wird beim nächsten Programmstart möglicherweise Mail auf dem Server gelöscht, die Ihnen nie zugestellt wurde. Mit der Option -d arbeitet fetchmail im Hintergrund als Daemonfür Sie. Sollte dies gewünscht sein, starten Sie das Programm mit diesem Parameter und der Zeitangabe in Sekunden:

huhn@asteroid:~$ fetchmail -d 180

Jetzt schaut das Tool alle drei Minuten nach, ob Post abzuholen ist. Mit fetchmail -q werden Sie diesen Prozess wieder los.

Mehrere Accounts lassen sich ebenfalls problemlos verwalten. In der ~/.fetchmailrc können Server einfach untereinander geschrieben werden:

poll provider.net with proto POP3
       user 'hjurzik@gmx.de' there with password 'XXXXXX' is 'huhn' here
poll other.provider.net with proto imap
       user 'jurzik' there with password 'YYYY' is 'huhn' here

Verschlüsselt bitte!

Überprüfen Sie zunächst, ob fetchmail gegen die SSL-Bibliotheken gelinkt ist:

huhn@asteroid:~$ ldd /usr/bin/fetchmail
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x4001e000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x4004b000)
        libssl.so.0.9.6 => /usr/lib/libssl.so.0.9.6 (0x4005c000)
        libcrypto.so.0.9.6 => /usr/lib/libcrypto.so.0.9.6 (0x40089000)
        libc.so.6 => /lib/libc.so.6 (0x40149000)
        libdl.so.2 => /lib/libdl.so.2 (0x40266000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Die Einträge libssl.so und libcrypto.so sind die entscheidenden. Bei einigen Distributionen, z. B. Debian Woody, muss ein spezielles fetchmail-Paket mit SSL-Unterstützung (apt-get install fetchmail-ssl) installiert werden, damit dies funktioniert.

Bei POP3 geht Ihr Passwort (genau wie bei telnet) im Klartext über das Netz - nicht nur die Anmeldung, sondern auch das Übertragen der Mail verläuft unverschlüsselt. Wenn der Mail-Server, mit dem Sie sich verbinden, SSLunterstützt (bei GMX und Web.de klappt das), hängen Sie entweder den Parameter --ssl an den Programmaufruf an, oder tragen Sie in die Datei ~/.fetchmailrc ganz unten ein:

ssl

Das Tunnelnmit ssh (Secure Shell) ist etwas schwieriger und setzt voraus, dass Sie einen Shell-Account auf dem Mail-Server haben. Zusammen mit den ssh-Optionen -L und -R können verschlüsselte "Pipelines" gelegt werden, die sich sogar noch komprimieren lassen (Parameter -C). Ein entsprechender Eintrag in der .fetchmailrc kann beispielsweise so aussehen:

poll localhost port 1234 proto pop3 user (POPUSER) password (POPPASS) preconnect "ssh -C -f -L 1234:(HOST):110 (USER)@(HOST) sleep 20" is (LOCALUSER) here options fetchall;

(POPUSER), (POPPASS), (USER)@(HOST) und (LOCALUSER) ersetzen Sie entsprechend durch Ihre eigenen Daten. Der Eintrag port 1234 bezeichnet einen beliebig gewählten Portauf Ihrem lokalen Rechner. Mit dem Aufruf preconnect "ssh ... wird der Tunnel eingerichtet. Die ssh-Parameter lassen sich so erklären: -C steht für Komprimierung (engl. "compression"), -f sagt ssh, dass es im Hintergrund starten soll. Die Angabe -L 1234:(HOST):110 bedeutet: Unter Port 1234 wird ein Tunnel zum HOST (der Mail-Server) auf Port 110 (für POP3) eingerichtet; fetchmail spricht also mit dem Localhost auf 1234 unverschlüsselt, ist aber in Wirklichkeit mit dem Mail-Server auf Port 110 verbunden, wobei die Verbindung dorthin durch die ssh verschlüsselt wird. Der Eintrag sleep 20 setzt schließlich eine Wartezeit von 20 Sekunden im Verbindungsaufbau. Beim fetchmail-Aufruf werden Sie nun noch nach dem Passwort vom Server gefragt, und der sichere Transfer kann beginnen.

Glossar

POP3

Das Post Office Protocol (neueste Version ist POP3) sorgt dafür, dass private Anwender Post vom Mail-Server auf den lokalen Rechner herunterladen können. E-Mails auf dem Server werden wahlweise gelöscht oder verbleiben dort.

IMAP

Wesentlich flexibleres Protokoll, bei dem die Mail auf dem Server bleibt und vom Mail-Client lokal angezeigt wird. Das verwendete Mail-Programm muss IMAP-fähig sein, was heutzutage für fast alle Mailer zutrifft. Eine Netzwerkverbindung zum Mail-Server muss permanent bestehen. Alternativ erlaubt auch IMAP den Download der Mails - das wird auch fetchmail beim Zugriff auf IMAP-Server nutzen.

Daemon

Daemon-Prozesse sind Endlosprozesse, die auf ein bestimmtes Ereignis warten und im Hintergrund Dienste verrichten.

SSL

Secure Socket Layer. Ein Standard zur Verschlüsselung von Kommunikation. Dabei wird nicht nur sicher gestellt, dass es sich um den richtigen Server handelt, sondern auch geprüft, ob die Daten vollständig und unverändert den Empfänger erreichen. Die Authentifizierung läuft mittels sogenannter Zertifikate. Diese Identitätsbescheinigungen werden von anerkannten Stellen, z. B. VeriSign oder Thawte, ausgestellt und sind in der Regel kostenpflichtig. Viele Anbieter (z. B. Banken oder Online-Kaufhäuser) im WWW verwenden diese Technik, um ihren Kunden maximale Sicherheit zu garantieren.

Tunneln

Das Durchleiten einer Verbindung durch eine andere. Konkret heißt das: Die unverschlüsselte POP-Verbindung wird durch die verschlüsselte ssh-Verbindung durchgeleitet.

Port

Eine Nummer, unter dem auf dem System Netzwerkdienste angesprochen werden können. Beispielsweise ist SMTP der Port 25 oder POP3 der Port 110 zugewiesen (siehe /etc/services). Der hier gewählte Port muss größer als 1024 sein, da die darunterliegenden für das System reserviert und nur von root belegbar sind.

Infos

[1] Patricia Jung: "Ab geht die Post - The Answer Girl", LinuxUser 10/2000, S. 44, http://www.linux-user.de/ausgabe/2000/10/044-answergirl/Answergirl_1000-2.html

[2] Oliver Flimm: "Secure Shell (ssh) Infoblatt", http://www.ph-cip.uni-koeln.de/~flimm/ssh-info.ps

Einem Freund empfehlen    Druckansicht beenden Bookmark and Share
Kommentare