Einführung in die Konfiguration von Fetchmail

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

Achtung: Diese Seite entspricht nicht dem aktuellen Stand der Dinge und sollte bei Gelegenheit überarbeitet werden!

Näheres auf der Diskussionsseite.


Einleitung

Da das Thema immer wieder ins Gespräch kommt, möchte ich heute mal erklären, wie man Fetchmail benutzt, um Mails beim Provider abzuholen. Basis für die Installation ist ein Rechner mit RedHat Linux 6.2, der per Router ans Internet angeschlossen ist. Um den Internetzugang soll es hier also nicht gehen, der wird vorausgesetzt. Der POP3-Account ist bei GMX eingerichtet, als SMTP-Relay wird der Server des PPP-Providers verwendet. In diesem beschriebenen Fall ist das das freundliche Relay von T-Online, das T-Online-Nutzer unter [1] freischalten können.


Vorbereitungen

Es muß sichergestellt sein, daß ein POP3-Daemon (z.B. qpopper) installiert ist. Dieser muß in /etc/inetd.conf aktiviert sein. Es darf ihm kein "#" als Kommentar vorangestellt sein. Das am Ende der Konfigurationszeile eingetragene Programm, z.B. "/usr/sbin/popper", muß auf dem System vorhanden sein. Nach Änderungen an /etc/inetd.conf können diese mit "killall -HUP inetd" übernommen werden.

Bei Download-CDs z.B. von RedHat oder Mandrake fehlt gerne der POP-Daemon als Paket. In solchen Fällen muß z.b. der QPopper von Qualcomm ([2]) heruntergeladen und installiert werden.

Fetchmail muß auf dem System vorhanden sein. Um das zu überprüfen, kann "which fetchmail" ausgeführt werden. Wird ein voller Pfad zu fetchmail angezeigt, ist es vorhanden.


Zum Versenden von Mails brauchen wir "sendmail" oder einen anderen MTA (Mail Transport Agent).

Für diesen speziellen Anwendungsfall können wir unsere Infos also schon zusammentragen:

POP3-Username: 6294270
POP3-Kennwort: pug*test

POP3-Server: pop.gmx.de
SMTP-Server: smtprelay.t-online.de


Das Abholen von Mails per POP3

Fangen wir also erst einmal mit dem Empfang von Mails an.

Zunächst muß dazu bestimmt werden, welcher User auf dem lokalen System die eingehenden Mails bekommen soll. In unserem Fall ist das sinnigerweise der User "martin", an den wir die abgeholten Mails weiterleiten. Ihm gehören auch alle hier gezeigten Konfigurationsdateien und alle Kommandos werden von ihm ausgeführt. "root" hat jetzt ersteinmal nichts mehr zu melden.

Dieser User legt nun eine Konfigurationsdatei ~/.fetchmailrc an, in der die Abholung der POP3-Mails konfiguriert wird. Dafür reicht eine einzige Zeile:

poll pop.gmx.de protocol pop3 user "6294270" password "pug*test" is martin

Jetzt kann er einfach mal fetchmail ausführen:

$ fetchmail
File /home/martin/.fetchmailrc must have no more than -rwx--x--- (0710)
permissions.                               

Es funktioniert nicht, weil die Konfigurationsdatei offenbar die falschen Permissions hat. Die Konfigurationsdatei darf nur für ihren Eigentümer lesbar sein, denn sie enthält ja schließlich sein POP3-Kennwort für einen anderen Server. Fetchmail weigert sich einfach, so zu arbeiten. Also passen wir die Permissions entsprechend an und starten Fetchmail erneut:

$ chmod 600 ~/.fetchmailrc
$ fetchmail
fetchmail: Unknown command: "last".
1 message for 6294270 at pop.gmx.de (4322 octets).
reading message 1 of 1 (4322 octets) .... flushed

Die Mail sollte jetzt bei dem lokalen User unseres Systems gelandet sein, der in ~/.fetchmailrc eingetragen ist.

$ mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/martin": 1 message 1 new
>N  1 gmx@gmx.net           Sun Jul 16 09:04 114/4528  "Herzlich willkommen bei GMX!"
& 

Da ist sie! Es hat geklappt! Nun will natürlich nicht jeder seine Mails auf der Konsole lesen, daher startet unser Beispieluser auf einem Rechner im lokalen Netz seinen Netscape und konfiguriert einen neuen Server für eingehende Mails wie folgt:

POP3-Server: Rechnername oder IP-Adresse des Rechners, auf dem der lokale User angelegt ist.
Username: Login-Name auf dem lokalen Rechner (hier: "martin")
Kennwort: Kennwort auf dem lokalen Rechner (hier: martins Kennwort)
Mail-Adresse: username@provider.de (hier: "pug-testuser@gmx.de")

Das Empfangen und Lesen von Mails sollte jetzt funktionieren.

Das war der einfache Teil. ;-)


Das Senden von Mails

Für das Senden von Mails verwenden wir Sendmail. Andere MTAs werden analog dazu konfiguriert. Die Art und Weise, in der die Distributionen Sendmail vorkonfigurieren, ist immer in Bewegung, daher bleiben wir bei unserer Beispielinstallation von RedHat 6.2.

Hier müssen wir als "root" arbeiten.

Zunächst muß in /etc/sendmail.cf der "Relay-Host" eingetragen werden.

Aus den folgenden Zeilen:

# "Smart" relay host (may be null)
DS

Wird dabei:

# "Smart" relay host (may be null)
DSsmtprelay.t-online.de

Zusätzlich müssen wir "unserem" Sendmail noch sagen, daß er Mails aus dem lokalen Netzwerk versenden soll. Dies wird in der Datei /etc/mail/access konfiguriert, an die wir einen Eintrag für unser lokales Netz (im Beispiel 192.168.1.0) anhängen:


# cd /etc/mail
# echo "192.168.1 RELAY" >> access

Danach muß aus dieser Konfigurationsdatei eine für Sendmail verständliche sogenannte "Hashtabelle" erzeugt werden:

# makemap hash access < access

Wenn das getan ist, können wir Sendmail sagen, daß er seine Konfiguration einlesen soll, und wir können per Netscape aus unserem Netz mailen:

# killall -HUP sendmail

Bevor ihr nun loslegt, und euch auf dieses Setup verlaßt, solltet ihr ein- und ausgehend in allen Konstellationen testen, ob es auch wirklich funktioniert.

Wenn ihr mit einem lokal installierten Mailclient wie mutt oder pine arbeitet, ist noch etwas zusätzliche Konfiguration innerhalb des Client erforderlich, um die lokalen Rechner- und Usernamen anzupassen. Das wird dann aber hoffentlich irgendwann Thema für einen separaten Artikel sein, der in Konsolen-Clients allgemein einführt.