PROCMAIL

Presentert til SJLUG 13. juni 2001 av Odd Skjeveland

Mail oppsett

Mail går fra sender til mottaker langs disse linjer:
  1. Mail går fra MUA - Mail User Agent, e-post program, f.eks outlook, Pine eller andre
  2. Før gikk meldingene rett til MTA Mail Transfer Agent som leverer mail til mottaker, f.eks Sendmail. MTA er normalt det som står til høyre for @,
  3. Sendmail legger ikke mail i mailboksene. Den finner ut hvem meldingen er til. Sendmail kaller opp et program som legger meldingen i en fil som tilhører mottaker. - mailbox Dette programmet er MDA.
  4. Mottaker får melding fra Receiving MUA.
I dag er det noen trinn imellom 1 og 2:
  1. Fra MUA sendes mail til en Forwarding MTA som inneholder Sendmail. Der er det regler som sier at f.eks meg@her.min_isp.no er avsender meg@min_isp.no.
  2. Mail sendes videre til Receiving MTA gjennom en TCP MDA.
    Procmail er Receiving MTA
I /etc/sendmail.cf styrers output til Procmail slik:
  Mlocal,  P=/usr/bin/procmail,    .....
  .....
  A=procmail -a $h -d $u
Dermed vil alle innkommende meldinger skrives inn i egen mailboks.

På hjemmeområdet på maskinen kan det være en fil, f.eks /home/meg/.forward
Hvis det ligger en mail adresse her vil mailen videresendes til denne adressen.

Man kan sette opp filter på innkommende mail. F.eks kaste meldinger som kun inneholder store bokstaver. Et filter kan manipulere meldingen på en hvilken som helst måte.

Et slikt filter er et program. Man kan la et program mate det neste. En slik mating kalles en pipe. Procmail er et slikt filter. Det tar input fra sendmail og sender det videre til mailboksen. Procmail starter hver gang man får en e-post.

På hjemmekatalogen kan man ha filen filen /home/meg/.procmailrc Der konfigurerer man Procmail for brukeren. Der kan man f.eks sende meldingene til /dev/null og dermed kvitte seg med all mail.

Mottakerene heter recept.

Eksempel:

:0:
* Subject: Her er påmeldingen     # kommando
{
  :0 c  # kopier meldingen. Det må man gjøre for å unngå at meldingen forsvinner til senere bruk.
  ! mottaker@der.no

  :0 ic   # i ignore errors, c kopier meldingen
  | cd bin && 'oskeren.pl'

  :0
  /home/meg/lager/mailpaameldinger  # her kommer påmeldingen
}

Regulære uttrykk

Regulære uttrykk er en måte å analysere tekststrenger på. Noen viktige regler er
tegnABCD
Spesialtegn^$\[].
Antall*+?

Her er noen eksempler

A*Ubegrenset antall A. Operatøren referere til tegnet før. Kan være ingen
.*En vilkårlig sekvens av tegn
^A*En streng som begyner med A
A$en streng som slutter med A
A[AB]Det skal være en A etterfulgt av en A eller B
A[A-Z]CDet skal være en A etterfulgt av en stor bokstav, og deretter C
[A-Z]*$En streng bestående kun av store bokstaver
A+Minst en A

Man kan kjøre regulære uttrykk ved å benytte grep (Get Regular Expressions and Print)

eksempel

grep local /etc/sendmail.cf
viser alle linjer der local forekommer
grep ^R$ /etc/sendmail.cf
viser alle linjer som begynner på R$

Mail header

Fra første linje er alle linjer headere inntil første tomme linje.
From:
To:
Subject:
Data:
I tillegg kan man legge in ekstra headers:
X-Mailer:Kmail
Derfor, når man i Procmail definerer
  ^Subject: Osk-2001 paamelding
så kjøres kommandoen hvis man har en mail med Subject "Osk-2001 paamelding".

Lockfile

Sendmail kan initiere flere instanser av procmail hvis det kommer flere meldinger. Derfor kan man risikere at alle instansene skriver samtidig til samme filen. Da risikerer man at linjene kommer i uorden i fila - en linje fra den første mailen, noen fra den andre og nok en linje fra en tredje mail osv. For å unngå dette har procmail en lockfile som sikrer at en får fullført en komplett skriving om gangen..

Det er der man bruker :0: der lockfile får et navn bestemt av procmail, eller :0:laasefil der man definerer lockfilnevnet til laasefil.

Sentral procmailfil er /etc/procmailrc Denne filen skjekkes FØR de enkelte brukerfilene.

Mimetype kan sjekkes med header Multiple parts.

Manualsider

Sjekk manualsidene for mer info:

man procmail
man procmailrc
man procmailex
man procmailsc

Referanse

www.procmail.org har mer om emnet. De har bl.annet flere spam filtre.

Referent: Ottar Kvindesland

TILBAKE