Inhalt


Maildrop ist ein Teil des Courier MailServers, der auch einzeln verwendet werden kann. Maildrop ist ein sogenannter MDA.

Maildrop lässt sich deutlich besser konfigurieren als procmail - dazu wird im Homeverzeichnis eine Datei .mailfilter angelegt.

Homepage: http://www.flounder.net/~mrsam/maildrop/

Lizenz: GPL

1. Beispiel einer .mailfilter

Hier das Beispiel von procmail für maildrop:

DEFAULT=Maildir/
logfile $DEFAULT/maildrop.log 

xfilter "/usr/local/bin/spamassassin -P"

if (/^X-Spam-Status: Yes/)
 to $DEFAULT/.Spam/ 
 
if (/^Subject: Cron/)
 to $DEFAULT/.System/ 
 
if (/^From wiki@/)
 to $DEFAULT/.Wiki/ 
 
if (/^Subject:.*\[hylafax-users\]/)
 to $DEFAULT/.Hylafax/ 
 
if (/^Return-Path:.*syslinux/)
 to $DEFAULT/.Syslinux/ 

2. Tipps & Tricks

Die .mailfilter Datei darf nur vom Besitzer les- und schreibbar sein, maildrop verweigert sonst aus Sicherheitsgründen die Arbeit. Um die richtigen Rechte zu setzen, kann man folgenden Befehl ausführen: chmod 600 ~/.mailfilter

Wenn man Maildirs benutzt, muss man darauf achten, dass diese vorhanden sind, wenn man dorthin ausliefern will.

/!\ Wenn man Weiterleitungen an andere Adressen aktiv hat, sollte man darauf achten, Fehlermeldungen des Mailservers nicht weiterzuleiten, sonst kann es zu ärgerlichen Mail-Schleifen kommen.

if (/^Return-Path: <>/)
 to Maildir/

2.1. Mailinglisten

Für MailingListen empfiehlt sich folgende Pattern-Syntax (Beispiele), je nach MailingListenManager:

Courier mlm
  • /^List-Post: <mailto:vlug-public@vlugnet.org>/

GNU mailman
  • /^List-Id:.*<fsfe-de\.fsfeurope\.org>/

ezmlm
  • /^Mailing-List: contact getmail-help@discworld\.dnsalias\.org/

majordomo
  • /^Sender: owner-vlug@listserv\.uni-stuttgart\.de/

2.2. Weiterleitung

Beim Weiterleiten von Mails an einen anderen Server, kann es vorkommen, dass dieser die Mail nicht akzeptiert, da die Absenderadresse nicht mit dem sendenden Rechner übereinstimmt (besonders bei Mails von großen Hostern wie Yahoo oder AOL).

Als Lösung kommen mehrere Möglichkeiten in Frage:

2.3. Syntaxprüfung

echo | maildrop -V 1 2>/dev/null && echo "OK" || echo "Error $?"

Maildrop beendet sich mit Fehlercode 75 (temporärer Fehler), wenn die Berechtigungen nicht in Ordnung sind oder die Syntax fehlerhaft ist.

3. Weitere Beispiele

Hier sind weitere Beispiele für maildrop-Filterregeln (teilweise basierend auf der maildropex ManPage).

3.1. Muster

Siehe auch RegularExpressions.

komplette E-Mail-Adresse

alles von hotmail.com außer fritz

Zeichenkette (case-insensitive)

Zeichenkette (case-sensitive)

Zeichenkette im Body

3.2. Regeln

Speichere eine Kopie jeder Mail im Unterordner backup und behalte nur die 50 letzten.

OffeneFrage: Ich möchte gerne die Einträge in to und cc absuchen und in E-Mail-Adressen aufspalten. Normalerweise käme man mit getaddr(...) aus, doch diese Funktion liefert aus

"joe@domain.tld, "Alex Smith" <alex@domain.tld>, tom@domain.tld"

(siehe Manual) nur

"joe@domain.tld<NL>alex@domain.tld<NL>tom@domain.tld<NL>".

Ich möchte aber in einem weiteren Teil "Alex Smith" abtrennen können - wo diese Werte vorhanden sind. Meinen Namen kenne ich, der Spammer - so er einen Namen benutzt kennt ihn nicht und so würde ich - falls vorhanden und falsch - dies als Kriterium für Spam werten wollen. Mein erster Versuch bezieht sich auf die To-Zeile und lautet:

logfile logfile.txt

log "Tests: TO an CC"

if (/^To: (.*)$/)
{
  ADRS = tolower($MATCH1)
  log "To-Zeile: $ADRS"
  foreach /(.*)(,$)/
  {
    ADR = "$MATCH1"
    log "Weiterer Adresse: $ADR"
  }
}

Aber das funktioniert nicht. Hier bräuchte man ein foreach-Beispiel, dass zeigt, wie es geht.


KategorieAnleitung

Courier/maildrop (zuletzt geändert am 2007-12-23 22:47:25 durch localhost)