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 fetchmail

3 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=yes

Als 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 keep

Am 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/fetchmailrc

Schließlich können wir fetchmail starten:

/etc/init.d/fetchmail start

Fetchmail 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 .fetchmailrc
set 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" fetchall

Die 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 fetchall

Um 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 ~/.fetchmailrc

Das war’s. Jetzt kann falko den Abrufprozess starten, indem er

fetchmail

oder

fetchmail -v

ausfü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 -e

und erstellen einen Cron-Job wie diesen (der fetchmail alle fünf Minuten starten würde):

*/5 * * * * /usr/bin/fetchmail &> /dev/null

4 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.