Howto: fetchmail Alternative getmail
Bis vor Kurzem habe ich für das Abrufen meiner Mails von diversen POP3 & IMAP Konten fetchmail genutzt. Da ich nun meinen Server dank ispOne neu aufsetzen durfte, war zugleich die Gelegenheit zum Wechsel auf eine bessere Alternative: getmail.
fetchmail war mir immer schon zu kryptisch und unübersichtlich in der Konfiguration. getmail ist anders – wie dieses einfache Beispiel eines POP3-Connectors demonstriert. Folgendes kann man in die getmail Konfigurationsdatei ~/.getmail/getmailrc schreiben:
[sourcecode language="css"][retriever]
type = BrokenUIDLPOP3Retriever
server = pop.gmx.net
username = username@gmx.de
password = geheim[/sourcecode]
Mit type kann man das Protokoll und die zugehörige getmail Implementierung auswählen. GMX benötigt hier BrokenUIDLPOP3Retriever als Typ, da das UIDL-Kommando nicht sauber unterstützt wird. Neben IMAP stehen auch noch die verschlüsselten Varianten beider Protokolle zur Verfügung:
- SimplePOP3Retriever – Standard POP3
- BrokenUIDLPOP3Retriever – POP3 mit fehlerhafter UIDL Implementierung
- SimplePOP3SSLRetriever – Standard POP3S
- BrokenUIDLPOP3SSLRetriever – POP3S mit fehlerhafter UIDL Implementierung
- SimpleIMAPRetriever – Standard IMAP
- SimpleIMAPSSLRetriever – Standard IMAPS
Zusätzlich gibt es sogenannte Multidrop-Receiver, die man aber in der Regel bei den Standardmailanbietern nicht benötigt. Für weitere Informationen verweise ich auf die getmail-Dokumentation.
Die Variablen server, username und password sollten selbsterklärend sein. Hat man den retriever Abschnitt konfiguriert, kümmert man sich darum, was mit den abzuholenden Mails geschehen soll.
[sourcecode language="css"][destination]
type = Maildir
path = ~/Maildir/[/sourcecode]
Im Abschnitt destination kann der weitere Verlauf für die Mails definiert werden. Hier kann man zwischen Maildir und MBoxrd Format wählen. Nutzer von Courier und qmail wählen Maildir, Cyrus Nutzer wählen MBoxrd. Beim path gibt man den Speicherort der Mails an. In diesem Fall werden die Mails ins Maildir des aktuellen Benutzers geschrieben.
Neben dem Speicherort kann auch die Weitergabe an ein weiteres Programm angegeben werden – z.B. maildrop oder procmail. Für maildrop sähe die destination Section wie folgt aus:
[sourcecode language="css"][destination]
type = MDA_external
path = /usr/bin/maildrop
unixfrom = true[/sourcecode]
Als Typ wird ein externer Mail Delivery Agent angegeben – in unserem Falle also courier-maildrop, mit dem Pfad /usr/bin/maildrop. Durch die Option unixfrom wird ein From_ an den Anfang der Nachricht geschrieben – maildrop erwartet solch eine Angabe für reibungsloses Funktionieren.
Mit getmail kann man auch Filter definieren, die durchlaufen werden sollen. So z.B. ein externen Spamscanner wie SpamAssassin. Folgende Angaben erwartet getmail dafür in der Konfigurationsdatei:
[sourcecode language="css"][filter]
type = Filter_external
path = /usr/bin/spamc[/sourcecode]
Mit diesen zwei Angaben werden die Mails an SpamAssassin weitergegeben und danach an den in destination definierten Prozess weitergeleitet.
Abschließend kann man noch einige Optionen setzen.
[sourcecode language="css"][options]
delete = true
message_log = ~/.getmail/log[/sourcecode]
Hierzu gehört die Angabe delete, die alle Nachrichten auf dem Server löscht, wenn es auf true gesetzt wird. Es empfiehlt zusätzlich für den Einstieg das Logging zu aktivieren, um evtl. Fehler schneller zu entdecken.
Für jedes Emailkonto kann man eine eigene Datei anlegen, die später von getmail verarbeitet wird. Dies wahrt die Übersicht und lässt spezifische Konfigurationen zu. Standardmäßig liest getmail nur die Datei getmailrc ein, so dass man alle Dateien explizit angeben muss:
[sourcecode language="css"]getmail –rcfile ~/.getmail/gmx –rcfile
~/.getmail/gmail –rcfile ~/.getmail/yahoo[/sourcecode]
Nun kann man bei dem jeweiligen User einen Cronjob einrichten, der alle 15 Minuten die Mails abholt.
[sourcecode language="css"]*/15 * * * * /usr/bin/getmail –rcfile ~/.getmail/gmx –rcfile
~/.getmail/gmail –rcfile ~/.getmail/yahoo[/sourcecode]
Für weitere Konfigurationsbeispiele und weitere Möglichkeiten sollte man sich auf jeden Fall noch mal die offizielle getmail-Dokumentation ansehen.
Links:
getmail Homepage
getmail Dokumentation
fetchmail Homepage



Kai Bausch
Wie aber bekommt man es mit getmail hin, das mal eine konfigdatei hat, in der für 10 user aus 10 unterschiedlichen quellen konten abgefragt werden und die im crontab des root läuft.
Also eine Config , wie /etc/fetchmailrc die zentral mails holt und an 10 systemuser verteilt.
Stefan
man getmail
matthias
Eine zentrale Konfiguration ist mir so nicht bekannt. Ich empfehle dir die offizielle Dokumentation, die Manpages oder die Mailinglisten zu konsultieren.