potlood

Procmail voor gewone mensen

Met procmail kun je je mail zó filteren, dat je spam niet eens hoeft binnen te halen, op het moment dat je je mail checkt. Dat scheelt je ergernis, wachttijd, telefoontikken, noem maar op: Met procmail filtert de mailserver je mail voor je, al vóór je thuis 'check mail' klikt.

Of je procmail kunt gebruiken, hangt af van je provider. Biedt die het niet, dan kun je het niet gebruiken. Bijvoorbeeld XS4ALL- en DDS-accounts bieden procmail.

XS4ALL kent ook een uitgebreid spamfilter, dat combineer ik met procmail. Van het XS4ALL-spamfilter gebruik ik de headermarkering. Zodra een email de extra spam-header van XS4ALL bevat, verdwijnt hij via m'n procmailrc vóór mijn Eudora hem kan ophalen in de 'prullenbak.'

Wat moet ik precies doen?

Om procmail te activeren heb je 2 bestanden nodig. Beide bestanden plaats je in de home- of basis-directory van je internet-account. Raadpleeg daartoe de hulppagina's van je provider: bij XS4ALL is dit de homedirectory waar ook je WWW-directory in staat, plaats de procmailbestanden níét de WWW-directory zèlf. Het eerste bestand moet je .forward noemen, en moet slechts de tekst |procmail bevatten.

Het tweede tekstbestand, dat je ook opslaat als text met zgn. Unix-regeleinden, bevat je eigen filterregels. Je kunt daartoe onderstaande voorbeeld op eigen risico kopieren en uitbreiden. Dit tweede tekstbestand met de filterregels, bewaar je ook in je home-directory, met de naam .procmailrc. Let wel: beide bestandsnamen beginnen dus met een .punt.

procmailrc uploaden met ftp

De filterregels in de .procmailrc kunnen onderdelen uit de email laten analyseren. Bijvoorbeeld het content-type van een email, afzender-domein, headerregel, subject of mail-body. Maar ook filteren op virussen is mogelijk. Bevat een email een ongewenst trefwoord of afzender, dan slaat procmail 'm op in een aparte folder, of: gooit 'm weg en komt niet aan. Lees eerst een uitgebreide uitleg, zodat je weet wat je doet wanneer je procmail wilt gebruiken. Maak een eigen .procmailrc. of kopieer onderstaande op eigen risico, om je eigen spam-trefwoorden als '[lichaamsdeel]vergroting' in te verwerken. Ik kan ze er uiteraard niet in zetten, omdat spammers dan meteen weten welke termen ze moeten vermijden:

# - - - - - - - - - - - - .procmailrc - - - - - - - - - - - -
# betekent: regel met uitleg

MAILDIR=mail
# Uitleg: die directory 'mail' moet natuurlijk wel bestaan...
LOGFILE=/dev/null
# Een log schrijven lukt me bij XS4ALL niet, dan maar naar /dev/null

:0:
* ^Subject:.*\[voorbeeld\]
voorbeeld
# Elke nieuwe filterregel begin je met :0
# Je gebruikt :0: met extra : wanneer je naar een bestand schrijft.
# In dit voorbeeld wordt elke mail die in het subject '[voorbeeld]'
# bevat, weggeschreven naar het bestand 'voorbeeld'
# Om te voorkomen dat er 2 mails met dit subject bijna 
# tegelijk 'willen worden weggeschreven' in dit bestand 
# -met alle errors van dien- lock je het bestand 
# tijdelijk met de extra :

# Met :0 H geef je aan dat je alleen de Header van # het mailtje wilt doorzoeken op trefwoorden # Met :0 B geef je aan dat je alleen de Body van # het mailtje wilt doorzoeken op trefwoorden # # Alles dat achter het * staat, wordt als conditie # doorgegeven aan de interne egrep op de server # ^ betekent: wanneer een regel begint met, dus.. # ... ^Sender wil zeggen: wanneer een regel begint met "Sender" # een . betekent Any character except a newline # Dus de hele regel * ^Sender.voorbeeld2@xs4all.nl # betekent: "wanneer een regel begint met "Sender" en # ergens de karakterreeks 'voorbeeld2@xs4all.nl' bevat.."

# Op de volgende regel in de procmailrc tref je de plek # waarnaartoe het mailtje wordt 'bewaard': # /dev/null is de 'prullenbak' # en 'voorbeeld' en 'voorbeeld2' alhier zijn bestandsnamen :0: * ^Sender.voorbeeld2@xs4all.nl voorbeeld2 #tenzij je Chinees leest: :0: * ^Subject:.*=?big5?Q? /dev/null #tenzij je Koreaans leest: :0 H * ^Content-Type:.*ks_c_5601-1987 /dev/null :0 H * ^Content-Type:.*ISO-2022-KR /dev/null :0 H * ^Content-Type:.*euc-kr /dev/null #filteren op afzender: :0 * ^From.*eennaamdiejenietwilt /dev/null #filteren op domein: :0 H * 1^0 masterloans.com /dev/null #filteren op Subject: :0 H * ^Subject:.*secret /dev/null #filteren op machines die als spamverstuurders bekend zijn: #dit kan met een XS4ALL-account: :0 H * ^X-XS4ALL-DNSBL-Warning:.*Sending machine is listed in /dev/null # Let op: deze headermarkering, "DNSBL-Warning" # maakt m.i. weinig fouten...... ik gooi deze berichten daarom weg... # dat wil zeggen: ze gaan naar /dev/null/ # Toch kan het voorkomen dat een SMTP-server ten onrechte als # "spammer" aangemerkt is.. Bent u daar bang voor, kies dan deze, # en bewaar de spam in het bestand 'rotzooi': :0 H * ^X-XS4ALL-DNSBL-Warning:.*Sending machine is listed in rotzooi

# Let op: de XS4ALL-headermarkering "X-XS4ALL-Spam: YES" # maakt nogal eens fouten...... ik filter deze daarom naar een # bestand, het bestand "rotzooi," zodat ik ten onrechte als spam # aangemerkte berichten alsnog kan lezen..: :0 H * ^X-XS4ALL-Spam: YES rotzooi #filteren op woorden in de message-body: :0 B * 1^0 .*ditmagwegtest /dev/null # Een ontbrekende To-regel is meestal spam # maar ik schrijf het toch naar het bestand 'rotzooi' # voor het geval het toch iets is... # Blijkt inderdaad wel eens mail van één # vriendin aan meer vriendinnen tegelijk.. :0: * ! ^To: rotzooi # - - - - - - - - - - - end .procmailrc - - - kopieeren op eigen risico - - -

Tip 1: stuur jezelf een paar mailtjes mèt (en zònder..) de trefwoorden waarop je filtert. Dan kun je zien of je filter werkt. Met een typefout is het ook mogelijk om alles naar /dev/null/ te sturen.. ;-) Dat wil je natuurlijk voorkomen.

Tip 2: in plaats van direct naar /dev/null, kun je ook alle spam een tijdje naar een bestand schrijven, om te zien of je filter fouten maakt.


Naar Jolie's hoofdpagina
Terug naar Jolie's weblog
© Jolie, 2003