Zur Aktivierung des lokalen Mailfilters mit ../maildrop muss man die Datei /etc/couriermaildropfilter anlegen:

echo /usr/bin/maildrop > /etc/courier/maildropfilter

Dann kann jeder User im Verzeichnis ~/.mailfilters Dateien mit Filterregeln erstellen.

Beispiele

rcptfilter-default

if ($MAILFILTER =~ /^rcptfilter-pl2002/)
{
echo "This address is outdated. Remove the suffix if you want to contact me."
EXITCODE=97
exit
}

Funktion: jede Mail an "username-pl2002..." wird abgewiesen.


rcptfilter

import SENDER
if ($SENDER eq user@example.com)
{
echo "You are not allowed to send me mails."
EXITCODE=99
exit
}

Funktion: jede Mail an username@host, die von user@example.com versendet wird, wird mittels smtpfilter gefiltert.


rcptfilter und rcptfilter-default

EXITCODE=99
exit

Funktion: alle Mails werden über smtpfilter gefiltert


smtpfilter

if (/^Content-Type: text/html/)
{
  echo "I don't accept HTML Mails."
  EXITCODE=97
  exit
}

Funktion: Mail, die nur HTML enthält, wird nicht angenommen.


/!\ Man sollte in seine rcptfilter* Regeln einbauen, die Mails von Mailinglisten immer annehmen, sonst kann es passieren, dass man automatisch aus einer Liste ausgetragen wird.

Eine Regel könnte z.B. so aussehen:

if (($FROM =~ /@lists.sourceforge.net$/) && ($TCPREMOTEHOST =~ /sourceforge.net$/))
{
EXITCODE=0
exit
}


SpamAssassins Bayes-Filter anlernen bzw. korrigieren

~/.mailfilters/rcptfilter-salearn-default

EXITCODE=99
exit

~/.mailfilters/smtpfilter-salearn-default

if (/^Received: .*by $HOSTNAME/:1,2 > 1)
{
  echo "Are you trying to fool me?"
  EXITCODE=97 # we dont receive it more than once
  exit
}
if (/^Received: .*\(AUTH:.*by $HOSTNAME/)
{
  EXITCODE=0 # received with authentication
  exit
}
echo "You are not authorized to send mails to this address."
EXITCODE=97
exit

~/.mailfilter-salearn

import EXT
WHAT=''
logfile "salearn.log"

if ($EXT =~ /^salearn-spam$/)
  WHAT="spam"

if ($EXT =~ /^salearn-ham$/)
  WHAT="ham"

if ($WHAT == '')
{
  EXITCODE=0
  exit
}

log "$FROM reports $WHAT"

MIME=`reformime -i -s 1.2`
if (($EXITCODE == 0) || ($MIME =~ /content-type: messsage\/rfc822/))
{
  xfilter "reformime -s 1.2 -e"
  SALEARN=`salearn --$WHAT --single`
  log "sa-learn: $SALEARN"
}
EXITCODE=0 # no error message please
exit

~/.courier-salearn-default

|maildrop -f $SENDER .mailfilter-salearn


siehe auch localmailfilter maildropfilter dot-courier

Courier/LocalMailFilter (zuletzt geändert am 2007-12-23 22:48:42 durch localhost)