Mailabholung für viele User automatisiert
Autor: Karsten Kruse
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.
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.
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:
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 :).
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.
Nachdem ./configure erfolgreich durchgelaufen ist, stoßen wir den Kompiliervorgang mit make
an. Danach noch einmake install
und wir sind fertig mit der Installation.
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.
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.
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.
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.
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