Wer sein eigenen Mailserver betreibt und seine Mails bequem per IMAP inklusive Push verwaltet, wird bald mit dem Gedanken spielen alle weiteren Email-Adressen auf einem Konto zusammenzufassen. Das hat insbesondere Vorteile, wenn die weiteren Adressen auf POP3 basieren (z.B. Web.de) und somit ein überlaufenden Postfach riskiert wird oder Mails nicht in allen Anwendungen *hustgenerationonline* simultan verfügbar sind.
Für mich war bei dieser Überlegung Faulheit und der Push-Service meines eigenen Mailservers ausschlaggebend.

Was tut fetchmail?

Die Antwort auf die Frage nach einem Sammeldienst ist Fetchmail. Es stellt einen Abrufservice für externe Postfächer zur Verfügung – wie auch der Name schon schließen lässt. Das Prinzip ist, wie folgt: Als Service auf dem Server ruft Fetchmail ein externen Postfach ab und leitet die Mails an den lokalen Mailserver weiter (in diesem Fall QMail). Ganz einfach, ne?

Einrichtung

Nicht ganz so einfach, aber noch relativ simpel. Es gilt eine funktionierende Konfigurationsdatei für Fetchmail zu erstellen, zu testen und für den Service abzulegen.
Das Testen erfolgt zunächst über den direkten Aufruf von fetchmail:

user@host:~$ fetchmail -v -c --keep -p POP3 -a pop3.web.de -u hans

Als Beispiel sei hier der Benutzer hans auf web.de verwendet. Die Option --keep belässt die Mails zunächst auf dem Server – unbedingt verwenden für Testbetrieb! Wobei in diesem Fall mittels -c lediglich ein Check durchgeführt wird und erstmal keine Emails gelöscht werden.
Sofern die Einstellungen korrekt sind und man Zugriff auf das Postfach hat, kann nun die fetchmailrc für den Daemon Mode erstellt werden.

fetchmailrc

Der Aufbau der fetchmailrc ist etwas hakelig, zumindest hatte ich Probleme mit whitespace.
Eine Konfiguration analog zu obigen sieht wie folgt aus.

## General
set postmaster "admin@host.com"
set no bouncemail
set no spambounce
set properties ""
set no syslog
set logfile "/var/log/fetchmail.log"
set daemon 960
## Web.de
poll pop3.web.de proto POP3 envelope "Delivered-To:" qvirtual "mbox-userstr-"
    username hans there with password ******** is hans@host.com here
        options keep ssl sslfingerprint '41:CD:84:8D:7F:75:17:59:46:B6:81:D9:73:A7:01:26'
                sslcertck sslcertpath /etc/ssl/certs/
forcecr

Ok, mal der Reihe nach. In den allgemeinen Optionen wird ein postmaster gesetzt, also der Account an den nicht einsortierbare Emails gesendet werden. Zudem werden mit no bouncemail Fehlermeldungen an den Postmaster, nicht an den Absender, geschickt. Wird die Option no spambounce aktiviert, erfolgt keine Benachrichtigung an den Absender von Spam, dass seine Mails nicht akzeptiert werden.
Die Log-Einstellungen sind so definiert, dass der Log nicht im Syslog landet, sondern unter /var/log/fetchmail.log.
Über set daemon 960 wird die Wartezeit des Daemons auf 960s gesetzt, also 16min. Der Wert ist so gewählt, da Web.de nur alle 15min ein Abrufen der Emails erlaubt.

Zu den spezifischen Optionen für das externe Postfach: Im poll wird das POP3-Postfach definiert und nach envelope die Optionen für die Weiterleitung deklariert. Da in diesem Fall QMail als lokaler Mailserver agiert, wird der Header durch diese Option umgebaut, um die Mails korrekt weiter zu adressieren und Schleifen zu verhindern, siehe auch Fetchmail FAQ. Desweiteren wird die Zeile forcecr hinzugefügt, um Leerzeilen am Ende des Headers zu vermeiden.
In der zweiten Zeile der Postfachoption wird der Benutzer „hier“ und „dort“ definiert, also auf Web.de und der lokalen Domain.
Die weiteren Optionen dienen der Sicherheit und müssen von Zeit zu Zeit aktualisiert werden. Über den SSL Fingerprint wird geprüft, dass auch der richtige Server kontaktiert wird. Dieser Fingerprint wird jedoch in regelmäßigen Abständen vom Server geändert und muss dann in der fetchmailrc angepasst werden.

Anstatt das lokale Postfach direkt zu benennen per hans@host.com, kann die lokale Domain im poll deklariert werden: localdomains host.com.

Die fetchmailrc ist unter /etc/fetchmailrc abzuspeichern, damit sie für den systemweiten Daemon verfügbar ist. Desweiteren muss sie vor neugierigen Usern geschützt werden, denn die Passwörter müssen in Klartext hinterlegt werden.

user@host:~$ chmod 600 /etc/fetchmailrc

Ohne die korrekten Rechte verweigert auch der Daemon den Start.

Unter Umständen ist noch der Logfile zu initialisieren.

user@host:~$ touch /var/log/fetchmail.log

Starten des Service

Der Fetchmail Daemon wird als Service über die Runlevel gestartet. Zunächst kann er auch über

user@host:~$ service fetchmail start

gestartet werden. Sollte alles ordnungsgemäß funzen erscheint folgendes im Log.

fetchmail: starting fetchmail 6.3.9-rc2 daemon
fetchmail: 3 messages (3 seen) for hans at pop3.web.de (13245 octets).
fetchmail: skipping message hans@pop3.web.de:1 not flushed
[...]
fetchmail: sleeping at Do 16 Jun 2011 17:49:08 CEST for 960 seconds

Die Mails werden nun auf Web.de abgerufen und in die lokale Mailstruktur von Hans abgelegt. Wie sie automatisch in einen speziellen Unterordner (z.B. „web.de“) einsortiert werden können, folgt später in einem Artikel zu procmail.
Und sollte fetchmail nun im Testbetrieb tun, wie ihm geheißen, kann die keep-Option aus der Konfiguration entfernt und somit die Mails aus dem POP-Postfach gelöscht werden.

Quellen und weitere Informationen: Fetchmail FAQ, Configuring your incoming email client for Gmail: fetchmail, No Trust Center, Fetchmail man, ubuntuusers.de
Getagged mit
 

Kommentare sind geschlossen