E-Mail-Verkehr steuern [3]

Fetchmail – Mails per POP3 oder IMAP abholen

Fetchmail holt Mails von entfernten Mailservern ab und übergibt diese an den lokalen MTA (bsp. Postfix) bzw. MDA (bsp. procmail). Die Konfiguration erfolgt entweder über die globale .fetchmailrc oder die benutzerspezifische ~/.fetchmailrc.

Syntax:

poll SERVERNAME protocol XXX username XXX password XXX is LOCAL_USER

poll SERVERNAME proto XXX user XXX pass XXX is LOCAL_USER


# .fetchmailrc

poll mail.example.de proto pop3 user test pass "geheim“ is tux

# Mehrere Konten mit einem Account abfragen

defaults proto pop3 user test

poll srv001.example.de pass "geheim“

poll srv002.example.de pass "ganzgeheim“


Weitere Optionen in fetchmailrc

protocol | proto PROTOKOLL = auto, pop2, pop3, sdps, imap, apop, kpop

port NUMMER = Port definieren

timeout SEK = Zeit in Sekunden, die gewartet wird, bis Remote-Server reagiert

keep = Mails nicht vom Server löschen

flush = alte bereits gelesene Mails vom Server löschen

fetchall = alte und neue Mails abholen

no keep = gelesene Nachrichten vom Server löschen (Default)

no fetchall = nur neue Mails vom Server holen (Default)


set daemon SEK = fetchmail startet als Dämon und schaut alle SEK nach neuen Mails.

set postmaster NAME = Dieser lokale User erhält Fehlermeldungen

set logfile PFAD = Log-Datei definieren

set syslog = Mailabruf wird über Log-Dämon protokolliert.


Aufruf-Optionen für fetchmail

Ruft man fetchmail auf, sucht es standardmäßig nach einer Konfig-Datei. Man kann fetchmail aber auch mit Optionen starten:


fetchmail -c, --check = Postfach prüfen, ohne Mails zu holen

fetchmail -d, --daemon = fetchmail als Daemon starten und regelmäig in Sek. Mails abholen (Bsp.: -d 60)

fetchmail -q, --quit = Beendet den Hintergrundjob als Daemon

fetchmail -a, --all = Alte und Neue Mails vom Server holen

fetchmail -K, --nokeep = Neue Mails vom Server holen und gleichzeitig auf dem Server löschen

fetchmail -k, --keep = Nach dem Holen bleibt eine Kopie der Mail auf dem Server

fetchmail -F, --flush = Alte Mails auf dem Server löschen

fetchmail -p, --protocol = Protokoll angeben

fetchmail -P, --port = Port angeben

fetchmail -u, --user = Benutzer-Login

fetchmail -t, --timeout = Timeout definieren.

fetchmail -v, --verbose = gesprächig

procmail – Ein Mail Delivery Agent (MDA)

Procmail sortiert eingehende Mails in die entsprechenden Postfächer. Neben der globalen Konfigurationsdatei /etc/procmailrc kann jeder User eine eigene ~/.procmailrc anlegen. Um Mails an procmail zu übergeben, muss man einen Eintrag in der Datei ~./forward festlegen:


# .forward

"|/usr/bin/procmail“


Beispiel procmailrc

VERBOSE=yes

LOGABSTRACT=all

MAILDIR=$HOME/Mail //

PROCMAILDIR=$HOME/.Procmail

LOGFILE=$PROCMAILDIR/log

INCLUDERC=/etc/weitere_konfig

### REGELN

:0 // Leitet Regel ein

* // Muster

.incoming // Aktion


Regeln für procmail:

:0 H = Filterregel wird auf Mail-Header angewandt

:0 c = procmail verwendet nur eine Kopie der Mail und führt Aktion durch

:0 B = Mail-Body

:0 D = Unterscheidung zwischen Groß- und Kleinschreibung

:0 A = Wird nur ausgeführt, wenn vorherige Regel zutraf

:0 a = Wie A, nur muss vorherige Regel erfolgreich ausgeführt worden sein

:0 E = Wird nur ausgeführt, wenn vorherige Regel nicht ausgeführt wurde (Else-If)

:0 e = Wird nur ausgeführt, wenn vorherige Regel fehlerhaft beendet wurde.


Wichtige Ausdrücke in procmailrc

^TO_ = Trifft auf alle Zeilen zu, die mit To, Cc, Bcc oder Resent-To beginnen

^FROM_DEAMON = Trifft auf Zeilen zu, die von Mail-Dämons oder -Listen kommen

^FROM_MAILER = Wie FROM_DAEMON, aber ohne Mail-Listen


Wichtige Aktionen in procmailrc

mail-ordner = Verschiebt Mail in das Verzeichnis

! tux@server.com = Mail an ein oder mehrere E-Mail-Adressen weiterleiten

| programm = Mail an Programm übergeben

{...} = Mehrere Aktionen ausführen.


Beispiel:

:0 // Regel 1

* ^Subject.*Newsletter // Mails mit Subjebt Newsletter

$MAILDIR/tux // werden in die Mailbox von Tux weitergeleitet


:0 // Regel 2

* ^From.*pc-erfahrung // Mails von PC-Erfahrung

{

:0 c // Kopie der Mail

$MAILDIR/root // wird an Root geschickt


:0 // Die Mail an sich

! tux@server.com // an tux@server.com gesendet

}


:0

* // Default-Regel

$MAILDIR/Inbox // Mails in Inbox der User speichern