www.Newbie-Net.de

Fetchmail

Mailabholung für viele User automatisiert

Autor: Karsten Kruse

Inhalt

Vorwort

Mail ist sicher eine der beliebtesten Anwendungen des Internet. Darum gebe ich Euch heute eine kleine Einführung in die Bedienung von Fetchmail, einem Werkzeug das für Euch das Mailabholen für beliebig viele Benutzer durchführt. Im folgenden werdet Ihr sehen wie Fetchmail installiert und konfiguriert wird. Ich beziehe mich auf meine eigene Distribution. Es ist eine Suse 6.4, die Anleitung funktioniert aber ohne weiteres auch mit anderen Distributionen.

Die Installation mit RPM

Wir installieren das Paket "fetchmail" aus der Serie "n" mittels YaST. Ich gehe nicht weiter darauf ein, YaST ist nahezu selbsterklärend, wir haben ja auch bei der Installation schon Bekanntschaft mit YaST gemacht. Alternativ kann auch mit RPM von der Kommandozeile installiert werden. Mit dem Befehl rpm --install (paketname) wird das betreffende Paket installiert.

Die Installation aus den Sourcen

Sollte der unwahrscheinliche Fall eintreten, dass unsere Distribution kein Fetchmail mitbringt, downloaden wir uns den Quellcode aus dem Internet und kompilieren uns Fetchmail selbst. Hier eine kurze Anleitung:

Downloaden und Entpacken:

Von der Fetchmail Homepage http://fetchmail.berlios.de/ laden wir uns die Sourcen als fetchmail-5.6.0.tar.gz in ein temporäres Verzeichnis. Wir entpacken die Sourcen mit gzip -dc fetchmail-5.6.0.tar.gz | tar xvf -. Jetzt haben wir den menschenlesbaren Sourcecode vorliegen, aus dem wir eine maschienenlesbare ausführbare Datei erstellen werden. Das hört sich schwerer an als es ist :).

Configure:

Wir wechseln mit cd in das eben entpackte Verzeichnis und geben die Anweisung die Sourcen zu konfigurieren. Das übernimmt allgemein das Programm GNU/Autoconf. Wir geben also als Root ./configure --prefix=/usr/local ein. Jetzt fragt Ihr Euch sicher was --prefix=/usr/local bedeutet? Diese Option weist Autoconf an, alle Pfade so einzustellen dass das fertige Programm unterhalb des gewünschten Verzeichnisses installiert wird. Dieser Pfad wird standardmäßig für Selbstkompiliertes genommen. Es sollten einige Meldungen durchrauschen wie z.b:

 loading cache ./config.cache
 checking host system type... i586-nethunter-linux
 checking for gcc... (cached) gcc
 checking whether the C compiler (gcc -O -s) works... yes
 checking whether the C compiler (gcc -O -s) is a cross-compiler... no
 checking whether we are using GNU C... (cached) yes
 checking whether gcc accepts -g... (cached) yes
 checking for a BSD compatible install... (cached) /usr/bin/install -c
 checking how to run the C preprocessor... (cached) gcc -E
 checking whether gcc and cc understand -c and -o together... (cached) yes
 checking for AIX... no
 checking for POSIXized ISC... no
 checking for minix/config.h... (cached) no
 checking for ANSI C header files... (cached) yes
 checking for size_t... (cached) yes
 checking for pid_t... (cached) yes
 checking return type of signal handlers... (cached) void
 checking for unistd.h... (cached) yes
 checking for termios.h... (cached) yes
 ...

Sollte ./configure abbrechen, müsst Ihr prüfen ob ein Compiler (z.B. gcc) sowie bison, flex und die Headerdateien des Kernels installiert sind. Ist das nicht der Fall habt Ihr es nachzuinstallieren und ./configure neu zu starten.

Make und Make Install:

Nachdem ./configure erfolgreich durchgelaufen ist, stoßen wir den Kompiliervorgang mit make an. Danach noch einmake install und wir sind fertig mit der Installation.

Die Konfigurationsdatei

Es wird Zeit die Konfigurationsdatei anzulegen. Dazu wechseln wir als Root in das Verzeichnis /root und geben touch .fetchmailrc ein. Und um gleich klarzumachen, dass niemand außer Root das Recht hat die Datei zu lesen, geben wir noch ein chmod 600 .fetchmailrc hinterher. Die Passwörter für unsere Mailboxen werden im Klartext in dieser Datei gespeichert, darum dieser Schritt. Nun tragen wir unsere Konfiguration mit einem Editor ein. Ich nehme gerne mcedit der mit dem guten Midnight Commander (einem Dateimanager) kommt. Ein mcedit .fetchmailrc öffnet die Datei. Hier eine Vorlage:

 set postmaster "postmaster"
 set bouncemail
 set properties ""

 poll pop3.janssen-s1.de with proto POP3
     user 'mathias' there with password 'geheim1' is tarra here options fetchall
     user 'compgarden' there with password'gheim2' is pusty here options fetchall

 poll pop.gmx.de with proto POP3
     user '1827064' there with password 'geheim3' is karsten here options fetchall
     user '1031715' there with password 'geheim4' is pusty here options fetchall

 poll mail.isis.de with proto POP3
     user 'kkruse' there with password 'geheim5' is karsten here options fetchall

 postconnect "sendmail -q"

Wie man sieht haben wir drei Mailserver die abgefragt werden. Wir nehmen uns mal den zweiten vor, pop.gmx.de ist ein Mailserver von dem zwei Postfächer mit dem Protokoll Pop3 geleert werden sollen. Das erste gehört mir, mein Benutzername bei GMX ist 1827064 mit dem Passwort geheim3. Die Mail die aus diesem Postfach kommt gehört dem Benutzer karsten und es sollen alle Mails abgeholt werden. Das zweite Postfach gehört dem lokalen Benutzer pusty.

Natürlich kannst Du mit Fetchmail noch ganz andere Postfächer leeren, das kannst du aber selber nachschlagen in der sehr ausführlichen Manpage zu Fetchmail (man fetchmail).

Der letzte Eintrag in der Datei besagt, dass nach jedem Abholdurchgang das Kommando sendmail -q ausgeführt werden soll. Damit werden die frischen Mails gleich auf die Benutzerpostfächer verteilt.

Test

Wir können Fetchmail jetzt schon mit fetchmail -a -v -L /var/log/fetchmail ausprobieren. Die Option -a sagt Fetchmail es soll alle Mails abholen. Die Option -v sagt Fetchmail es soll gesprächig sein und ausgeben was gerade passiert, und -L /var/log/fetchmail sagt Fetchmail, dass die Ausgaben mitgeloggt werden.

Fetchmail automatisieren und als Dämon einrichten

Soweit, so gut, wir sollten jetzt das Mailabholen noch automatisieren. Dazu wechseln wir in das Verzeichnis /etc/ppp und legen mit touch ip-up.local und touch ip-down.local unsere Steuerdateien an, falls noch nicht vorhanden. Dann machen wir sie mit chmod 774 (Dateiname) noch ausführbar. Ob vorhanden oder nicht, wir öffnen erstmal die Datei ip-up-local mit mcedit ip-up.local und tragen folgende Zeilen ein:

 /usr/bin/fetchmail -v -d 240 -L /var/log/fetchmail

Die Option -d 240 sagt Fetchmail es soll alle 240 Sekunden die Mail abholen und die restliche Zeit schlafen. Diese Zeit sollte immer länger als der Timeoutwert der Internetverbindung liegen (bei mir 120 Sekunden). Jetzt noch mit mcedit ip-down.local diese Zeilen eintragen:

 /usr/bin/fetchmail --quit

Damit haben wir beim Beenden der Onlineverbindung Fetchmail abgeschaltet. Wenn wir das nächste mal online sind, wird er wieder in den Dämonmodus gehen und so weiter.

Poppen macht Spass - Ein weiterer Server

Es könnte hilfreich sein die Mails von einem anderen Rechner abzuholen. Dazu benutze ich einen POP3-Server. Die Installation gestaltet sich ähnlich wie die von Fetchmail. Das entsprechende Paket heißt in Yast "qpopper" aus Serie "n". Wir starten den POP3-Server mit inetd und passen deshalb dessen Konfigurationsdatei an. In der Datei /etc/inetd.conf fügen wir eine Zeile wie diese ein:

 pop3    stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/popper -s

Mit dem Kommando "rcinetd restart" zwingen wir den inetd, seine Konfigurationsdatei neu einzulesen. Jetzt sollte z.b. von einem Windowsrechner mit Netscape Messenger oder einem anderen Mailprogramm das Abholen der Mail möglich sein.

Nachwort

Möglicherweise hast du Probleme oder Tipps die du mit anderen teilen möchtest? Oder du hast Fehler entdeckt? Am besten schreibst du mir dann eine Mail, dann sehen wir weiter. Wie dem auch sei, ich wünsche wie immer viel Spaß damit :). Karsten Kruse tecneeq(at)tecneeq(dot)de