Navigationsleiste   |    Direktzugriff   |    Software   |    Home  


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:


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



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 URL: http://www.tuxhausen.de/fetchmail.html