EXIM
Programsystemet som har vært i bruk for elektronisk post ved
IT-avdelingen siden 1991 heter PP og var laget for andre tider
og med andre fokuserte problemområder enn hva er aktuellt idag.
På servere ved IT-avdelingen vil systemet bli lagt over til et
nytt, exim. I første omgang
tas exim i bruk på den nye studentserveren rasmus, «hovedpostkontorene»
på alf/noralf vil følge etter snarlig.
Når PP fases ut til fordel for exim vil dette ikke innebære noen
vesentlig endring for den enkelte bruker av email på IT-avdelingens
servere utover at
- «.mailfilter» vil ikke lenger fungere
- systemet vil anerkjenne normale «.forward» filer
- utstrakt filtrering og sortering av innkommende post vil være mulig.
IT-avdelingen forbeholder seg rett til å gjøre endringer i brukerers
«.forward» filer dersom de skulle ha syntaktiske feil eller forårsake
problemer ved avlevering eller for generell operasjon av postsystem
eller server. IT-avdelingen fraskriver seg ethvert ansvar for tapt
eller feilavlevert post som følge av feil i selvlagde filtre.
«.forward»
Den enkelte kan lage en fil i sin hjemmekatalog på unix-serverne med
navn «.forward», denne vil støtte vanlig syntaks. Dersom en ønsker
sin post videresendt til en annen adresse kan adressen legges inn
i filen «.forward» og videresendingen blir umiddelbart effektiv.
Dersom en ønsker å videresende en kopi av meldingen til en annen
adresse men at avlevering til lokal innboks skal foregå som normalt,
kan «.forward» lages slik:
annen@adres.se
\userid
Det er også mulig å la et program (f.eks procmail) sortere posten
ved å pipe meldingen til dette. Programnavnet skrives til
filen «.forward» med tegnet «|» foran. exim støtter også normal
håndtering av «vacation». Men ta en titt på kapittelet
under først, exim har meget gode muligheter innebygd for de mest
tenkelige og utenkelige ønsker og situasjoner.
Utstrakt filtrering
Mange bruker Eudora, Netscape eller annen POP-klient for å lese
mail fra serverne på IT-avdelingen. En POP-klient (POP3) vil ikke
ha mulighet for å lese innkommende post fra andre steder enn den
defaulte innboksen. Men f.eks Eudora-PRO har egne muligheter for
å filtrere innkommende post som delvis vil kunne gjøre tilsvarende
oppgaver som beskrevet under.
Dersom den første linjen i «.forward» ser slik ut:
# Exim filter
vil postsystemet behandle den under helt andre regler enn en normal
forward-fil. Brukere som har benyttet «.mailfilter» og som ønsker
å opprettholde denne funksjonaliteten må konvertere til denne nye
syntaksen som er forsøkt beskrevet med eksempler under. Komplett
bruksansvisning er også tilgjengelig.
Ønsker en å sette opp slik filtrering bør bruksanvisningen leses
nøye og filteret testes før det tas i bruk. IT-avdelingen ved
postmaster@uib.no vil bare til en viss grad kunne bistå for oppsett
og feilsøking av filtere. Noen relevante eksempler er imidlertid
gitt under.
Test av filter
Når et nytt filter («new-filter») lages bør det testes slik at en føler seg
sikker på at det faktisk gjør det det var tiltenkt å gjøre.
Lag eller kopier en melding med de aktuelle headere du ønsker
å filtrere på til filen «test-message» og bruk kommandoen:
/usr/lib/sendmail -bf new-filter < test-message
Rimelig foreståelige meldinger om hva postsystemet ville gjort
blir skrevet til skjermen. Når du er fornøyd med resultatet,
kopieres innholdet av «new-filter» til «.forward».
Generell synktaks
Filtrering vil normalt være sekvenser av tester på ulike deler
av den innkommende meldingen, f.eks
# Exim filter
if
then
elif
then
else
endif
Kommandoer som understøttes i en slik filterfil er
deliver deliver to an email address (9)
finish end processing (14)
if test condition(s) (15)
logwrite write to log file (13)
logfile define log file (13)
mail send a reply message (12)
pipe pipe to a command (11)
save save to a file (10)
testprint print while testing (14)
vacation tailored form of mail (12)
Tallet refererer til seksjonen i bruksansvisningen
hvor kommandoen er utførlig beskrevet.
Alle headere i en melding kan brukes når det testes i filteret vha
av variabler med «$» som første tegn. F.eks vil innholdet av headeren
«From:» kunne refereres med variabelen «$header_from» og innholdet
av headeren «Subject:» med variabelen «$header_subject». Disse variablene
kan forkortes til «$h_from» og er caseinsensitive. Det finnes
også en del andre variabler, f.eks «$sender_address» som angir meldingens
sender under overføringen til mailserveren. Dette er adressen som ble
brukt av SMTPs «MAIL FROM:» og er ikke nødvendigvis den samme som hverken
finnes i From:, Relpy-to: eller Sender: headerene i meldingen.
Ved test kan ordene «is», «contains» og «match» brukes,
uansett er testene uavhengige om tekststrengene inneholder
store eller små bokstaver.
- if $header_from is kind@edb.uib.no
- Uttrykket er sant dersom adressen er «kind@edb.uib.no»
- if $header_from contains kind
- Uttrykket er sant dersom adressen innholder strengen «kind»
- if $header_from match "^kind|postmaster@.*uib.no"
- Uttrykket er sant dersom adressen er innledet enten av
strengen "kind" eller inneholder "postmaster@" et hvilket som
helst domene ved UiB. exims regulære uttrykk er 100% kompatible
med perls.
I tester kan også uttrykkene «or», «and» og «not» brukes for å
kombinere ulike forutsetninger.
Eksempler
Et filter kan være så langt og foreta så mange tester en måtte ønske
og vil kunne utføre selv de meste utenkelige oppgaver. Filteret er
rimelig sikkert og er i liten grad sårbart for loops. Her kommer noen
korte, enkle og forhåpentligvis relevante eksempler.
Mailliste til egen folder
De fleste maillister har listedistributørens adresse i headeren
«Sender:» og kan derfor ofte brukes. Alternativt vil en f.eks kunne
gjøre en slik test:
if $h_to is "list@some.org" or $h_cc is "listsome.org"
Dersom en ønsker alle meldinger mottatt via en liste til en egen
folder lesbar for pine eller mutt, kunne «.forward» inneholde
(dersom avsenderadressen var «list-request@some.org» og folderens
navn var «list»)
# Exim filter
if $header_sender is "list-request@some.org"
then
save mail/list
finish
endif
Og dersom en skulle være blant dem som foretrekker MH-foldere
ville filteret kunne se slik ut:
# Exim filter
if $sender_address is "list-request@some.org"
then
pipe "/share/lib/mh/rcvstore +list"
finish
endif
Varsel til personsøker ved mottak av mail.
Jeg er glad jeg ikke bruker personsøker og at den ikke piper til
meg hver gang jeg får mail, men dette er en funksjon som mange
ønsker seg og som tilbys av ymse teleoperatører.
En mulig løsning kunne være slik:
# Exim filter
if $sender_address matches "mor|far"
then
mail to 479999999@sms.teleleverandør.no
subject "mail from $sender_address"
text $h_subject
endif
Kaste meldinger
IT-avdelingen foretar en del avvisning av spam, men den enkelte
kan også foreta ytterligere sortering. Et nærliggende eksempel
kunne være:
# Exim filter
if $h_subject contains "ADULT SEX"
then
save /dev/null
finish
endif
Kopi til annen mailadresse
Mange har eget abonnement hos eksterne leverandører og i enkelte
tilfeller er posten så viktig at den bør leveres til flere adresser.
# Exim filter
if $header_from contains "kind"
then
deliver megselv@online.no
deliver userid
endif
«userid» settes til ens egen userid på UiBs server og leveres
både lokalt og til ens adresse hos Tullemor.
Multiple mailbokser
Når du får konto på unix-serverne ved IT-avdelingen vil du også bli satt opp
med et mailalias. Brukernavnet vil være fem bokstaver på ansattmaskinene, mens
det på rasmus vil være "st" etterfulgt av fem tall. Mailaliaset vil være på
formen Fornavn punktum Etternavn krøllalfa maildomene
Studenter vil bli satt opp med maildomenet student.uib.no, en oversikt over
ansattes maildomener finner du her.
Du vil ikke selv kunne sette opp andre aliaser, det er det bare "postmaster" som kan.
Veldig ofte vil du kunne bruke ulike maildomener, ansatte vil f.eks oftest kunne
bruke bare @uib.no og alle kan bruke maskinnavn (f.eks @alf.uib.no for ansatte og
@rasmus.uib.no for studenter).
Men noen ganger kan det være praktisk å kunne oppgi mailadressing sin på en slik måte
at du kan gjenkjenne hvor du oppga den. Som en utvidelse av brukernavnet kan alle lage
slike gjenkjennbare mailboksnavn ved hjelp av tegnet pluss (+) og en vilkårlig tekststreng
(som selvsagt ikke kan inneholde norske bokstaver). Om brukernavnet er BRUKER kan du altså
bruke slike adresser
| Ansatt | Student |
| BRUKER+news@uib.no | BRUKER+news@student.uib.no |
| BRUKER+annonse@alf.uib.no | BRUKER+annonse@rasmus.uib.no |
| BRUKER+viktig@alfred.uib.no | BRUKER+viktig@nille.uib.no |
Tekststrengen du bruker mellom "+" og "@" kan du benytte i exims filterfil (.forward)
med navnet $local_part_suffix
# Exim filter
if $local_part_suffix is +news
then
save mail/usenetsvar
finish
endif
if $local_part_suffix is +viktig
then
unseen deliver 99999999@mobilpost.com
finish
endif
Merk at her må BRUKER våre brukernavnet og ikke mailaliaser som Fornavn.Etternavn.
Kaste meldinger
IT-avdelingen foretar en del avvisning av spam, men den enkelte
kan også foreta ytterligere sortering. Et nærliggende eksempel
kunne være:
# Exim filter
if $h_subject contains "ADULT SEX"
then
save /dev/null
finish
endif
IT-avdelingens eposttjenere avviser ikke
nødvendigvis mail selv om avsenders maskin er
svartelistet av RSS eller ORBS. Men
serverne våre slår opp mot disse tjenestene og stempler meldinger
fra svartelistede maskiner med en egen meldingsheader, X-rbl-warning:
Dersom du ikke vil ha post fra slike steder kan du legge f.eks dette
til .forward-filen din, den antatte spammen kastes men logføres til
filen spamfilter.log i hjemmekatalogen din på mailserveren.
# Exim filter
if $h_X-RBL-Warning matches "ordb|spamhaus|spamcop"
then
logfile $home/spamfilter.log
logwrite "$tod_log $sender_address $sender_host_name $h_X-RBL-Warning"
seen finish
endif
Dersom du f.eks er med på en liste som er svartelistet og du ønsker å
kaste alle meldinger fra svartelistede maskiner unntatt fra denne kan
filteret se slik ut
# Exim filter
if $sender_address is owner-e-fugl@feathers.net
then
save mail/fugler
finish
endif
if $h_X-rbl-warning matches "ordb|spamhaus|spamcop"
then
logfile $home/spamfilter.log
logwrite "$tod_log $sender_address $sender_host_name $h_X-RBL-Warning"
seen finish
endif
Dersom du foretrekker å bruke procmail heller enn exims eget filterspråk,
lar du din «.forward» bare inneholde
|/share/bin/procmail
Tiden ved Universitetet i Bergen er nå 14:56:30 3/11-2007 (+0100)
Du bruker Internet-nummeret 158.39.128.243
Nummeret er i DNS registrert med navnet heritrix4.nb.no.
Du er ikke koblet opp via Universitetet i Bergens nettverk.
Sist oppdatert 19/10-2000 av hmk
|