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.
- rcptfilter: wird aufgerufen um die Adresse zu überprüfen, ähnlich wie bei den .courier-Dateien, kann man hier auch die Unteradressen anhängen, z.B. rcptfilter-wiki oder rcptfilter-default (Der Aufruf erfolgt, sobald der versendende Server den "rcpt to" Befehl sendet)
- smtpfilter: wird aufgerufen, wenn rcptfilter mit EXITCODE=99 beendet wurde und nachdem der Mailtext empfangen wurde (aber noch nicht bestätigt), Unteradressen sind natürlich auch möglich
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
