# Del data med &kontact; via IMAP

## Indledning

Jeg ledte i lang tid efter en løsning på problemet med håndtering af personlig information for mit lille kontor, som skulle lade mig dele data, så min sekretær og jeg ville kunne dele kontakter, møder og så videre. Eftersom jeg er en &kde;-brugere, havde jeg hørt tale om Kroupware-projektet, og ventede på at det skulle blive færdigt. Men da jeg så hvor kompliceret arkitekturen og indstillingen af Kolab serveren 1.0 (projektets serverside) var, gav jeg op for at vente på den nemmere Kolab 2.0. Under alle omstændigheder var Kolab klart for meget for mine behov. Heldigt nok fandt jeg en kort IRC-konversation på &kde;'s netjournal som handlede om at dele data uden infrastrukturen i Kolab... Min sandten, interessant!

For små kontorer og behov, kan du lade &kontact; bruge delte data uden at behøve at installere Kolab-serveren eller en anden groupware-programserver. Det kan virke kun med en IMAP-server, som er nem at sætte op.

Mit scenario er en server med Debians ustabile version og &kde; 3.3.1. Jeg har adgang til &kontact; og andre vidunderlige GNU/Linux-programmer fra Windows med Cygwin/X, mens jeg venter på Wine-projektet for at kunne køre de sidste Windows-programmer jeg behøver (som ikke er tilgængelige under GNU/Linux). Jeg vil dele kontakter, begivenheder, aktiviteter og notitser med min sekretær.

## Hvad er IMAP

Denne definition kommer fra ComputerUser.com High-Tech Dictionary:

> Internet Message Access Protocol. En protokol som gør det muligt for en bruger at udføre visse funktioner for elektronisk post på en fjernserver i stedet for på en lokal maskine. Via IMAP kan brugeren oprette, fjerne eller skifte navn på brevmapper, hente nye breve, fjerne breve og udføre søgefunktioner for breve. En separat protokol kræves for at sende breve. Kaldes også for Internet Mail Access Protocol.

Det kan altså opfattes som en form af dataopbevaring. For at bruge det behøver du en IMAP-server, såsom Cyrus, Courier eller UW.

## Kolab eller IMAP?

Kolab giver mulighed for at dele data mellem forskellige klienter. Det gør det for eksempel muligt for din sekretær at bruge Outlook mens du bruger &kontact;.

Du får en indstillingsgrænseflade som håndterer brugere, indstilling af e-mail-konto, en central LDAP-server for indstillingsdata og adressebog, filtrering af spam og virus, ferie-scripter, håndtering af lister med ledig-optaget, ressourcehåndtering (rum, biler), grupper, distributionslister, automatisk indbydelseshåndtering, etc.

Men det kan forårsage indledende indstillingsproblemer. For en nybegynder som jeg, betyder det et langt frustrerende mareridt, og for meget kompleksitet at håndtere når det omsider virker. Så, nej tak, jeg går til det enkle IMAP.

## Hvordan indstiller man IMAP-serveren Cyrus

Mit valg er Cyrus, som er en del af et sæt programmer i Kolab, så hvis jeg går videre til Kolab i fremtiden, så er jeg i det mindste bekendt med det.

Lad os begynde installationen og indstillingen!

Log på som `root`.

    # apt-get install cyrus21-imapd cyrus21-common cyrus21-admin cyrus21-client sasl-bin sasl2-bin
    Installing cyrus21-imapd... Installationen spørger om noget jeg ikke forstår om en søgeadresse...
    Jeg trykkede blot på Enter..

Installationen laver også brugeren `cyrus` som er i gruppen `sasl` (som laves automatisk), som er ejeren af alle Cyrus filer. Tilsidst kan du finde de nye processer `cyrmaster` og `notifyd` med `ps `-A``.

Det egentlige problem med at indstille Cyrus er godkendelseskontrollen, kun fordi det ikke er trivielt og at jeg er en nybegynder, med begrænset kundskab om hvad jeg gør.

Cyrus kan bruge forskellige SASL-mekanismer (Simple Authentication and Security Layer), hvor standarden er sasldb (den opbevarer brugernavne og kodeord i den hemmelige SASL-fil `sasldb`), men også getpwent, kerberos4, kerberos5, PAM, rimap, shadow og LDAP understøttes.

Eftersom jeg ikke vil definere brugere og kodeord som adskiller sig fra dem som jeg bruger til adgang til min &Linux;-maskine, vælger jeg mekanismen shadow, så Cyrus bruger &Linux; kodeord til godkendelseskontrol.

For at gøre det skal man bede SASL om at bruge `saslauthd` som metode for godkendelseskontrol af kodeord, og derefter indstille `saslauthd` til at bruge shadow (eller getpwent) som godkendelseskontrolmekanisme.

O.k., lad os begynde!

Som `root`, ændr Linux kodeord for brugeren `cyrus`:

    # passwd cyrus

Indtast kodeordet du vil have (og kan huske). I dette eksemplet bruger vi cyrus som administratorkodeord for cyrus.

    # vi /etc/imapd.conf

    sasl_pwcheck_method: saslauthd i stedet standarden auxprop

fjern tegnet `#` fra linjen:

    #admins: cyrus

på denne måde kan du administrere cyrus, ved at logge på som brugeren `cyrus`. (Sikke en fantasi jeg har!)

    # vi /etc/default/saslauthd

Fjern kommentaren fra linjen:

    # START=yes

(ellers starter saslauthd ikke når maskinen startes, også selv om den refereres til i en `/etc/rcx.d`!)

og skriv i stedet for `MECHANISMS="pam"` i `MECHANISMS="shadow"`. På denne måde køres kommandoen `saslauthd` `-a `shadow`` når maskinen startes.

Når du har afsluttet editoren, genstart sasl og cyrus.

For at teste IMAP:

    su cyrus
    $ imtest -m login -p imap localhost

Du bliver bedt om (brugerens) kodeord for `cyrus`, så skriv det.

Hvis godkendelseskontrollen for brugeren `cyrus` lykkes, vises følgende linjer:

    S: L01 OK User logged in
    Authenticated.

For at afslutte, skriv `. logout` (dvs. punktum mellemrum logout)

Tilføj nu en bruger som hedder `groupware` og angive et kodeord for den, med de almindelige systemværktøjer. Den skal være i en gruppe uden privilegier, såsom `nobody` og kræver ikke en indlogningskal eller en hjemmemappe.

Nu skal jeg også oprette brugeren og IMAP i cyrus:

    # cyradm --user cyrus localhost
    efter at have skrevet kodeord for administratorsbrugeren cyrus, får du promptern localhost>
    localhost> cm user.groupware
    localhost> lm  lister brevmapperne du netop oprettede
    user.groupware(\HasNoChildren))
    localhost> quit

Du kan skrive ``help`` for at se en liste med tilgængelige kommandoer.

Du kan kontrollere hvad der er sket med:

    # ls -l /var/spool/cyrus/mail/g/user/groupware
    total 12
    -rw------- 1 cyrus mail          4 Oct 29 20:55 cyrus.cache
    -rw------- 1 cyrus mail 155 Oct 29 20:55 cyrus.header
    -rw------- 1 cyrus mail 76 Oct 29 20:55 cyrus.index

Nu skulle du kunne forbinde med en IMAP-klient som brugeren `groupware` og se `INBOX`.

At vælge brevmappen `INBOX` er et magisk ord i IMAP-protokollen, en slags alias for mappestrukturen ovenfor. Klienten ser `INBOX`, og IMAP-serveren afbilder den på mappe- og filstrukturen i `/var/spool/cyrus/mail/...`.

## Hvordan indstiller man &kontact;-klienter

Jeg forbinder til min GNU/Linux kontorsserver (en slags "sort kasse" uden skærm og tastatur) fra to &Windows; 2000 maskiner med Cygwin/X, og bruger dem som X-Window servere (i en nær fremtid håber jeg at kunne erstatte begge med to Mini-itx tynde klienter som bruger LTSP). Med denne indstilling, kører alle brugere &kontact; på samme maskine som Cyrus er installeret og kører (localhost).

For at få &kontact; til at virke med IMAP, skal følgende skridt udføres:

1. Opret en IMAP-konto på Cyrus for pseudobrugeren `groupware` (allerede tidligere gjort)

2. Opret og indstil en IMAP-konto i &kmail; for at logge på som brugeren

3. Brug kresources til at få &kontact;-komponenter til at virke med data som tages fra en IMAP-kilde

4. Aktivér groupwarefunktioner og opret tilsvarende undermapper for denne IMAP `INBOX` (hvis det ikke allerede er gjort)

5. Nyd af &kontact; og del data via Cyrus IMAP

Log altså på &kde; med den første rigtige brugerkonto som du vil give groupwarefunktioner.

Lad os oprette IMAP-kontoen i &kmail;.

Kør &kontact; og vælg Brev (&kmail;-komponenten). Vælg Indstillinger Indstil Kmail Konti Modtag i menuen. Klik på knappen Tilføj.... Du bliver bedt om typen af e-mail-konto, vælg Ikke forbundet IMAP (ikke kun IMAP). Skriv derefter følgende data ind under fanebladet Generelt:

Kontonavn: `kontor`

- Et navn som bruges til den lokale mappe som peger på IMAP-kontoen.

Brugernavn: `groupware`

- Brugeren i Cyrus som vi har valgt som ejer af alle kontordata

Kodeord:

- Kodeordet for brugeren `groupware`.

Vært: `localhost`

- Husk at i vort eksempel kører &kontact;-klienten på samme maskine som IMAP-serveren

Port: `143`

- Standarden

Afkryds opbevar IMAP-kodeord så du ikke bliver bedt om det næste gang du kører &kontact;. Markér Aktivér kontrol af nye breve med jævne mellemrum og indstil en værdi i minutter.

Bemærk at vi har markeret kontotypen Ikke forbundet IMAP. Dette har den virkning at groupwareprogramdata opbevares lokalt på klienten (under hjemnemappen), og at det synkroniseres hver gang klienten forbinder. Dette virker meget ineffektivt, eftersom data fordobles mange gange (dvs. hvis du har 10 brugere som udnytter &kontact;, har du 10+1 mængder data), men det er den eneste måde at få alt til at gå hurtigt, eftersom ved hver forbindelse skal &kontact; hente alle data og lade &korganizer; og &kaddressbook; tolke dem. Hvis du bruger ikke forbundet IMAP opbevares data lokalt, og kun delta (dvs data som er ændret) sendes.

På den anden side, hvis brugerne kører &korganizer; på samme maskine som IMAP-serveren kører på, virker det rimeligt at bruge IMAP (som kaldes forbundet IMAP) for at spare plads, eftersom overføringshastigheden ikke bør være et problem. Men desværre virker det ikke, eftersom &kontact; ikke automatisk opdaterer mappen Kalender med forbundet IMAP, så du ser ingen opdateringer når nogen tilføjer begivenheder (du skal manuelt skifte til programmet &kmail; og klikke på mappen Kalender). Desuden, når mappen Kalender læses ved start, vil du måske se et enormt flimmer og langsom opdatering af data.

Nu skal vi bede &kontact; om at bruge IMAP som datakilde for de forskellige komponenter. Vælg Kør kommando i K-menuen, og kør ``kcmshell kresources``. Vælg contact i dropned-feltet, klikke derefter på knappen Tilføj... og vælg Adressebog på IMAP-server via Kmail. Markér derefter den nye linje og klik på knappen Brug som standard. Gør det samme for calendar og notes.

Nu skal vi aktivere &kmail;s groupwarefunktion (og som en konsekvens hele &kontact;):

1. Vælg Opsætning Indstil Kmail Diverse Groupware i menuen

2. Markér Aktivér IMAP-ressourcefunktion

3. Vælg Engelsk som Sprog for groupware-mapper (dette gøres i tilfælde af du allerede har mapper på IMAP-serveren som er oprettede af et andet program med et andet sprog).

4. Gå nu til Ressourcemapper er i konto og vælg undermappen Indbakke i mappen kontor.

   Lad Skjul groupware-mapper umarkeret indtil videre, så vi kan se hvad der sker. Du kan komma tilbage hertil og markere det så snart alt er klart.

5. Når du klikker på O.k. vises: `&kmail; laver nu nødvendige mapper for IMAP-ressourcen som undermapper til Indbakke`

   Hvis du ikke vil gøre dette, så klik på Nej, så deaktiveres IMAP-ressourcen. Klik på Ja (dette sker kun første gang med den første rigtige bruger). Du ser med det samme at i &kmail;s mappetræ, under kontor Indbakke er følgende undermapper lavet:

   - Kalender
   - Kontakter
   - Notitser
   - Opgaver
   - Journal

   hvis du nu skriver:

       # ls -l /var/spool/cyrus/mail/g/user/groupware/
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Calendar
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Contacts
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Journal
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Notes
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Tasks
       -rw------- 1 cyrus mail      4 Oct 31 15:28 cyrus.cache
       -rw------- 1 cyrus mail 155 Oct 29 20:55 cyrus.header
       -rw------- 1 cyrus mail 76 Oct 31 15:28 cyrus.index

   Som du ser er kontor/Inkorg ikke gemt lokalt i &kontact;s nuværende brugers hjemmemappe, men i mapperne hos IMAP brugeren `groupware`.

Nu er &kontact; klar til at arbejde og opbevare data der. I kalenderprogrammet, hvis &kmail; IMAP-kontoen har typen ikke forbundet, skal vinduet Kalender vise objektet IMAP-ressource med tre underobjekter, som er søgestier til filer i den lokale hjemmemappen. I stedet viser Kontakter-programmet underobjekter nedenfor IMAP-ressource.

Du kan nu logge på &kde; med et andet brugernavn og indstelle in hans eller hendes &kontact;-klient på lignende måde:

1. Åbn &kontact; og tilføj en IMAP-konto i komponenten Brev, som angiver maskinen hvor Cyrus-serveren kører som vært (i mit tilfælde: `192.168.1.3`).

   Husk at markere Aktivér kontrol af nye breve med jævne mellemrum og indstelle en værdi i minutter. Når du bekræfter, bliver du ikke bedt om at oprette undermapper (eftersom de findes på IMAP-serveren), og du ser dem i mappetræet.

2. Aktivér groupware-funktioner for at kunne gemme data på IMAP-serveren.

Vær klar over at med ikke forbunder IMAP overføres data kun fra en klient til IMAP-serveren når klienterne forbinder for at kontrollere post. Så hvis du har &kontact;-klienter med kontrol af nye brev med jævne mellemrum på for eksempel 5 minutter, har du i værste tilfælde en 10 minutters forsinkelse mellem tiden når begivenheden laves og når den vises for andre brugere.

## Hvordan man indstiller læseadgang

Vær klar over at det er bekræftet at IMAP-implementeringen af Notitser i &kontact; før end version 1.01 er fejlagtig, så denne indstilling virker ikke for dem. Hvis du ønsker at bruge dem, skal du bruge den foregående indstilling.

I foregående indstilling har vi samme pseudobruger som hedder `groupware`, som bruges af alle rigtige &kontact;-brugere (dvs. `tony`, `rohn`, `amanda`, etc.) via IMAP-kontoen med dens indlogning og kodeord. Men på denne måde har alle rigtige brugere samme læse- og skriverettigheder som andre, eftersom alle forbinder som brugeren `groupware` til IMAP-serveren.

For at begrænse adgang for visse brugere (typisk for kun at give læsadgang), kan vi bruge ACL (Access Control Lists).

Vælg en undermappe til kontor i &kmail;, for eksempel Kalender, og højreklik med musen. Vælg fanebladet Egenskaber Adgangkontroll. Her kan du indtaste brugere som du vil give adgang til mappen og hvad de kan gøre.

Bare for at lave et eksperiment med at skifte begivenheder, giver vi Alle rettigheder til brugeren `anna`.

På niveauet cyrus (på maskinen som kører IMAP-serveren cyrus, med værktøjet Cyrus), skal vi først tilføje brugeren `anna`, så det bliver en bruger som genkendes af IMAP, og oprette en IMAP-mappe til hende.

Derefter logger vi på GNU/Linux som `anna` og starter &kontact;. Som tidligere vist, indstiller vi en IMAP-konto i &kmail; med samme data men for brugeren (i stedet for pseudobrugeren `groupware` og dets kodeord, bruger vi `anna` og hendes kodeord).

I &kmail;s mappetræ ser du følgende struktur denne gang: kontor brugere groupware Kalender og Aktiviteter. Kontrollér indgangen (Fil Kontrollér post) så har du også en Indbakke under kontor.

Aktivér nu &kmail;s groupware-funktionalitet, og skriv Indbakke som er en undermappe til kontor for Ressourcemapper er undermapper af.

Aktivér nu &kmail;s groupware-funktionalitet, og skriv Indbakke som er en undermappe til kontor for Ressoursmapper er undermapper af.

Nu har du to mappegrene under kontor:

1. Indbakke med Kalender, Kontakter, Notitser, Opgaver og Journaler, som gemmes under `anna` i IMAP-mappen på IMAP-serveren.

2. bruger med undermappen groupware og undermapperne som `anna` har adgang til (i dette eksempel, Kalender og Opgaver)

Højreklik på bruger Kalender og kontrollér om den har typen Kalender (hvis ikke, ændres den til det), og desuden om bruger Opgaver har typen Opgaver.

I Kalender har du nu to tilgængelige IMAP-ressourcer at skrive til, så hvis du laver en ny begivenhed, bliver du spurgt hvilken der skal bruges (og hvis du lod den lokale ressource være tilgængelig, har du tre).

Du skal gå til det lille vindue nede til venstre i Kalenderen, det som viser tilgængelige ressourcer, og afmarkere dem som ikke peger på søgestien .groupware.directory (kig i slutningen af hver ressourcesøgesti).

## Medvirkende

Jeg er en nybegynder, og har kun bidraget til denne guide med min tid og vilje. For kundskaberne skal jeg takke nogle personer i Freenode-kanaler for deres kompetence, tålmodighed og hjælpsomhed.

## Særlig tak til:

- For Cyrus IMAP delen i kanalen #cyrus:

  - [protagonist] Andy Morgan morgan@orst.edu

  - [plixed] Okke Timm okke.timm@web.de

- For &kontact; delen i kanalen #kontact:

  - [till] Till Adam adam@kde.org

  - [dfaure] David Faure faure@kde.org

  - [mdouhan] Matt Douhan matt@fruitsalad.org

Mange tak allesammen!

Ja, og så migselv: [markit] Marco Menardi mmenaz@mail.com

## Yderligere litteratur

## Reference

- KDE: http://www.kde.org

- &kontact;s hjemmeside: http://www.kontact.org

- Kroupware-projektet http://www.kroupware.org

- &kde;-fællesskabets net-journal: http://wiki.kde.org

- Wine-projektet http://www.winehq.org

- Cygwin/X-projektet http://x.cygwin.com

- LTSP-projektet http://www.ltsp.org