fetchmail: Mails vom Provider abholen

Supportdatenbank (fetchmail)

Frage:

Wie kann man Mails von einem Mailserver mit dem POP3-Protokoll abholen und auf dem lokalen Mailserver weiterverteilen?

Lösung:

Dies kann durch das Programm fetchmail erledigt werden (Paket pop, Serie n).
(ab SuSE Linux 6.3: Paket fetchml, Serie n; ab SuSE Linux 7.1: Paket fetchmail))

Der Vorteil von fetchmail gegenüber dem älteren popclient ist, daß das Passwort nicht in der Prozesstabelle erscheint, sondern nur zwischen dem Mail-Server und dem POP3-Client ausgetauscht wird, das Passwort wird in einer seperaten Datei abgespeichert.

Installation:

... es gibt natürlich viele Wege, dies hier ist nur ein Beispiel:

Der Mailserver sei mail.provider.de. Es gibt zwei Benutzer asterix und obelix, die auf dem lokalen Rechner eva und maria heissen. Als Passwörter werden (auf dem Mailserver) adam und josef benutzt.

Multidrop-Modus:

Manche Provider stellen Mails für verschiedene Mail-User in einem POP3-Account bereit. Mit der oben beschriebenen Lösung kann man nun alle Mails zwar abholen, aber Sie würden an einen lokalen User zugestellt.

Hierbei muß man unterscheiden, ob beim Provider die Zieladresse beibehalten wird, oder ob die Zieladresse umgesetzt wird (i.A. auf den Mailaccount).

Zieladresse bleibt erhalten:

Fetchmail kann in diesem Fall die Mails direkt an den MTA (sendmail, postfix) weitergeben. Sie müssen nur dafür sorgen, dass sich der MTA für die ankommenden Mails zuständig fühlt.
Dazu dienen die Optionen aka bzw. localdomains. aka ersetzt den Domainanteil durch localhost, während localdomains den Domainanteil beibehält, was bedeutet, dass der MTAdafür konfiguriert sein muss, da Mail sonst nicht lokal verteilt wird, sondern wieder abgeschickt wird und wieder im Postfach landet :-(. (Mail-Loop!) Die .fetchmailrc sieht dann z.B. so aus:
poll mail.provider.de protocol POP3 aka domain1 domain2  user asterix password adam is *
Die Mailzustellung via MTA funktioniert ganz gewöhnlich, insbesondere können Aliasnamen in der /etc/aliases definiert werden,
sowie eine virtusertable (Sendmail) angelegt werden, die hauptsächlich benötigt wird, wenn mehrere Benutzer Ihres Systems Mails empfangen, die den gleichen Mail-Benutzernamen verwenden, wobei sich nur der Domainanteil unterscheidet. Dann muß vorher mindestens eine Adresse davon auf einen anderen lokalen Benutzer umgeschrieben werden.

Beispiel:
In Ihrer Mailbox kommen folgende Mail-Adressen an:
name@prov1.de
name@prov2.de
So würden diese Mails alle in ein lokales Postfach name geworfen. (oder in ein Postfach, das in der aliases dafür steht)
Also muß eine Adresse vorher einem anderen Benutzer zugeordnet werden. Dazu verwenden Sie in der Datei /etc/mail/virtusertable (Sendmail) folgende Syntax:

name@prov2.de		lokalerBenutzername
Danach muß SuSEconfig ausgeführt werden.

Einschränkungen:

Wenn Sie Mails erhalten, die Ihre Mailadresse nicht enthalten (z.B. von Mailinglisten oder BCC-Header), sollten Sie noch aufpassen, daß diese nicht wieder mit einer Fehlermeldung ("user unknown") zurückgesandt werden. Das erreichen Sie mit der Einstellung (in .fetchmailrc):
set no bouncemail
Solche Mails können jedoch nicht mehr dem einzelnen User zugeordnet werden, da fetchmail bzw. sendmail nicht mehr feststellen kann, an wen die Mail ursprünglich einmal adressiert war. Deshalb gehen diese Mails dann an Postmaster.
Wenn Sie eine sichere Lösung suchen, die so etwas wie eine Multidrop- Mailbox zur Verfügung stellt, fragen Sie Ihren Provider nach einer statischen IP-Adresse und ETRN oder nach dem Mailversand per UUCP.

Falls Ihr Provider in obigem Fall jedoch einen zusätzlichen Header einfügt, in dem sich der letztliche Empfänger wiederfindet (z.B. Delivered-To: bei Postfix oder qmail, X-Originally-To oder ähnliches) , können Sie fetchmail so konfigurieren, dass der entsprechende Header verarbeitet wird.
Dazu benötigen Sie die Option: envelope

Ein entsprechender Eintrag in der .fetchmailrc kann also folgendermassen aussehen:
poll mail.provider.de envelope Delivered-To: protocol POP3 
   aka domain1 domain2  user asterix password adam is *
Bei qmail gilt noch folgende Besonderheit:
fetchmail muss hier mit der Kommandozeilen-Option --qvirtual qmailprefix- aufgerufen werden.

Zieladresse wird umgesetzt:

In diesem Fall hat fetchmail (unseres Wissens) keine Möglichkeit, den Adressaten zu bestimmen. Hier kann nur der Header der Mail untersucht werden.

Hier empfiehlt es sich, einen eigenen User (z.B. mailer) einzurichten, der über eine ~/.procmailrc die Mails weiterleitet.

Dazu befinden sich Beispiele in Offline-Mini-Howto, z.B. unter http://www.linuxdoc.org/HOWTO/mini/Offline-Mailing.html


Siehe auch:
o fetchmail kann Mails nicht abholen

Stichwörter: FETCHMAIL, POP3, SENDMAIL, MAIL, IMAP

Kategorien: Email

SDB-fetchmail, Copyright SuSE Linux AG, Nürnberg, Germany - Version: 02. Apr 1997
SuSE Linux AG - Zuletzt generiert: 12. Sep 2002 von sdb (sdb_gen 1.40.0)