Sieve, VirtualBox

(Forskjell mellom sider)
Gå til: navigasjon, søk
m
(Nedlasting og utpakking av et image)
Linje 1: Linje 1:
Sieve ("sil" på engelsk og fransk) er språket e-postfilteret som brukes på '''UiOs''' e-postsystem skrives i. Det blir kjørt hver gang det kommer en ny melding.
+
[[Category:Programvare]]
 +
VirtualBox er et virtualiseringsprogram, altså et program som lar deg kjøre et operativsystem (OS) i et vindu i ditt vanlige OS. VirtualBox er gratis, har åpen kildekode og kjører på både Windows, Linux og Mac.
  
For å sette opp et Sieve-filter ved '''UiO''' gjør man slik:
+
Virtualisering er nyttig hvis du for eksempel har behov for å kjøre Linux, men ikke ønsker å installere det på harddisken din. Fordi gjeste-OSet kjører i et vindu i verts-OSet kan du jobbe parallellt på en måte som ikke er mulig ellers. Nedenfor ser du en trinn-for-trinn guide til hvordan du setter opp en virtuell maskin med VirtualBox, i dette tilfellet med Ubuntu som gjeste-OS i Mac OS X. Prosessen er så og si identisk for Windows.
  
*Start ''USIT'' sin emacs <tt>/local/bin/emacs</tt> og pass at du jobber i '''UTF-8'''
+
==Nedlasting og installasjon av VirtualBox==
 +
VirtualBox lastes ned fra [http://www.virtualbox.org/ virtualbox.org]. Installasjonen er helt standard Mac OS X og Windows. Bruker du en Debian-basert Linux-distribusjon som for eksempel Ubuntu, kan du bruke APT, se [http://www.virtualbox.org/wiki/Linux_Downloads virtualbox.org] for instruksjoner.
  
*Start med å laste inn Sieve-bibliotekene. Det gjøres ved å taste <tt>M-x load-library</tt> og så <tt>sieve</tt>. Du får da melding om <tt>Loading sieve...done</tt>
+
==Nedlasting av et imagee==
 +
Det er flere måter å sette opp en virtuell maskin med VirtualBox, men det enkleste er å laste ned et såkalt virtual box disk image, en fil med filendelsen .vdi. Bruker du et slikt image slipper du å igjennom noen Linux-installasjonsprosess, da imaget er ferdig satt opp for deg. Du kan finne slike images ved å Google for eksempel "virtual box images". Om du ønsker images av Ubuntu, kan du finne laste ned ulike versjoner [http://virtualboxes.org/images/ubuntu/ herfra]. Legg merke til hva som er brukernavn og passord for imaget du laster ned.
  
*Kjør så <tt>M-x sieve-manage</tt>. Du blir da spurt om server, og denne finner du ved å besøke [https://www.uio.no/brukerinfo/email/ brukerinfo verdensveven] eller <tt>email info brukernavn</tt> i bofh. For meg så er dette
+
==Oppsett av virtuell maskin med VirtualBox==
 +
#Start opp VirtualBox og velg File --> Virtual Media Manager
 +
#I vinduet som kommer opp (Fig. 1) velger du 'Add'. Bla deg fram til der du lagret .vdi-filen du har lastet ned og åpne den. Trykk OK for å lukke Virtual Media Manager.
 +
#Nå er det på tide å lage selve den virtuelle maskinen. Trykk 'New' i hovedvinduet til VirtualBox (Fig. 2).  Trykk 'Next' i vinduet som kommer opp (Fig. 3).
 +
#Gi maskinen din et valgfritt navn, og velg hva slags OS du lager en virtuell maskin av (Fig. 4).
 +
#Velg så hvor mye minne du vil sette av til den virtuelle maskinen (Fig. 5). Om du virtualiserer Ubuntu bør standarden 384 MB holde, men om du skal kjøre tyngre programmer bør du nok øke minnet noe. Husk at du må ha igjen minne til verts-OSet, altså bør du maksimalt velge halvparten av din totale minnestørrelse.
 +
#I det neste vinduet velger du 'Use existing hard disk' og velger harddisken vi lagde tidligere (Fig. 6). Klikk 'Next' og 'Finish'.
 +
#Du kan nå markere maskinen din i menyen til venstre i hovedvinduet og trykke 'Start' (Fig. 7). Maskinen starter opp i et eget vindu. Hvis du vil kjøre maskinen i fullskjermmodus trykker du på 'Host Key' + F. Hvilken knapp som er 'Host Key' står nederst i høyre hjørne.
  
jbofh> email info martiso
+
Det kan hende du må justere en del innstillinger, som tastatur, tid/dato, språk osv.
Account:          martiso
+
Mail server:      cyrus03 (cyrus_IMAP)
+
  
Altså er det <tt>cyrus03</tt> jeg skal skrive inn som server. Etter dette blir du spurt etter brukernavn og passord, og dette er det vanlige brukernavnet og passordet ved '''UiO'''. Velg så <tt>y</tt> på <tt>Store password for this session</tt>
+
<gallery>
 
+
Image:Vbox tutorial2.png|Fig. 1
*Du har nå fått opp en ny meny i emacs. Den ser ca. ut som dette:
+
Image:Vbox tutorial1.png|Fig. 2
 
+
Image:Vbox tutorial3.png|Fig. 3
Server  : cyrus03:2000
+
Image:Vbox tutorial4.png|Fig. 4
 
+
Image:Vbox tutorial5.png|Fig. 5
3 scripts on server, press RET on a script name edits it, or
+
Image:Vbox tutorial6.png|Fig. 6
press RET on <new script> to create a new script.
+
Image:Vbox tutorial7.png|Fig. 7
        <new script>
+
</gallery>
        sievefilter2.txt<3>
+
  ACTIVE sievefilter2.txt
+
        phpscript
+
 
+
Hvis du har lagd filter i webmail allerede, vil dette hete <tt>phpscript</tt>. Du kan åpne det ved å trykke på enter når <tt>phpscript</tt> er markert. Hvis du har lyst til å endre filteret ditt bare litt, kan det enkleste være å redigere denne fila. Det som er viktig å legge merke til er at webmail-editoren kun leser de egenproduserte kommentarene i denne fila og presenterer disse som filteret hvis det både er kommentarer og kommandoer. Det er derfor lurt å slette disse merkelige kommentarene, ellers vil webmail presentere et filter, mens du faktisk har et annet filter.
+
 
+
Hvis du ikke har et filter fra før av, vil du kun se <tt><new script></tt>. Du kan da enten velge å redigere direkte ved å trykke enter på <tt><new script></tt> eller du kan åpne en ny fil (<tt>C-x C-f filnavn.siv</tt>). Jeg synes det er tryggest å lagre på hjemmeområdet en gang i blant. Jeg tar derfor utgangspunkt i at det blir laget en fil på hjemmeområdet som heter <tt>sievefilter.siv</tt>.
+
 
+
Hvis du har et filter du ønsker å laste opp (f.eks. <tt>sievefilter.siv</tt>) og gjøre aktivt, gjør du på følgende måte: Du starter <tt>sieve-manage</tt>, og logger deg på tjeneren. Åpne fila du ønsker å laste opp på vanlig måte (<tt>C-x C-f</tt>). Trykk <tt>M-x</tt> og skriv inn <tt>sieve-upload</tt>. Filteret vil da bli testet, og hvis det er syntaktisk OK, blir det lasta opp. Hvis det er feil i skriptet, får du beskjed om det. Rett opp og last opp på ny.
+
 
+
Du har nå lasta opp filteret, men det er enda ikke gjort aktivt. For å gjøre det aktivt gå tilbake til vinduet <tt>*sieve*</tt>. Her vil det nye skriptet kanskje ikke ha dukket opp enda, men du får det fram med <tt>M-x sieve-refresh-scriptlist</tt>. Når du ser det nye skriptet ditt, marker det, og kjør <tt>M-x sieve-activate</tt>. Du har nå lasta opp og aktivert det nye skriptet, og det vil brukes hver gang det kommer nye meldinger til deg.
+
 
+
*Hvordan ser så et Sieve-filter ut?
+
Les [http://www.ietf.org/rfc/rfc3028.txt?number=3028 dokumentasjonen] eller se mitt eksempel på http://termvakt.uio.no/filer/sievefilter.txt
+
 
+
Siden få gidder å lese standarden så kan jeg komme med litt info. Se først på eksempelfila, og du vil se at starten av fila ser slik ut:
+
 
+
  require ["fileinto","reject","vacation","imapflags","relational","comparator-i;ascii-numeric","regex","notify"];
+
 
+
Denne linja brukes for å få med kommandoer man trenger, og webmail tar med alt som den kan bruke.  Egentlig klarer du deg med langt færre. Ordet <tt>require</tt> er en såkalt control structure. Andre kontrollstrukturer er <tt>if</tt> og <tt>stop</tt>.
+
 
+
Videre ser fila slik ut:
+
 
+
if header :contains "X-'''UiO'''-Spam-score" "sssss"
+
{
+
  fileinto "INBOX.spam";
+
  stop;
+
}
+
 
+
Den første linja er en <tt>if</tt>-test. Første argument (<tt>header</tt>) til kontrollstrukturen <tt>if</tt> er en test som sier hvor i meldingen vi skal sjekke.  En liten oversikt over mulige tester:
+
 
+
:<tt>address</tt>: "address" vil tolke headerfeltene <tt>From</tt>, <tt>To</tt>, <tt>Cc</tt>, <tt>Bcc</tt>, <tt>Sender</tt>, <tt>Resent-From</tt> og <tt>Resent-To</tt> slik at vi kun står igjen med selve e-postadressene (altså hvis det i <tt>To</tt>-feltet står "termvakt <termvakt@matnat.uio.no>" vil <tt>address</tt> plukke ut "termvakt@matnat.uio.no" for å gjøre sammenligningen).
+
:<tt>allof</tt>: Logisk AND, forklart nedenfor
+
:<tt>anyof</tt>: Logisk OR, forklart nedenfor
+
:<tt>envelope</tt>: Sjekker adressen som står utenpå konvolutten, denne kan være helt forskjellig fra det som står i To og From-feltet i selve meldingen.  Dessverre blir f.eks. "martin.sollien" skrevet om til brukernavnet "martiso" på vegen gjennom e-postsystemet, men bortsett fra dette er konvoluttadressen uforandret.  Adressen i <tt>To</tt> blir alltid skrevet om til din offisielle adresse, så hvis du ønsker å sortere ut e-post sendt til dine gamle adresser, må du bruke <tt>envelope</tt>.  Krever <tt>require "envelope"</tt>.
+
:<tt>exists</tt>: Sjekker om headeren er finnes i meldingen. Et lite eksempel som vil kaste meldinger som ikke har definert avsender: <tt>if not exists "From" { discard; }</tt>
+
:<tt>header</tt>: Angir at vi skal teste en header for innhold.
+
:<tt>not</tt>: Logisk NOT, tar en av de andre testene som argument og inverterer resultatet.
+
:<tt>size</tt>: Tester på størrelsen til mailen. De to argumentene den kan ha er <tt>:over</tt> og <tt>:under</tt>. Kan bruke bokstavene <tt>K</tt> (=2^10), <tt>M</tt> (=2^20) og <tt>G</tt> (=2^30) for å angi størrelse, f.eks. <TT>4M</TT>. For eksempel se i '''RFC3028'''.
+
 
+
 
+
Det andre argumentet, "<tt>:contains</tt>" er et tagged argument. I dette tilfellet sier det hvordan <tt>if</tt>-testen skal teste. De fem sammenligningsmåtene man kan bruke er:
+
 
+
:<tt>''':contains'''</tt>: Returnerer sant hvis teststrengen finnes i den angitte headeren (altså om teststrengen er en delstreng av headeren).
+
:<tt>''':is'''</tt>: Returnerer sant hvis teststrengen og headeren er like.
+
:<tt>''':matches'''</tt>: Kan lage søkestrenger som inneholder vilkårlig tegn (wildcards). Et lite eksempel er <tt>if header :matches ["*viagra*", "*make*money*fast*"]</tt>. Det to jokertegnene er '?' og '*'. '?' tilsvarer ett tilfeldig tegn, mens '*' angir null eller flere tilfeldige tegn.  Hvis du skriver "Re:*", så må strengen starte med "Re:", mens "*Re:*" vil være sann uansett hvor "Re:" står i strengen.
+
:<tt>''':value'''</tt>: Tester på numeriske verdier, f.eks. tall i subject.  Krever <tt>require "relational"</tt>.
+
:<tt>''':regex'''</tt>: Hvis du ønsker å bruke regulære uttrykk, er dette tingen å bruke. Siden jeg ikke kan dette, kan jeg ikke utdype dette nærmere.  Krever <tt>require "regex"</tt>.
+
 
+
Hvis man bruker <tt>:contains</tt>, <tt>:is</tt>, <tt>:matches</tt> eller <tt>:regex</tt>, er det neste argumentet hvilken header man skal søke i, mens det etter det igjen angir teststrengen.
+
 
+
Det siste argumentet (det som er innafor {} ) er hva som skal skje hvis testen returnerer sant. Her kan man gjøre følgende:
+
 
+
:<tt>reject "tekst"</tt>: Meldingen tas ikke i mot, og sendes tilbake til avsender. "Tekst" er det du vil at avsender skal få av feilmelding.  Vær forsiktig med denne, da avsenderadressen kan være forfalsket, og da vil du plage en uskyldig tredjepart.
+
:<tt>fileinto "mappe"</tt>: Flytter meldingen til den angitte mappa. Om du gjør flere <tt>fileinto</tt> til samme mappe, vil du likevel bare få ett eksemplar. Krever <tt>require "fileinto"</tt>.
+
:<tt>redirect "adresse"</tt>: Videresender meldingen til "adresse".
+
:<tt>keep</tt>: Den legger meldingen i <TT>INBOX</TT>. Dette er standard på alle meldingene som kommer hvis ingen annen hendelse blir gjort.
+
:<tt>discard</tt>: Kaster meldingen.
+
:<tt>notify</tt>: Varsler om at det har kommet ny e-post via f.eks. SMS.  Har for tiden ingen effekt ved '''UiO'''. Krever <tt>require "notify"</tt>.
+
:<tt>vacation</tt>: Sender en melding til avsender om at du er utilgjengelig el.l.  For de fleste er det bedre å bruke Automatisk svar i '''UiO'''-innstillinger i webmail, men hvis du vil ha mer finkornet kontroll, kan du gjøre det her.  Se advarsel om <tt>reject</tt>.  Krever <tt>require "vacation"</tt>.
+
 
+
I tillegg så kan man legge inn kontrollstrukturordet <tt>stop</tt> her. Filteret vil da stoppe, og ikke gjøre de resterende testene.
+
 
+
 
+
Så kan vi gjøre det litt mer avansert. Vi har to ord som implementerer logisk AND og OR. Disse er <tt>allof</tt> og <tt>anyof</tt>. To eksempler ser du nedenfor:
+
 
+
# Denne testen flytter alle termvaktmail til termvakt-folderen. STOPPER IKKE
+
if anyof (
+
  header :contains ["to", "cc"] "termvakt@matnat.uio.no",
+
  header :contains ["to", "cc"] "lk-alle@usit.uio.no",
+
  header :contains ["to", "cc"] "stueansvarlige@matnat.uio.no",
+
  header :contains ["to", "cc"] "termvakt@ifi.uio.no",
+
  header :contains ["to", "cc"] "termvakter@ifi.uio.no")
+
{
+
  fileinto "INBOX.termvakt";
+
}
+
 
+
# Denne testen flytter meldinger som ser ut som spam til bofh.no til spam-folderen
+
if allof (
+
  header :contains ["to", "cc"] "@bofh.no",
+
  header :contains ["subject"] "viagra")
+
{
+
  fileinto "INBOX.spam";
+
  stop;
+
}
+
 
+
I tillegg så finnes operatoren <tt>not</tt>. Den virker som en logisk NOT og inverterer sannhetsverdien av et uttrykk. Et lite eksempel på det:
+
 
+
if not header :contains ["to", "cc"] "viagra"
+
{
+
  keep;
+
}
+
 
+
Når det gjelder kommentarer, så skrives de enten med # og da blir resten av linja kommentert ut, eller så kan man bruke /* */ og alt som står mellom de to sekvensene blir kommentert vekk.
+
 
+
En ting som er viktig å merke seg er det som kalles "String Lists". "String Lists" oppgis inne i '[' og ']' og elementene skilles med ','. Evalueringen er slik at dersom testen er sann med ett eller flere av elementene i listen, så er hele uttrykket sant. Det er brukt flere ganger i eksemplene over, men et lite forklarende eksempel til:
+
 
+
if header :contains ["to", "cc"] ["termvakt@matnat.uio.no", "termvakt@ifi.uio.no"]
+
 
+
er det samme som
+
 
+
if anyof (
+
  header : contains "to" "termvakt@matnat.uio.no"
+
  header : contains "cc" "termvakt@matnat.uio.no"
+
  header : contains "to" "termvakt@ifi.uio.no"
+
  header : contains "cc" "termvakt@ifi.uio.no")
+
 
+
Det er også viktig å merke seg at ingenting i Sieve skiller mellom store og små bokstaver, heller ikke strengene. Man kan gjøre slik at strengene blir case-sensitive, og det gjøres med å skrive <tt>:comparator "i;octet"</tt> etter f.eks <tt>:contains</tt>. Et lite eksempel:
+
 
+
if header :contains :comparator "i;octet" "Subject" "MAKE MONEY FAST"
+
{
+
  discard;
+
}
+
Denne testen vil kaste alle meldinger som har emnefelt som "this is a great way to MAKE MONEY FAST", mens den vil ikke slå til på "this is a great way to make money fast".
+
 
+
Så kan vi gjøre ting enda mer avansert. Vi har allerede sett at vi har <tt>if</tt> som test, men vi har også <tt>elsif</tt> og <tt>else</tt>. Et lite eksempel:
+
 
+
if header :is "Sender" "no@rart.no"
+
{
+
  fileinto "INBOX.rart"; 
+
}
+
elsif address :domain :is ["From", "To"] "uio.no"
+
{
+
  fileinto "INBOX.uio";
+
}
+
else
+
{
+
  keep;
+
}
+
 
+
I denne testen har er det en annen ny ting også, nemlig <tt>:domain</tt>. Siden vi jobber med e-post, har vi ofte behov for å få tak i det som er til venstre for @ og det som er til høyre for @. Det som er til venstre kan kan få tak i ved å legge til <tt>:localpart</tt>, mens hvis man skal ha tak i det til høyre (domenet) skriver man bare @@:domain@. Hvis man trenger hele e-postadressen, kan man skrive <tt>:all</tt>.  Dette fungerer for <tt>address</tt> og <tt>envelope</tt>.  Hvis du er plaget med at du får mye spam til adresser du ikke bruker, kan du f.eks. skrive:
+
 
+
if envelope :domain "To" ["hfstud.uio.no", "ernst.uio.no", "www.ifi.uio.no"]
+
{
+
  discard;
+
}
+
 
+
Siden konvoluttmottaker alltid vil være en av dine gyldige adresser, er det tilstrekkelig å sjekke domenedelen.
+
 
+
 
+
== Eksterne linker ==
+
*For oppklarende info, sjekk [http://www.ietf.org/rfc/rfc3028.txt?number=3028]
+
 
+
[[Category:Programvare]]
+
[[Category:Internett]]
+

Revisjonen fra 15. aug 2010 kl. 11:10

VirtualBox er et virtualiseringsprogram, altså et program som lar deg kjøre et operativsystem (OS) i et vindu i ditt vanlige OS. VirtualBox er gratis, har åpen kildekode og kjører på både Windows, Linux og Mac.

Virtualisering er nyttig hvis du for eksempel har behov for å kjøre Linux, men ikke ønsker å installere det på harddisken din. Fordi gjeste-OSet kjører i et vindu i verts-OSet kan du jobbe parallellt på en måte som ikke er mulig ellers. Nedenfor ser du en trinn-for-trinn guide til hvordan du setter opp en virtuell maskin med VirtualBox, i dette tilfellet med Ubuntu som gjeste-OS i Mac OS X. Prosessen er så og si identisk for Windows.

Nedlasting og installasjon av VirtualBox

VirtualBox lastes ned fra virtualbox.org. Installasjonen er helt standard på Mac OS X og Windows. Bruker du en Debian-basert Linux-distribusjon som for eksempel Ubuntu, kan du bruke APT, se virtualbox.org for instruksjoner.

Nedlasting av et imagee

Det er flere måter å sette opp en virtuell maskin med VirtualBox, men det enkleste er å laste ned et såkalt virtual box disk image, en fil med filendelsen .vdi. Bruker du et slikt image slipper du å igjennom noen Linux-installasjonsprosess, da imaget er ferdig satt opp for deg. Du kan finne slike images ved å Google for eksempel "virtual box images". Om du ønsker images av Ubuntu, kan du finne laste ned ulike versjoner herfra. Legg merke til hva som er brukernavn og passord for imaget du laster ned.

Oppsett av virtuell maskin med VirtualBox

  1. Start opp VirtualBox og velg File --> Virtual Media Manager
  2. I vinduet som kommer opp (Fig. 1) velger du 'Add'. Bla deg fram til der du lagret .vdi-filen du har lastet ned og åpne den. Trykk OK for å lukke Virtual Media Manager.
  3. Nå er det på tide å lage selve den virtuelle maskinen. Trykk 'New' i hovedvinduet til VirtualBox (Fig. 2). Trykk 'Next' i vinduet som kommer opp (Fig. 3).
  4. Gi maskinen din et valgfritt navn, og velg hva slags OS du lager en virtuell maskin av (Fig. 4).
  5. Velg så hvor mye minne du vil sette av til den virtuelle maskinen (Fig. 5). Om du virtualiserer Ubuntu bør standarden på 384 MB holde, men om du skal kjøre tyngre programmer bør du nok øke minnet noe. Husk at du må ha igjen minne til verts-OSet, altså bør du maksimalt velge halvparten av din totale minnestørrelse.
  6. I det neste vinduet velger du 'Use existing hard disk' og velger harddisken vi lagde tidligere (Fig. 6). Klikk 'Next' og 'Finish'.
  7. Du kan nå markere maskinen din i menyen til venstre i hovedvinduet og trykke 'Start' (Fig. 7). Maskinen starter opp i et eget vindu. Hvis du vil kjøre maskinen i fullskjermmodus trykker du på 'Host Key' + F. Hvilken knapp som er 'Host Key' står nederst i høyre hjørne.

Det kan hende du må justere en del innstillinger, som tastatur, tid/dato, språk osv.

Personlige verktøy
Navnerom
Varianter
Handlinger
Navigasjon
Kategorier
Programvare
Andre
Translate
Verktøy