Fetchmail und Getmail im Vergleich

Aus LinuxUser 01/2005

Fetchmail und Getmail im Vergleich

Besserer Postbote

Als Standardprogramm fürs Abholen von E-Mail auf der Kommandozeile gilt bislang Fetchmail. Mittlerweile tritt das Tool Getmail als Konkurrent an, der das Original in vielen Punkten schlägt.

Mehrere Email-Accounts bequem zu nutzen, ist auch mit grafischen E-Mail-Clients kaum möglich. Zwar lassen sich dort für jede Adresse “Konten” einrichten, die der Benutzer aber meist von Hand durchsehen muss. Viele Anwender greifen deshalb zum Programm Fetchmail [1], das Mails von einem oder mehreren Servern abholt und sie ins lokale Mailsystem einspeist. Meistens landen sie dann in /var/spool/mail/Username, wo Mailprogramme wie Mutt, KMail oder Evolution sie ohne weiteres finden.

Kommandozeile oder Konfigurationsdatei

Die meisten Distributionen installieren Fetchmail standardmäßig. Fehlt es doch einmal, lässt sich das Programm mit dem Paketmanager leicht nachträglich einrichten. In der einfachsten Variante starten Sie das Programm nur mit einem Server als Parameter: fetchmail pop.gmail.com. Der Benutzername auf diesem Server ist dann identisch mit dem aktuellen Login, das Passwort fragt Fetchmail interaktiv ab.

Das Mail-Tool lässt sich mit einer Reihe von Parametern auf den eigenen Bedarf abstimmen. So werden die meisten Benutzer wohl E-Mail-Accounts besitzen, die anders lauten, als der Account auf dem heimischen Rechner. Da hilft die Option -u, hinter welcher der E-Mail-Benutzername folgt.

Der Parameter -p gibt das Mailprotokoll an, mit dem Fetchmail den Server kontaktiert, also IMAP oder POP3. Fehlt er, probiert das Tool die Protokolle selbst aus, was aber nicht immer funktioniert. Besser geben Sie hinter der Option -p selbst das richtige Protokoll an.

Folgende Zeile holt über POP3 vom Server pop.gmail.com E-Mail mit dem Benutzernamen otto ab. Zusätzlich sorgt --ssl für eine verschlüsselte Verbindung, die der Gmail-Zugang voraussetzt.

fetchmail -p POP3 -c --ssl -u?
 otto pop.gmail.com

Bei der Fehlersuche weist -v Fetchmail an, alle Aktionen im Detail zu protokollieren. Mit --syslog gelangen alle Ausgaben in die systemweite Logdatei. Alternativ gibt -L ein beliebiges anderes Logfile an. Auch -c ist praktisch, denn damit sieht das Tool nur nach neuer Mail, ohne sie gleich herunterzuladen.

Test und Logging

Mit der Option -k belässt Fetchmail alle Mails auf dem Server, wenn Sie über POP3 darauf zugreifen. Andernfalls löscht Fetchmail auf dem Server alle abgeholten Mails. Sinnvoll ist diese Variante natürlich auch, wenn Sie häufig an unterschiedlichen Orten arbeiten und und deshalb alle Mails auf dem Server behalten möchten. IMAP-Benutzer geben mit -r das Mailfach an, das Fetchmail überprüft. Mehrere Mailfolder werden dabei durch Kommata getrennt.

Haben Sie alle Einstellungen beisammen, können Sie sie in die Konfigurationsdatei ~/.fetchmailrc schreiben, die das Programm beim Start liest. Leider heißen die entsprechenden Schlüsselwörter für die Datei anders als die Kommandozeilenoptionen. Zum Beispiel steht dort proto für den Parameter -p. Eine Datei, die dem obigen Beispiel entspricht, sieht so aus:

poll pop.gmail.com
with protocol POP3
with ssl
with keep
username otto

Damit Fetchmail die Datei auch benutzt, müssen die Rechte stimmen, die Sie mit chmod go-rwx .fetchmailrc anpassen. Fetchmail hilft dabei, die Konfigurationsdatei zu schreiben: Dazu rufen Sie das Tool mit --configdump zusätzlich zu den korrekten Parametern auf. Das resultierende File lässt sich allerdings nicht direkt verwenden, sondern nur mit dem Editor fetchmailconf, der in den meisten Installationen fehlt.

Direkt ins Mailfach

Von Haus aus benutzt Fetchmail den lokalen Mailserver – also denjenigen auf dem Rechner, auf dem Sie es starten. Auch wenn viele Distributionen einen Mailserver mitbringen, ist er nicht unbedingt auch richtig konfiguriert. Deshalb empfiehlt sich, Fetchmail die Mails direkt einsortieren zu lassen. Dabei hilft ihm der so genannte Mail Delivery Agent, bei den meisten Distributionen das Programm Procmail [2]. Der entsprechende Eintrag in der Konfigurationsdatei lautet mda, die Kommandozeilenoption -m:

fetchmail --ssl -p POP3 -k -u%%
 otto -m procmail pop.gmail.com

Wie Procmail auf dem eigenen Rechner E-Mails einsortiert, hängt stark von der jeweiligen Konfiguration ab. Normalerweise landet sie ebenfalls in /var/spool/mail/Benutzername. Über die Datei .procmailrc im eigenen Homeverzeichnis steuern Sie diesen Prozess im Detail. Um zum Beispiel alle Mails in einem Maildir zu speichern, genügt die Zeile DEFAULT=$HOME/Maildir/.

Mehr Informationen zu Procmail finden Sie in [2] oder im entsprechenden Artikel in diesem Heft auf S.32.

Alternative: Getmail

Obwohl sich mit Fetchmail Nachrichten einfach vom Server abholen lassen, gab es in der Vergangenheit doch Anlass zu Beschwerden. So wurden immer wieder Sicherheitslücken des Programms bekannt. Auch seine Art, die Email-Header umzuschreiben, gab Anlass zur Kritik.

Konkurrent Getmail [3] ist angetreten, diese Probleme zu lösen. Als Python-Programm ist es schon von Haus aus weniger anfällig für Sicherheitsprobleme. Auch sonst hat sich der Autor erfolgreich bemüht, sein Tool klar zu strukturieren und für die Aufgabe des Mail-Handlings zu optimieren.

Praktisch alle aktuellen Distributionen bringen die Programmiersprache Python mit, so dass die Getmail-Installation keine Probleme bereiten sollte. Spielen Sie entweder das RPM von der Heft-CD ein oder konfigurieren und installieren Sie von Hand:

python setup.py build
su -c 'python setup.py install'

Getmail erwartet beim Start die Konfigurationsdatei getmailrc im Verzeichnis ~/.getmail. Die nötigen Rechte geben Sie dem Verzeichnis mit chmod go-rwx .getmail.

Die Datei selbst gliedert sich in einzelne Bereiche, deren Beginn jeweils eckige Klammern markieren. Die für das Abholen der Mail zuständige Komponente heißt Retriever, so auch der entsprechende Konfigurationsabschnitt. Für jedes Protokoll bietet Getmail einen Retriever: SimplePOP3Retriever, SimplePOP3SSLRetriever, SimpleIMAPRetriever und so weiter. Für POP3 mit SSL sieht das zum Beispiel so aus:

[retriever]
type=SimplePOP3SSLRetriever
server=pop.gmail.com
username=otto
password=sehrgeheim

Wohin Getmail die Mails befördert, legt der Abschnitt [destination] fest. Das Tool beherrscht das Unix-MBox-, aber auch das Maildir-Format. Die beiden Parameter path und type stehen für den Pfad und den Typ der Mailbox.

[destination]
type = Mboxrd
path = ~/inbox
[destination]
type=Maildir
path=~/Maildir/

Wollen Sie E-Mail von mehreren Accounts abholen, erwartet Getmail für jeden von ihnen eine Konfigurationsdatei. Der Parameter --rcfile bestimmt das aktuell verwendete File. Getmail verarbeitet diesen Parameter auch mehrmals, so dass Sie alle Ihre Accounts auf einmal abrufen können. Liegen im Verzeichnis .getmail zum Beispiel die Dateien hotmail und gmail, holen Sie von beiden Accounts die E-Mail mit folgendem Befehl ab: getmail --rcfile hotmail --rcfile gmail.

Mehrere Accounts abholen

Für fortgeschrittene Anwendungen kennt Getmail einige Alternativen zur Basiskonfiguration mit einfachen Mailboxen. So kann es, ähnlich wie Fetchmail, mittels MDA_external einen Delivery Agent (Procmail) verwenden.

Multidestination bringt Getmail dazu, Mails an mehrere Bestimmungsorte auszuliefern. Im entsprechenden Abschnitt steht dann nur der eine Parameter destinations, der auf zwei oder mehr im Konfigurationsfile eingerichtete Destinations verweist oder direkt Mailboxpfade enthält.

Wer bei seinem Internet-Provider E-Mail für mehrere Adressen einer Domain in einer Mailbox empfängt, kann auf den Multisorter zurückgreifen. Damit lädt Getmail alle E-Mails herunter und ordnet sie anhand der Header einzelnen lokalen Mailboxen zu.

Von Haus aus belässt das Programm die Mails auf dem Server. Der Schalter -d sorgt dafür, dass er sie löscht. Alle (also nicht nur die neuen) E-Mails holt Getmail mit -a. Detaillierter protokolliert Getmail seine Aktionen mit der Option -v oder dem Konfigurationseintrag verbose=1. Diese Einstellungen gehören in der Konfigurationsdatei in den Abschnitt [options].

IMAP

Auch Getmail beherrscht natürlich mehrere IMAP-Boxen, die Sie in der Konfigurationsdatei folgendermaßen einstellen:

mailboxes = ("INBOX", ?
"INBOX.saved")

Fazit

Beide Abholprogramme erledigen die grundlegenden Aufgaben ohne Probleme. Sie beherrschen die gängigen Mail-Protokolle IMAP und POP3 einschließlich ihrer Varianten, mit und ohne SSL-Verschlüsselung.

Fetchmail setzt normalerweise einen lokalen Mailserver voraus oder benutzt einen Mail Delivery Agent wie Procmail, um E-Mails direkt in Mailfolder zu schreiben. Getmail bewältigt diese Aufgabe von Haus aus selbständig und bietet sogar die Wahl zwischen den klassischen Unix-Mailboxen und modernen Maildirs. Benötigen Sie fortgeschrittene Features, sind Sie mit Getmail besser bedient – ob es sich um Qmail-Unterstützung handelt oder verschiedene E-Mail-Adressen einer virtuellen Domain in einzigen Mailbox.

Fetchmail gibt es zwar schon länger, es enthält deshalb aber nicht unbedingt weniger Bugs, wie ein Blick auf die Liste der Sicherheitsprobleme zeigt. Auch die Konfigurationsdatei selbst zu schreiben, gestaltet sich schwierig, da die Manpage nicht alle dafür nötigen Informationen liefert. GMail dagegen präsentiert sich klar strukturiert und dokumentiert.

Glossar

Maildir

Ein Format zum Abspeichern von E-Mails. Im Gegensatz zum klassischen Unix-MBox-Format speichert Maildir nicht alle Mails in einer Datei, sondern jede einzeln.

Infos

[1] Fetchmail: http://www.catb.org/~esr/fetchmail

[2] Andreas Kneib, Mail bearbeiten mit Procmail, LinuxUser 04/02, S. 70

[3] Getmail: http://www.qcc.ca/~charlesc/software/getmail-4

LinuxUser 01/2005 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben