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