Emails abholen mit fetchmail

Email-Server: Emails abholen mit fetchmail

Im ersten Teil des Email-Servers [1] erfährst wie du die Emails aller Benutzer abholst und verteilst.

Dazu dient uns fetchmail.

fetchmail

fetchmail [2]
ist ein Linux Konsolenprogramm, es dient zum Abholen der Emails von einem Emailserver.
Es holt die Emails ab und übergibt sie dem lokalen Emailsystem. fetchmail
wird meistens genutzt um mehrere Emailserver hintereinander abzufragen, die empfangenen
Emails werden dann an einen Emailverteiler (zum Beispiel: procmail) oder
direkt in die Inbox der Benutzer weitergeleitet.
fetchmail kann die Emails von folgenden Servern abholen: POP2, POP3, IMAP4, MS Exchange
Server (NTLM) , Kerberos POP,…

Man kann fetchmail direkt mit allen Parametern aufrufen, aber normalerweise
legt man im home
Verzeichnis die Datei .fetchmailrc an und schreibt dort alle Parameter rein.


Installation von fetchmail

Am einfachsten ist es fetchmail mit den Hilfsmittel deiner Distribution
zu installieren (SuSE: Yast; Mandrake: Software-Manager; Debian: apt-get).
Solltest du es dort nicht finden oder eine zu alte Version haben, kannst
du es aus den Quellen installieren.

Sollte dein Provider dir anbieten die Emails sicher via SSL abzuholen, lies bitte diesen Tuxhausen-Artikel: fetchmail und SSL [3], dort steht auch drin wie du fetchmail aus den Quellen kompilierst.


fetchmail Konfigurationsdatei

fetchmail erwartet seine Konfigurationsdatei im Homeverzeichnis des Benutzers
unter dem Namen “.fetchmailrc” .

Die Emails bitte NICHT als root abholen, am besten einen extra Benutzer dafür erstellen !!

Der Aufbau der Datei ist sehr einfach:

In dem folgendem Beispiel werden die Emails von Angela und Bert bei Puretec
abgeholt.

Die Emails von Angela und Bert werden in die INBOX (meist /var/spool/mail/Benutzername)
abgelegt.

Als kleinen Zusatz zu den Fähigkeiten fetchmails werden noch die privaten Emails von markus
(m.u@gmx.net) abgeholt und diese mit procmail sortiert.

Auf procmail gehe ich zunächst nicht weiter ein, vielleicht kommt mal ein
Artikel (bei Interesse bitte mailden):

#.fetchmailrc      

    #Server Puretec
    server pop.puretec.de
    proto pop3

    #Benutzer und Password
    user hdv45
    pass geheim

    #Optionen
    to angela

    #Weiterer User auf Server Puretec 
    #Benutzer und Password
    user hdv46
    pass geheim2

    #Optionen
    to bert

   #----------------
   #Server GMX
    server pop.gmx.de
    proto pop3

    #Benutzer und Password
    user m.u@gmx.net
    pass geheim

    #Optionen
    keep
    mda /usr/bin/procmail

Die einzelnen Zeilen haben die folgende Bedeutung:

server Der Name des Servers von dem du die Emails abholst
proto Das Protokoll des Servers. Meist wird POP3 benutzt
user Der Benutzername von dem du die Emails abholen willst
pass Das Passwort des Benutzers
to Emails direkt in die INBOX vom lokalen Benutzer gespeichert
keep Zum Testen kann keep verwendet werden, dann werden die Emails auf dem Server nicht gelöscht
mda    Emails werden an das Programm (hier /usr/bin/procmail )weitergeleitet

(procmail ist ein Mailfilter-Programm)

Die Optionen to und mda möchte ich noch etwas erläutern:

Normalerweise hat man bei seinem Provider einen anderen Benutzernamen als
auf dem privaten Arbeitsplatz-Rechner. Deswegen muß man fetchmail sagen
was er mit der Email machen soll. Sagt du das nicht, landen alle Emails
in der INBOX des Benutzers der die Emails abholt. Wenn du die Emails für
mehrere Leute abholst, geht das natürlich nicht.

Mit der Option to werden die Emails dem angegebenen Benutzer zugeordnet und in /var/spool/mail/ abgelegt.

Im ersten Teil des Beispiels werden also alle Emails des Users hdv45 dem
lokalen Benutzer angela zugeteilt. Die Emails landen dann in /var/spool/mail/angela.

Mit der Option mda können die Emails an ein anderes Programm weitergegeben werden. Sinnvoll
wäre der Filter procmail oder ein Virenscanner-Programm (das aber nach
dem Scan die Email weiterleitet !). Auf diese Optionen möchte ich hier
nicht weiter eingehen.

Noch ein Tipp:

Holst du die Emails verschiedener User von dem selben Server ab, kannst du server und proto ab dem zweiten User-Eintrag sparen. Die Einstellung gilt für alle folgenden
user; bis zum nächsten server.

Im obigen Beispiel trifft das auf hdv46 (Bert) zu.


Abholen der Emails

So, nachdem du deine .fetchmailrc geschrieben hast, probieren wir Sie aus.
Am Besten schreibst du erstmal ein keep als Option, dann kann nichts mit deinen nichtabgeholten Emails passieren.

Nun logst du dich als der Benutzer ein, bei dem die .fetchmailrc im Homeverzeichnis
liegt:

[tux ] $ fetchmail              #Emails
abholen

1 message for hdv45 at pop.puretec.de (1244 octets).

reading message 1 of 1 (1244 octets) . flushed

fetchmail: No mail for hdv46 at pop.puretec.de

fetchmail: No mail for m.u@gmx.net at pop.gmx.de

Du siehst nun folgendes:

  • Angela (user hdv45) hat eine Email mit der Größe von 1244 octets (1000
    octets ~ 1KB) erhalten
  • Bert (user hdv46) und Markus privat (user m.u@gmx.net) haben leider keine
    neue Emails :-(

 

Das wars, die Emails wurden angeholt und einsortiert.

Denk daran die Option keep wieder aus der .fetchmailrc zu entfernen, sonst wurden sich einige Benutzer
warum die Email immer wieder ankommt.

Daemon-Modus

Eine Sache solltest du aber noch ändern:

fetchmail sollte als Daemon laufen und selbstständig periodisch die Emails
abholen, sonst müßtet du immer selber fetchmail eintippen.

Das ist auch aber auch nicht schwer:

Für den Daemon-Modus schreibt du folgendes:

[tux] $ fetchmail –daemon 500            #fetchmail
holt die Emails automatisch alle 500 sec ab
[tux] $ fetchmail –quit
#Beendet
den im Daemon-Modus laufenden fetchmail

Mit dem Parameter –daemon 500 startest du den Daemon-Betrieb, und zwar
holt fetchmail dann alle 500 Sekunden die Emails ab.

Und mit dem Parameter –quit beendest du den im Daemon-Modus laufenden
fetchmail, sehr schön für Skripte.

Damit das Ganze auch noch nach dem nächsten Booten funktioniert solltest
du dir ein Init-Skript schreiben, oder jeden Morgen um 6h fetchmail per
cron-Job starten und abends wieder beenden.

 

Auf gehts zum nächsten Teil des Email-Servers: Emails vom Server abholen mit IMAP [4]


Tipps zum Betrieb von fetchmail

  • Startest du fetchmail mit der Option -v sieht du eine erweiterte Ausgabe
    (verbose) . Je mehr -v ( -vv -vvv) du einsetzt desto mehr siehst du. Diese
    Option ist gut zur Fehlersuche geeignet

Quellen und weitere Dokumentation

Eigentlich nur die man-Pages und die zu fetchmail Dokumentation.

Auf der fetchmail-Homepage
[1] gibt es eine FAQ und die man-Pages als HTML


Im Text genannte Links

[1] Tuxhausen – Email-Server: http://www.tuxhausen.de/email-server.html
[2] Fetchmail Homepage: http://fetchmail.berlios.de/
[3] Tuxhausen – fetchmail und SSL : http://www.tuxhausen.de/software_fetchmail_ssl.html
[4] Tuxhausen – Emails vom Server abholen mit IMAP: http://www.tuxhausen.de/imapd.html

 


Erstellt am: 2002-04-13 Autor: Markus Ungermann
Last Update: 2006-08-14