Fetchmail

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Einen Editor öffnen

Inhaltsverzeichnis
  1. Pakete installieren
  2. Konfigurieren
  3. Server starten
  4. Links

Fetchmail 🇬🇧 ist ein Programm, das E-Mails von einem Mailserver abholen kann und diese dann an einen weiteren Mailserver oder ein lokales Zustellprogramm weiterleitet. Fetchmail wird z.B. benötigt, um einen lokalen Mailserver zu erstellen, wo Fetchmail automatisch E-Mails von verschiedenen Accounts bei E-Mail-Anbietern einsammelt und diese dann im Mailserver bereit gestellt werden. Dieser Einsatzzweck wird hier beschrieben.

Pakete installieren

Fetchmail besteht aus nur einem Paket, das aus den Quellen installiert werden kann [1]

Paketliste zum Kopieren:

sudo apt-get install fetchmail 

Oder mit apturl installieren, Link: apt://fetchmail

Optional besteht noch die Möglichkeit eine simple GUI zu nutzen, die Konfigurationen für Fetchmail erstellen kann

Paketliste zum Kopieren:

sudo apt-get install fetchmailconf 

Oder mit apturl installieren, Link: apt://fetchmailconf

Konfigurieren

Fetchmail wird über die Konfigurationsdatei /etc/fetchmailrc eingerichtet. Diese wird nicht automatisch erstellt, so dass man sie mit Root-Rechten selber anlegen muss [3]. Im folgenden Beispiel gibt es zwei lokale Benutzer otto und paul, wobei otto der Betreuer des Mailservers sein soll. D.h. E-Mails, die z.B. nicht zugeordnet werden konnten, landen dann bei ihm.

## Allgemeine Einstellungen
set postmaster "otto"
set bouncemail
set no spambounce
set properties ""
set syslog
set daemon 300


## Die Mails von diesem Account werden otto zugestellt
poll imap.emailanbieter1.de with proto IMAP
       user 'USERNAME_AUF_EMAILSERVER' there with password 'GEHEIM1' is 'otto' here ssl

## Die Mails von diesem Account werden paul zugestellt und auf dem Server gelassen
poll pop3.emailanbieter2.de with proto POP3
       user 'USERNAME_AUF_EMAILSERVER' there with password 'GEHEIM2' is 'paul' here options keep ssl


## Die Mails nur alle 15 min abholen und auf dem Server lassen
poll pop3.web.de with proto POP3 interval 3
       user "user@web.de" there with password "xxxxxxxxxx" is "user@web.de" here keep ssl

Es gibt zahlreiche Optionen, die gesetzt werden können. Die üblichsten sind:

Option Funktion
ssl Benutzt SSL-Verschlüsselung, um die Mail abzuholen.
keep Belässt abgerufene E-Mails auf dem Server. Setzt man diese Option nicht, werden sie gelöscht.
fetchall Ruft alle E-Mails ab, auch alle die schon geholt worden sind.
limit <maxbytes> E-Mails, die größer sind, als die Angabe, werden nicht heruntergeladen
interval <n> Wenn das Skript abgearbeitet wird, wird nach dem n-ten mal dieser Eintrag gültig

Folgende sollten immer benutzt werden:

Option Funktion
poll <server> Der Mailserver, von dem die Post abgeholt wird.
proto imap|pop3 Mailprotokoll
user <name> Benutzerkennung beim Server. Bei Bedarf (Sonderzeichen) in Anführungsstriche setzen.
password <passwort> Passwort. Bei Bedarf (Sonderzeichen) in Anführungsstriche setzen.
is <name> Lokales Postfach, wo die Post einsortiert wird.

Die übrigen Wörter im obigen Beispiel sind Füllstoff zum besseren Verständnis und werden von Fetchmail ignoriert.

Das oben erwähnte Beispiel mit anderer Syntax (IMAP-Account):

## Allgemeine Einstellungen
set postmaster   "otto@meine_domain.de" ## ansonsten wie Beispiel oben
## Die Mails von diesem Account werden otto/ paul@meine_domain.de und anderen zugestellt, Mails werden auf dem Server belassen
poll             imap.emailserver.de
localdomains     meine_domain.de
protocol         IMAP
envelope         "X-Envelope-To:"
user             'USERNAME_auf_EMAILSERVER'
pass             'PASSWORT_auf_EMAILSERVER'
to               * here
keep

GUI

Es gibt eine sehr einfache GUI, um Fetchmail-Konfigurationen zu erstellen, diese kann wie oben beschrieben installiert und dann mit

fetchmailconf 

gestartet werden. Das Programm erstellt bei der Konfiguration eine Datei .fetchmailrc im Homeverzeichnis, die man nach der ersten Konfiguration direkt als Konfigurationsdatei für Fetchmail nutzen kann [2]:

sudo cp ~/.fetchmailrc /etc/fetchmailrc 

Hat man Fetchmail jedoch schon konfiguriert, so sollte man die erzeugte .fetchmailrc nicht blind kopieren, sondern die Änderungen in der /etc/fetchmailrc ergänzen.

Fehlermeldung:

$ fetchmailconf
/usr/bin/python: can't open file '/usr/lib/python2.6/site-packages/fetchmailconf.py': [Errno 2] No such file or directory

Lösung:

/usr/bin/fetchmailconf bearbeiten und die Zeile

exec /usr/bin/python /usr/lib/`pyversions -d`/site-packages/fetchmailconf.py "$@"

in

exec /usr/bin/python /usr/lib/`pyversions -d`/dist-packages/fetchmailconf.py "$@"

ändern.

Server starten

Möchte man, dass Fetchmail im Hintergrund als Dienst arbeitet, so muss man dieses noch in der Datei /etc/default/fetchmail

# Declare here if we want to start fetchmail. 'yes' or 'no'
START_DAEMON=yes

aktivieren [3]. Nachdem der Dienst korrekt konfiguriert wurde, kann man ihn aus einem Terminal heraus [2] über den Befehl

sudo /etc/init.d/fetchmail start 

starten. Mehr zu dem Thema Dienste findet man unter Dienste.