E-postlister og EXIM: Forskjell mellom sider

Fra IThjelp
(Forskjell mellom sider)
Ingen redigeringsforklaring
 
Ingen redigeringsforklaring
 
Linje 1: Linje 1:
{{SIS}}
{{SIS}}
Det er mange som sitter inne med et stort informasjonsbehov og som ser Internet og elektronisk post som en billig og elegant måte å nå et stort antall mennesker. Det er ikke nødvendigvis problemfritt å sende mail til '''alle'''. Lister med mange deltagere har bestemte formål, dersom den utsendte informasjonen ikke er relevant for listen vil meldingen kunne vekke irritasjon hos mottagerne.  ''Det er ikke slik at all reklame er god reklame'', forskjellen mellom informasjon og  [[SPAM|SPAM]] kan være liten.
IT-avdelingen har tilbudt epost siden midt på åttitallet, tidligere løsninger som EARN/BITNET (IBM) og X400 (PP) er forlengst avviklet.
Mens flere fakultet og institutt drev selvstendige epostkontorer, har IT-avdelingen fra 2006 samlet all eposthåndtering sentral på universitetet.


Masseforsendelser vha elektronisk post kan bruke store ressurser, den utsendte meldingen vil bli kopiert ut til hver enkelt mottager. I mange tilfeller vil hver mottager kunne lagre flere versjoner av meldingen. Selv ganske små meldinger kan plutselig bli til megabytes, store meldinger med vedlegg kan bli til megagigaterra.... Et vedlegg som kan synes lite i tekstbehandler vil ofte ha en faktisk størrelse på flere megabytes. Mailserveren som formidler meldingen vil også jobbe hardt mens den distribuerer informasjonen til de tusener av mottagere.
Siden 1997 har vi basert oss på programsystemet [http://www.exim.org/ exim], opensource utviklet ved Universitetet i Cambridge.


Internt ved universitetet oppfordrer vi informasjonstilbydere som ønsker å nå veldig mange å konferere med [http://www.uib.no/info/ Informasjonsavdeligen] før masseutsendelser settes i gang. Når informasjon skal leses av mange vil ofteste world-wide-web (verdensveven) og [http://news.uib.no/News/ Usenet] være mer velegnet enn epost. Ikke minst vil en slik løsning være mye mindre ressurskrevende.
Epost leveres enten til tradisjonelle unix-tjenere hvor posten blir tilgjengelig over standard-protokollene IMAP og POP3,
eller for interaktiv bruk med program som alpine og mutt. Men mange ansatte får eposten levert via Outlook/Exchange.


[http://melding.uib.no/ Meldingstjenesten] kan være et fornuftig valg for å opplyse om nye og aktuelle websider.
Hvor eposten havner vil kunne bestemmes av filen .forward i den enkeltes hjemmekatalog. Inneholder filen brukernavn@exchange.uib.no vil posten bli levert tilgjengelig for Outlook, er den tom vil posten leveres til "ALF" for ansatte og "RASMUS" for studenter. Filen kan også inneholde en ekstern epostadresse om posten ønsker videresendt ut av UiB.


Filen kan også brukes som et script for å filtrere innkommende meldinger som beskrevet under.


===Interne lister ved UiB===
'''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.'''


På mailservere er det ulike metoder å sette opp lister for bruk av masseforsendelser. Blant annet [[Hovedside|IT-avdelingen]] kan være behjelpelige med å sette opp maillister. Det finnes ulike måter å administrer listene på, begrensninger ved bruk etc.  ''Mer om IT-avdelingens tilbud omkring maillister vil komme.''


De fleste ansatte har mottatt melding over maillisten «alle@uib.no», den vil sende en kopi til hver ansatt ved UiB. Det er bare en håndfull direktører som har rett til å benytte den listen.
==«.forward»==


Enda flere har mottatt post over lignende instituttvise «alle-lister», på enkelte avdelinger brukes slike lister flittig og disiplinert. Andre opplever at slike lister misbrukes til spørsmål om informasjon om allehånde irrelevante ting. Møter i frimerkeklubber, barnevogner til salgs, nøkler mistet - ja endatil «$$$ make money fast $$$» og «send denne virus advarselen til alle du kjenner» har blitt distribuert over disse listene. Oftest er det få eller ingen restriksjon ved bruk av instituttvise lister.
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.


Meldinger over instituttvise lister for studenter og ansatte skal være av faglig relevant karakter. Meldinger over andre lister være seg på IT-avdelingen eller andre steder i verden, skal ta hensyn til listens formål. Informasjon om seminar i fransk skal ikke sendes til engelsk, selv om det kanskje kunne være én på engelsk som også har interesse av fransk. IT-avdelingen kan sanksjonere misbruk av lister, jfr [http://tjinfo.uib.no/tt.html melding utsendt av IT-direktøren].
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:


De aller fleste av universitetets institutter, sentre og avdelinger benytter IT-avdelingen for å tilby sine ansatte tilgang til elektronisk post. De seks-åtte miljøene som driver lokal mailtjeneste uavhengig IT-avdelingen er hovedsaklig MatNat-institutter. ''Informasjonen under er mest relevant for de som benytter IT-avdelingens mailtjener, best kjent som'' '''''alf.uib.no'''''.
: annen@adres.se
: userid


===Automatisk vedlikeholdte lister IT-avdelingen===
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 kapittelet under først, exim har meget gode muligheter innebygd for de mest tenkelige og utenkelige ønsker og situasjoner.''' 


Inntil den nye studentserveren rasmus.uib.no ble satt i drift i februar 1998 skilte ikke IT-avdelingen mellom ansatte og viderekommende studenter (hovedfag, doktorgrad etc), begge kategoriene fikk konto på alf.uib.no og mailadresse tilknyttet instituttet (som f.eks @bi.uib.no).


De instituttvise alle-listene (som alle.bi@uib.no) genereres automatisk på basis av den tildelte mailadressen. De fleste institutter og avdelinger har [[maildomener ved UiB|et eget domene]] under .uib.no
==Utstrakt filtrering==


Tilsvarende vedlikeholdes automatisk lister over viderekommende studenter på den felles studentserveren rasmus, listen for Biografisk instititt heter tilsvarende stud.bi@lists.student.uib.no, instituttilhørighet og nivå for den enkelte student leser vi fra Felles Studentsystem (FS). Det har imidlertid vist seg at FS og studenten ikke alltid er enige om hvor og på hvilket nivå personen studerer. FS baserer seg på opplysninger gitt ved selvregistreringen i de utplasserte boksene ved semesterstart. Unntaksvis kan postmaster@uib.no sørge for at "feilregisistrerte" studenter havner på rett liste.
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 instituttet ønsker det kan studentlisten knyttes til ansattlisten, eller man kan selv sende meldinger til begge listene om en også ønsker separate informasjonskanaler.
Dersom den første linjen i «.forward» ser slik ut:


Det lages også lister for alle studentene (med mailkonto på rasmus) på de enkelte insituttene. Disse listene kan '''bare''' brukes av institutt/fakultet etter nærmere avtale.
: <code># Exim filter</code> 


===Regler for bruk av lister===
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 [http://tjinfo.uib.no/exim-filter.txt 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. 


::*Meldingen skal ha relevans for deltagerne på listen.


::*Meldingen skal ikke ha vedlegg.
==Test av filter==


::*Meldingen bør holdes kort. Henvis heller til websiden med ytterligere informasjon enn å la meldingen inneholde fullstendinge opplysninger. På Web vil alle kunne lese formatert tekst, '''husk at ikke alle bruker Eudora, Windows95 og Word.'''
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:


::*Tekstformatering vha HTML skal ikke forekomme.
: <code>/usr/lib/sendmail -bf new-filter  < test-message</code>


::*Underlinjeringer etc vha MIME (text/enriched) bør unngås.
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».  


::*Sammenstilling av '''mange''' lister i samme meldingen tillates ikke.


==Generell synktaks==


===Andre lister===
Filtrering vil normalt være sekvenser av tester på ulike deler av den innkommende meldingen, f.eks


Mange arbeider nok i prosjekter hvor instituttvise lister ikke er hensiktsmessige å bruke, mange fagfelt går på tvers av institutter og fakulteter. Ofte vil informasjonen som skal formidles bare ha interesse for en del av instituttets ansatte mens det i tillegg finnes en del andre som en ønsker å nå - også utenfor UiB.
<code>


'''Løsningen er å få opprettet en egen liste''' som er skreddersydd til formålet. IT-avdelingen kan hjelpe til med dette.


Ønsker du å få opprettet en mailliste kontakter du postmaster@uib.no, ulike kategorier av lister er tilgjengelige.
::*Lister kan være åpne og administreres automatisk ved at den enkelte sender mail til UiBs listerobot med kommandoen "subscribe LISTE".
::*Listen kan administreres ved hjelp av tilsvarende "subscribe-meldinger" men ikke godtas før eieren av listen aksepterer innmelding.
::*En kan selv kontrollere deltagerlisten ved å editere en anvist fil på en unix-server på IT-avdelingen.
::*Om oppdateringer av deltagerne på listen forekommer sjelden, kan denne editeringen foretas av postmaster selv.
::*Ulike variasjoner av det samme ...


Når du sender mail til postmaster for å få en liste opprettet kan du gjerne ha tenkt over hvilken kategori som passer best for deg. Du bør også ha et forslag til navnet på listen, det vil være på formen prosjektnavn@uib.no


Fullstendig informasjon om [http://tjinfo.uib.no/list-owner-info.txt majordomo] for liteadministratorer finnes enda selv om vi nå satser på  [[maillister under mailman|Mailman]] som listeadministrasjonsverktøy. ''(mer info vil komme)''


IT-avdelingen setter bare opp lister som har formål med relevans for universitetet, det kan gjerne være faglige forum rettet mot internasjonale brukergrupper. IT-avdelingen driver allerede store lister med deltagere fra hele verden og vi har servere som er velegnet og raske. Lister knyttet til organisasjoner foreninger o.l. på universitetet kan også være aktuelle.
 
<nowiki># Exim filter</nowiki>          <br>
: if    <br>
: then  <br>
: elif  <br>
: then  <br>
: else  <br>
: endif<br>
: </code>
 
 
Kommandoer som understøttes i en slik filterfil er
 
<code>
{|
|-
| 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)
|}       
</code>
 
 
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:
 
<code>if $h_to is "list@some.org" or $h_cc is "listsome.org"</code>
 
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»)
 
 
 
 
<nowiki># Exim filter</nowiki>  <br>
if $header_sender is "list-request@some.org"<br>
then<br>
save mail/list<br>
finish<br>
endif<br>
 
Og dersom en skulle være blant dem som foretrekker MH-foldere ville filteret kunne se slik ut:
 
 
 
 
<nowiki># Exim filter</nowiki>  <br>
if $sender_address is "list-request@some.org"<br>
then<br>
pipe "/share/lib/mh/rcvstore +list"<br>
finish<br>
endif<br>
 
 
== 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:
 
 
 
 
<nowiki># Exim filter</nowiki>  <br>
if $sender_address matches "mor|far"<br>
then<br>
mail to 479999999@sms.teleleverandør.no<br>
subject "mail from $sender_address"<br>
text $h_subject<br>
endif<br>
 
 
== 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:
 
 
 
 
<nowiki># Exim filter</nowiki>  <br>
if $h_subject contains "ADULT SEX"<br>
then<br>
save /dev/null<br>
finish<br>
endif<br>
 
 
== 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.
 
 
 
 
<nowiki># Exim filter</nowiki> 
if $header_from contains "kind"<br>
then<br>
deliver megselv@online.no<br>
deliver userid<br>
endif<br>
 
«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 under siden [[maildomener]]. 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
 
 
{| class="wikitable" border="1"
 
! 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
 
 
 
<nowiki># Exim filter</nowiki> 
if $local_part_suffix is +news<br>
then<br>
save mail/usenetsvar<br>
finish<br>
endif<br>
 
if $local_part_suffix is +viktig<br>
then<br>
unseen deliver 99999999@mobilpost.com<br>
finish<br>
endif<br>
 
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:
 
 
 
<nowiki># Exim filter</nowiki> 
if $h_subject contains "ADULT SEX"<br>
then<br>
save /dev/null<br>
finish<br>
endif<br>
 
IT-avdelingens eposttjenere avviser ikke nødvendigvis mail selv om avsenders maskin er svartelistet (se [[RBL]]) 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.
 
 
 
<nowiki># Exim filter</nowiki>  <br>
 
if $h_X-RBL-Warning matches "ordb|spamhaus|spamcop"<br>
then<br>
logfile $home/spamfilter.log<br>
logwrite "$tod_log $sender_address $sender_host_name $h_X-RBL-Warning"<br>
seen finish<br>
endif<br>
 
Dersom du f.eks er med en liste som er svartelistet og du ønsker å kaste alle meldinger fra svartelistede maskiner unntatt fra denne kan filteret se slik ut
 
 
 
<nowiki># Exim filter</nowiki>  <br>
if $sender_address is owner-e-fugl@feathers.net<br>
then<br>
save mail/fugler<br>
finish<br>
endif<br>
if $h_X-rbl-warning matches "ordb|spamhaus|spamcop"<br>
then<br>
logfile $home/spamfilter.log<br>
logwrite "$tod_log $sender_address $sender_host_name $h_X-RBL-Warning"<br>
seen finish<br>
endif<br>
 
Dersom du foretrekker å bruke procmail heller enn exims eget filterspråk, lar du din «.forward» bare inneholde
 
<code>
 
<nowiki>|/local/bin/procmail</nowiki>  </code>


[[Kategori:E-post]]
[[Kategori:E-post]]

Sideversjonen fra 3. mar. 2010 kl. 13:01


IT-avdelingen har tilbudt epost siden midt på åttitallet, tidligere løsninger som EARN/BITNET (IBM) og X400 (PP) er forlengst avviklet. Mens flere fakultet og institutt drev selvstendige epostkontorer, har IT-avdelingen fra 2006 samlet all eposthåndtering sentral på universitetet.

Siden 1997 har vi basert oss på programsystemet exim, opensource utviklet ved Universitetet i Cambridge.

Epost leveres enten til tradisjonelle unix-tjenere hvor posten blir tilgjengelig over standard-protokollene IMAP og POP3, eller for interaktiv bruk med program som alpine og mutt. Men mange ansatte får eposten levert via Outlook/Exchange.

Hvor eposten havner vil kunne bestemmes av filen .forward i den enkeltes hjemmekatalog. Inneholder filen brukernavn@exchange.uib.no vil posten bli levert tilgjengelig for Outlook, er den tom vil posten leveres til "ALF" for ansatte og "RASMUS" for studenter. Filen kan også inneholde en ekstern epostadresse om posten ønsker videresendt ut av UiB.

Filen kan også brukes som et script for å filtrere innkommende meldinger som beskrevet under.

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 under siden maildomener. 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 (se RBL) 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

|/local/bin/procmail