Fetchmail - Mails abrufen - Verwendung mit SuSE 7.2
Fetchmail ist ein kleines aber sehr leistungsfähiges Programm um von Mailservern
verschiedenster Art (POP, IMAP usw. auch mit SSL und APOP) seine Mails abzuholen.
Diese können gleich einem lokalen Benutzer zugeordnet werden.
Man kann Fetchmail mit verschiedenen Optionen aufrufen, so z.Bsp:
- -f /etc/fetchmailrc Hier Konfiguration der abzuholenden Konten
- -a alles abholen
- -k (keep) Mails nicht löschen
- -v Ausgabe von Fehlermeldungen
Mehr dazu findet ihr mit einem Aufruf von "man fetchmail".
Ich habe alle meine Mail-Konten in fetchmail eingetragen (in /etc/fetchmailrc) und lasse sie an einen lokalen User "ausliefern". Das heißt nur, das die Mail dann im Verzeichnis /var/spool/mail/user-name liegt.
Wenn man die verschiedenen Mail-Adressen aus dem Internet getrennt verwalten will (oder muß) legt man am besten für jede Adresse einen extra User im Linux an. Dann teilt man jedem user beim Holen durch Fetchmail "seine" Mail zu.
Bsp. der /etc/fetchmailrc:
poll post.strato.de proto POP3 user "franz@musterman.de" \
pass "dein-passwort-beim-provider" is franz
poll mail.gmx.de proto POP3 user "benutzername-beim-provider" \
pass "passwort1" is franz1
poll post.strato.de proto POP3 user "franz.geschaeft@geschaeft.de" \
pass "passwort2" is franz2
So kann man viele verschiedene Mail-konten abrufen. In seinem lokalen Mail-Programm muß man nun verschiedene Konten einrichten. Dort gibt man dann die verschiedenen User-Namen (hier Franz, Franz1, Franz2 ...) und die zugehörigen Passwörter ein.
Nach dem Anlegen der neuen lokalen User muß man natürlich Sendmail nochmal neu starten.
Mit dem Aufruf von Fetchmail durch "fetchmail -a -f /etc/fetchmailrc -L /var/log/fetchmail.log" wird ein Abruf der Mail-Konten im Internet gestartet, die Ausgaben werden in der Datei /var/log/fetchmail.log mit geschrieben.
Beim ersten Versuch sollte man die Option "-k" benutzen, dann werden die Mails noch nicht vom Server gelöscht (man weiß ja nie).
Automatisierung
In /etc/ppp/ip-up geht man in den Abschnitt wo die PPP-Verbindung aufgebaut wird. Bei ISDN ist das nach "ippp*) ... ip-up)", bei Modem wäre es nach "ppp*) ... ip-up)".
Kurz bevor die Sektion zu Ende ist steht bei mir schon mal drin (noch auskommentiert):
#/usr/bin/fetchmail -a -v >>/var/log/fetchmail 2>&1 &
#/usr/sbin/sendmail -q &
Wenn man hier die Kommentare entfernt (und entsprechend anpasst mit "-f /etc/fetchmailrc") sollte bei jedem Verbindungsaufbau Post geholt und fortgeschickt werden.
Das -v bewirkt mehr Meldungen, diese werden in /var/log/fetchmail geschrieben.
Als Alternative kann man auch den Aufruf von /etc/ppp/poll.tcpip aktivieren. In diesem Script wird zusätzlich noch die Zeit mit Zeitservern im Internet synchronisiert.
Will man nun aller 20 Minuten Mail im Internet holen lassen schreibt man die zwei Aufrufe in ein kleines Shell-Script und ruft dieses mittels Cron auf.
Bsp. Shell-script:
#!/bin/sh
# /usr/local/bin/mailholen.sh
# hierineinlegen und ausführbar machen
#
/usr/bin/fetchmail -a -f /etc/fetchmailrc -v >>/var/log/fetchmail
sleep 20
# erst mal 20 Sekunden warten bis Verbindung steht und SMTP frei ist
# bei Modem-Betrieb dauert das natürlich länger, also mehr Geduld ;-)
/usr/sbin/sendmail -q
Bsp. Cron-Eintrag:
0,20,40 * * * * root /usr/local/bin/mailholen.sh
Hiermit wird jeden Tag, jede Stunde zu diesen Minuten (0,20,40) das obige Script aufgerufen.
Crontab-Einträge werden normalerweise in /etc/crontab gemacht. Man kann aber für
periodisch auszuführende Scripte die Verzeichnisse /etc/cron.hourly ...monthly
benutzen, indem man dort einen Link auf sein auszuführendes Script hinterlegt.
Dieses wird dann entsprechend ausgeführt (stündlich, täglich oder monatlich).
|