E-Mail Abruf · 6 min read · Sep 08, 2025
E-Mails Von Remote-Servern Mit fetchmail Auf Debian Abrufen

Fetchmail ist ein Programm zum Abrufen von E-Mails von Remote-Servern. Stellen Sie sich vor, Sie haben fünf E-Mail-Konten auf fünf verschiedenen Servern. Natürlich möchten Sie sich nicht mit jedem von ihnen verbinden, um Ihre E-Mails abzurufen. Hier kommt fetchmail ins Spiel. Wenn Sie ein Benutzerkonto auf einem Linux-Server haben, können Sie fetchmail verwenden, um E-Mails von Remote-Servern herunterzuladen und in nur einem Postfach (dem Ihres Linux-Benutzers) abzulegen, von wo aus Sie sie mit Ihrem E-Mail-Client (z. B. Thunderbird oder Outlook) abrufen können.
Oder stellen Sie sich vor, Sie haben ein E-Mail-Konto bei einem Anbieter, der keine Spam- und Virenfilterung durchführt. In diesem Fall könnten Sie fetchmail verwenden, um die E-Mails auf Ihren eigenen Server herunterzuladen und sie durch Spam- und Virenfilter (z. B. SpamAssassin und ClamAV) zu leiten, bevor Sie die E-Mails mit Ihrem E-Mail-Client herunterladen.
1 Vorbemerkung
Sie benötigen einen Linux-Server mit einem Systembenutzer, der E-Mails empfangen kann, was bedeutet, dass ein MTA wie Postfix oder Sendmail auf dem System installiert sein muss. Andernfalls funktioniert fetchmail nicht, da es versucht, die heruntergeladenen E-Mails an einen MTA (Postfix, Sendmail, …) weiterzuleiten, und der MTA liefert die E-Mails an das Postfach des Benutzers (Sie können das System so konfigurieren, dass es Spam- und Virenscans in diesem Prozess einbezieht, z. B. mit amavisd-new oder procmail, aber das wird in diesem Tutorial nicht behandelt).
Ich verwende in diesem Tutorial ein Debian-System, auf dem zwei Benutzer namens falko und till existieren.
2 fetchmail Installieren
Um fetchmail zu installieren, müssen wir nur Folgendes ausführen:
apt install fetchmail3 fetchmail Konfigurieren
Es gibt zwei Möglichkeiten, fetchmail zu konfigurieren. Wir können es als Daemon mit einer globalen Konfigurationsdatei ausführen oder wir können einen Cron-Job erstellen, um fetchmail zusammen mit benutzerspezifischen Konfigurationsdateien auszuführen. Ich werde hier beide Methoden beschreiben.
3.1 fetchmail Als Daemon Mit Einer Globalen Konfigurationsdatei Ausführen
Um fetchmail als Daemon auszuführen, müssen wir /etc/default/fetchmail bearbeiten und START_DAEMON auf yes setzen:
nano /etc/default/fetchmail# Diese Datei wird verwendet, um einige Variablen für fetchmail zu deklarieren
#
# Kommentieren Sie das Folgende aus, wenn Sie keine lokalisierten Protokollnachrichten wünschen
# export LC_ALL=C
# Deklarieren Sie hier, ob wir fetchmail starten möchten. 'yes' oder 'no'
START_DAEMON=yesAls Nächstes müssen wir die Konfigurationsdatei /etc/fetchmailrc erstellen, da der fetchmail-Daemon nicht startet, wenn diese Datei nicht existiert. In dieser Datei können wir angeben, wie sich der fetchmail-Daemon verhalten soll, sowie die Details, die fetchmail benötigt, um E-Mails von fremden E-Mail-Konten abzurufen.
Angenommen, falko hat zwei E-Mail-Konten, von denen wir E-Mails abrufen möchten:
- Erstes Konto: Server pop.someprovider.tld, Protokoll POP3, Benutzername [email protected] (ja, der Benutzername ist in diesem Fall eine E-Mail-Adresse), Passwort geheim.
- Zweites Konto: Server mail.otherprovider.tld, Protokoll POP3, Benutzername ftimme, Passwort sehrsicherespasswort.
till hat ein E-Mail-Konto:
- Server mailin.tillsprovider.tld, Protokoll POP3, Benutzername tbrehm, Passwort iwonttellyou.
Unsere Datei /etc/fetchmailrc könnte also so aussehen:
nano /etc/fetchmailrc# /etc/fetchmailrc für den systemweiten Daemon-Modus
# Diese Datei muss chmod 0600 haben, Besitzer fetchmail
set daemon 300 # Alle 5 Minuten abfragen
set syslog # Protokollierung über syslog
set postmaster root
set no bouncemail # Verlust bei 4xx-Fehlern vermeiden
# auf der anderen Seite werden 5xx-Fehler
# gefährlicher...
##########################################################################
# Hosts zum Abfragen
##########################################################################
# Standardwerte ===============================================================
# Setzen Sie antispam auf -1, da es viel sicherer ist, dies zusammen mit
# no bouncemail zu verwenden
defaults:
timeout 300
antispam -1
batchlimit 100
poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret" is falko here
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall
poll mailin.tillsprovider.tld protocol POP3 user "tbrehm" there with password "iwonttellyou" is till here keepAm Anfang der Datei haben wir einige globale Optionen wie set daemon 300 (was bedeutet, dass fetchmail alle 300 Sekunden E-Mails abrufen soll), die den Betrieb des Programms steuern. Die Bedeutungen der oben genannten Optionen sind wie folgt:
- set daemon: Setzen Sie ein Hintergrundabfrageintervall in Sekunden.
- set syslog: Fehlerprotokollierung über syslog durchführen.
- set postmaster: Geben Sie den Namen des letzten Empfängers von E-Mails an (Standard: Benutzer, der fetchmail ausführt, “postmaster”, wenn es vom Root-Benutzer ausgeführt wird).
- set no bouncemail: Leiten Sie Fehlermails an den lokalen Postmaster weiter (gemäß der oben genannten globalen Option “postmaster”).
Dann haben wir die Server- und Benutzeroptionen. Diese gehören zu den Zeilen, die mit poll beginnen; wenn es Optionen gibt, die für jede Poll-Zeile gleich sind, können wir sie auch vor den Poll-Zeilen in einem Abschnitt angeben, der mit defaults: beginnt (wie timeout, antispam und batchlimit in unserem Beispiel).
- timeout: Server-Inaktivitätszeitüberschreitung in Sekunden (Standard 300).
- antispam: Geben Sie an, welche SMTP-Rückgaben als Spam-Politikblöcke interpretiert werden.
- batchlimit: Geben Sie die maximale Anzahl von Nachrichten an, die an einen SMTP-Listener gesendet werden, bevor die Verbindung absichtlich abgebaut und neu aufgebaut wird (Standardwert ist 0, was keine Begrenzung bedeutet).
Die Poll-Zeilen sind selbsterklärend; wie Sie sehen, ruft fetchmail E-Mails von beiden externen E-Mail-Konten von falko ab und legt sie in ein Konto.
Sie werden feststellen, dass die Poll-Zeilen unterschiedliche Endungen haben (z. B. nofetchall (Standard), fetchall, keep, nokeep). Die Bedeutungen sind wie folgt:
- nofetchall: Nur neue Nachrichten abrufen (Standard). Wenn nichts anderes angegeben ist (z. B. fetchall, keep), bedeutet dies nofetchall.
- fetchall: Alle Nachrichten abrufen, unabhängig davon, ob sie gesehen wurden oder nicht.
- keep: Gesehene Nachrichten nicht vom Server löschen.
- nokeep: Gesehene Nachrichten vom Server löschen.
Um mehr über alle verfügbaren Konfigurationseinstellungen zu erfahren, werfen Sie einen Blick auf
man fetchmail/etc/fetchmailrc muss die Berechtigungen 600 haben und muss dem Benutzer fetchmail gehören, also führen wir Folgendes aus:
chmod 600 /etc/fetchmailrc
chown fetchmail /etc/fetchmailrcSchließlich können wir fetchmail starten:
/etc/init.d/fetchmail startFetchmail sollte jetzt E-Mails herunterladen und sie in die Postfächer von falko und till legen (unter Verwendung des MTA). Es wird dies alle festgelegten Daemon-Sekunden wiederholen.
3.2 Verwenden Sie Benutzerspezifische Konfigurationsdateien Und Führen Sie fetchmail Über Cron Aus
Anstatt eine globale Konfigurationsdatei wie im Kapitel 3.1 zu verwenden, können wir benutzerspezifische Konfigurationsdateien verwenden. Diese müssen den Namen .fetchmailrc haben und im Home-Verzeichnis des Benutzers liegen.
Wir möchten jetzt eine solche Datei für den Benutzer falko erstellen. Stellen Sie sicher, dass Sie als falko angemeldet sind, nicht als root! Dann machen wir Folgendes:
cd ~/
vi .fetchmailrcset postmaster falko
set bouncemail
poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret"
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" fetchallDie Datei sieht der Datei /etc/fetchmailrc aus Kapitel 3.1 sehr ähnlich, jedoch werden Sie feststellen, dass ich den Satz is falko here nicht mehr verwende (da .fetchmailrc im Home-Verzeichnis von falko ist, weiß fetchmail, dass die E-Mails an falko geliefert werden sollen). Natürlich können Sie immer noch is falko here verwenden, sodass die Datei auch so aussehen könnte:
set postmaster falko
set bouncemail
poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret" is falko here
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchallUm mehr über alle verfügbaren Konfigurationseinstellungen zu erfahren, werfen Sie einen Blick auf
man fetchmail.fetchmailrc muss die Berechtigungen 600 haben, damit nur falko darauf lesen/schreiben kann:
chmod 600 ~/.fetchmailrcDas war’s. Jetzt kann falko den Abrufprozess starten, indem er
fetchmailoder
fetchmail -vausführt, was zeigt, was vor sich geht.
Natürlich möchte falko den Abruf nicht manuell alle paar Minuten starten, also erstellen wir einen Cron-Job für ihn. Immer noch als Benutzer falko führen wir aus:
crontab -eund erstellen einen Cron-Job wie diesen (der fetchmail alle fünf Minuten starten würde):
*/5 * * * * /usr/bin/fetchmail &> /dev/null4 Links
- Debian: http://www.debian.org
- Fetchmail: http://fetchmail.berlios.de
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.