procmail -v
Om du har procmail på systemet ser du det med den gång, annars får du ett felmedeelande. Saknar du procmail på systemet har du fyra val:
Nästa steg är att lägga till lite text i textfilen. Det första du behöver veta är att det finns två sorters information i din configfil. Den ena sortens är allmän information om procmail. Den andra delen är regler för hur mail skall hanteras. Av tekniska skäl lägger man informationen i två delar, där den första sorten hamnar överst. Nu skall jag gå igenom min .procmailfil, det är det enklaste sättet att fatta hur man gör.
#Filles atempt to get rid of some spam. ## #Globals ##Inga överaskningar här. Allt som börjar med # är kommentarer som ignoreras av procmail, du kan skriva vad som helst här. Rubriken "Globals" talar om att här kommer ett block med allmäna (globala) regler för procmail
#Shell enviornment SHELL=/bin/bashDet första du vill tala om för procmail är vilket skal du sitter i. Vet du inte det skriver du
echo $SHELLi din terminal, så får du reda på det.
#Mail Directory. Yeah. MAILDIR=$HOME/MaildirDärefter behöver procmail veta vilket maildirectory du har. Detta för att veta var dina mail hamnar. I mitt fall heter det ~/Maildir. Du får fråga din sysadmin om du inte vet själv eller har tillgång till informationen.
Observera också att jag skrev '$HOME' och inte '~'. '$HOME' är det samma som '/home/kalle' eller vad din användare heter. Av tekniska skäl så skriver du alltid så när du anger sökvägar i .procmailrc. Det finns nån god anledning till det som jag inte kommer ihåg just nu.
#Procmaildir PMDIR=$HOME/.procmailDu vill eventuellt ha en katalog avsedd just för procmail. Då skapar du den med 'mkdir' och lägger till denna rad. Det är inte så viktigt vad du kallar variabeln, bara du är konsekvent med att använda samma namn hela tiden sen. Behöver du inte en speciell katalog för ditt procmailsystem kan du hoppa över detta steget.
#Logfile. Shift to alt 1 when debugging stuff #LOGFILE=$PMDIR/pmlog LOGFILE=/dev/nullNu skapar vi en loggfil. Saker som händer loggas och vill du läsa det så får du spara loggarna någon stanns. Här finns två rader som börjar på LOGFILE, detta kräver en viss förklaring:
Om jag inte vill spara mina loggar skickar jag dem i stället till /dev/null. /dev/null kan man säga är en fil som finns på alla UNIX-system, och alltid är tom, hur mycket man än skriver till den. Genom att skica data dit raderas de. Och då jag inte vill spara mina loggar så skriver jag dem lämpligen dit.
Anledningen till att spara loggar är huvudsakligen om man gör en ändring i sin .procmailrc och vill veta hur det fungerade.
#A blank line between every message in the log file LOG=" "Den här raden är nog ganska självförklarande.
# Set VERBOSE to yes when debugging; VERBOSE default is no ## VERBOSE=yesDen här raden används bara om jag vill slå på verbose-mode, och det vill jag inte. Men när jag vill det tar jag bort "rutan". Och med detta är vi klara med den tråkiga delen. Nå ska vi börja radera spam.
## #Recipes ##"Recipes" kallar man de instruktioner som tar hand om dina mail. Därför markerar jag att den avdelningen har börjat nu med dessa rader.
Filtrering i procmail sker i serie. Det innebär att varje mail jämförs med de olika recipesen en i taget. När en träff sker behandlas mailet i enlighet med instruktionen. Därefter lämnas mailet åt sitt öde och kontrolleras inte mot de övriga filtren. Därför behöver du tänka så att du placerar dem i rätt ordning. Varje recipe utför exakt en åtgärd per mail, men det går att gå runt det.
# Put everything to *@fukt.bth.se in the junk basket :0: * ^(To).*@fukt.bth.se /dev/nullHär kommer min första regel. Låt mig börja med att förklara vad jag vill:
':0:' är ett obligatoriskt intro till varje recipe. Tecknena gör något men jag behöver inte veta vad just nu, så jag har inte skrivit upp det. Men börja varje recipe på det sättet, såvida du inte vet att du skall göra annorlunda.
'* ^(To).*@fukt.bth.se' är den första delen i regeln. Du börjar med en stjärna (*) vilket betyder att detta är vilkoret. Det som följer nu är vad procmail skall leta efter. '^(To).' betyder helt enkelt "leta i mottagaradressen". Slutligen kommer '*@fukt.bth.se' vilket betyder "alla adresser som slutar på @fukt.bth.se". Nu vet procmail att den skall leta efter alla mail till mig som är adresserade till något som slutar med '@fukt.bth.se'.
'/dev/null' är receptets åtgärd. I det här fallet mycket enkel: "Spara mailet i filen /dev/null". Ett annat sätt att säga "släng skiten".
#Discard mails with certain words in Subject :0: * ^Subject:.*(cialis) #/dev/null $PMDIR/junkNu går jag vidare och slänger mail som innehåller vissa utvalda ord. Spam som slinker igenom (för att de är adresserade till rätt adress) kan ju också slängas. I det här fallet sorterar jag på raden som börjar på 'Subject:' och innehåller ordet 'cialis' eftersom det förekommer ibland i spam jag får.
Egentligen vill jag slänga de mailen (/dev/null) men i stället skickar jag dem till en katalog i min PMDIR som heter 'junk'. De mailen kontrollerar jag, och när jag kommit fram till att min spamregel fungerar ändrar jag om till att slänga mailen i /dev/null i stället.