# Andmete jagamine &kontact;is IMAP-i abil

## Sissejuhatus

Ma otsisin tükk aega oma väikekontori jaoks PIM-lahendust, mis lubaks andmeid jagada, et ka minu sekretär saaks kasutada minu kontakte, kohtumisi ja muud sellist. Et ma olen &kde; kasutaja, kuulsin Kroupware projektist ja ootasin, kuni see valmib. Aga kui ma nägin, kui keeruline on Kolabi serveri (projekti serveripool) versiooni 1.0 arhitektuur ja seadistamine, loobusin selle kasutamise mõttest ja jäin ootama, et vahest on Kolab 2.0 veidigi lihtsam. Igatahes minu vajaduste jaoks oli Kolab selgelt liiast. Õnneks leidsin aga &kde; Wikis ühe IRC vestluse katke, kus räägiti andmete jagamise võimalusest ilma Kolabit kasutama. Hmm, see tundus huvitav!

Väikese kontori ja väikeste vajaduste jaoks saab panna andmeid jagama &kontact;i, ilma et oleks vaja hakata paigaldama Kolabi serverit või mõnda muud grupitöö taustaporgrammi. See töötab lihtsalt IMAP-serveriga, mille seadistamine on üsna lihtne.

Minu stsenaariumis on kasutusel Debiani ebastabiilne versioon ja &kde; 3.4. Ma pääsen &kontact;ile ja teistele toredatele GNU/Linuxi rakendustele Windowsist ligi Cygwin/X abil ja ootan samal ajal aega, mil Wine projekt pakub lõpuks ometi võimalust kasutada neid väheseid Windowsi programme, mida mul vaja läheb ja millele GNU/Linuxis ei ole asendust. Igatahes praegu on minu sihiks jagada oma kontakte, sündmusi, ülesandeid ja märkmeid enda sekretäriga.

## Mis on IMAP?

Järgnev definitsioon on veidi muudetud kujul pärit e-teatmikust:

> Internet Message Access Protocol ehk interneti sõnumipöördusprotokoll. Protokoll, mis võimaldab kasutajale juurdepääsu e-posti serveris hoitavatele e-kirjadele ja käsitleda neid nii, nagu asuksid nad kasutaja oma arvutis. IMAP võimaldab kirjade kirjutamist, kustutamist, ümbernimetamist, saabunud uute kirjade lugemist jne., kuid ei võimalda kirjade saatmist. Selleks on vajalik eraldi protokoll.

Nii võib seda pidada andmehoidlaks. Selle kasutamiseks on vajalik IMAP-server, näiteks Cyrus, Courier või UW.

## Kolab või IMAP?

Kolab võimaldab jagada andmeid erinevate klientide vahel. Nii saab näiteks sinu sekretär kasutada Outlooki, samal ajal, kui sa ise kasutad &kontact;i.

Sul tule selleks seadistada liides, mis kannab hoolt kasutajate haldamise, e-posti konto seadistuste, tsentraalsete LDAP-i konfiguratsiooniandmete ja aadressiraamatuserveri, rämpsposti ja viiruste filtreerimise, puhkuseskriptide, vaba/hõivatud nimekirjade haldamise, ressursside (ruumid, autod( haldamise, gruppide, postiloendite, kutsete automaatse edastamise &etc; eest.

Kuid esialgne seadistamine võib olla päris raske. Minusuguste algajate jaoks tähendab see väga pikka ja masendavat košmaari ning liiga keerukat pusimist, et kõik üldse kuidagi tööle hakkaks. Sestap on minusugustele palju parem lahendus IMAP.

## IMAP-serveri Cyrus seadistamine

Minu valikuks on Cyrus, mis on ka Kolabi tarkvarakomplekti koosseisus, nii et kui ma kunagi peaksin Kolabile üle minema, on mul vähemalt midagi käpas.

Alustame siis paigaldamise ja seadistamisega!

Võta endale administraatori (`root`) õigused.

    # apt-get install cyrus21-imapd cyrus21-common cyrus21-admin cyrus21-client sasl-bin sasl2-bin
    Installing cyrus21-imapd...Paigaldusprogramm küsib midagi otsimisaadressi kohta, millest ma aru ei saa... Vajutan lihtsalt Enter.

Paigaldusprogramm lõi ka kasutaja `cyrus`, mis paikneb (automaatselt loodud) gruois `sasl`, mis on kõigi cyruse failide omanik. Lõpuks saab käsuga `ps `-A`` näha mõningaid uusi protsesse: `cyrmaster` ja `notifyd`.

Cyruse seadistamise suuremaks probleemiks on autentimine, sest see pole kaugeltki lihtne, mina aga olen alles algaja ega tea just väga hästi, mida ja kuidas teha.

Cyrus võib kasutada erinevaid SASL (Simple Authentication and Security Layer ehk lihtne Autentimis- ja turbekiht) mehhanisme. Vaikimisi on selleks sasldb (see salvestab kasutajanimed ja paroolid SASL salajasse faili `sasldb`), kuid toetatud on ka getpwent, kerberos4, kerberos5, PAM, rimap, shadow ja LDAP.

Et ma ei soovi teistsuguseud kasutajaid/paroole kui need, millega pääseb ligi minu &Linux; masinasse, valin shadow mehhanismi, et Cyrus kasutaks autentimiseks &Linux; paroole.

Selleks tuleb SASL-ile öelda, et paroolide autentimiseks on vaja kasutada meetodit `saslauthd`, ning seejärel panna `saslauthd` kasutama autentimiseks shadow (või getpwent) mehhanismi.

Olgu, hakkame siis peale!

Muuda administraatorina (`root`) kasutaja `cyrus` Linuxi parooli:

    # passwd cyrus

Anna parool, mis sulle meeldib (ja mida sa ka meelde suudad jätta). Antud juhul valime cyruse administraatori parooliks cyrus.

    # vi /etc/imapd.conf

    sasl_pwcheck_method: saslauthd vaikeväärtuse auxprop asemel

eemalda märk `#` rea eest:

    #admins: cyrus

nii saad hallata cyruse sisselogimist kasutajana `cyrus`

    # vi /etc/default/saslauthd

Eemalda kommentaar rea eest:

    # START=yes

(muidu ei käivitu saslauthd arvuti käivitamise ajal isegi siis, kui seda määrab mõni `/etc/rcx.d`!)

ja `MECHANISMS="pam"` asemel kirjuta `MECHANISMS="shadow"`, et algkäivituse ajal käivitataks käsk `saslauthd` `-a `shadow``.

Kui oled redaktorist väljunud, käivita sasl ja cyrus uuesti.

Testime IMAP-it:

    su cyrus
    $ imtest -m login -p imap localhost

Sinu käest oodatakse kasutaja `cyrus` parooli, nii et sisesta see nüüd.

Kui kasutaja `cyrus` autenditakse, ilmuvad järgmised read:

    S: L01 OK User logged in
    Authenticated.

Väljumiseks kirjuta `. logout` (&ie; punkt tühik logout).

Nüüd lisa kasutaja `groupware` ja määra talle tavalisi süsteemi tööriistu kasutades parool. See kasutaja peab olema privileegideta grupis, näiteks `nobody` ning talle pole vaja shelli ega kodukataloogi.

Nüüd tuleb luua kasutaja ja IMAP ka cyruses:

    # cyradm --user cyrus localhost
    pärast administraatorist kasutaja cyrus parooli sisestamist näed viipa localhost>
    localhost> cm user.groupware
    localhost> lm näitab äsja loodud postkasti
    user.groupware (\HasNoChildren))
    localhost> quit

Saadaolevaid käske näeb käsuga ``help``.

Seda, mis toimus, saad kontrollida nii:

    # 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

Nüüd saad luua ühenduse IMAP-kliendiga kasutajana `groupware` ning näed sisenevate kirjade kausta (`INBOX`).

IMAP protokollis on postkasti `INBOX` valimine omamoodi maagiline sõna, alias ülaltoodud kataloogistruktuurile. Kasutaja näeb kirjet `INBOX`, IMAP aga seondab selle kataloogi- ja failistruktuuris asukohaga `/var/spool/cyrus/mail/...`

## &kontact;i klientide seadistamine

Ma võtan oma PC-st GNU/Linuxi serveriga (omamoodi "must kast" ilma monitori ja klaviatuurita) ühendust kahest &Windows; 2000 PC-st Cygwin/X vahendusel, kasutades neid X Window serverina (lähitulevikus loodan asendada mõlemad mini-itx õhukeste klientidga, mis kasutavad LTSP-d). Selle seadistuse korral kasutab iga kasutaja &kontact;i samas masinas, kuhu on paigaldatud töötav Cyrus (localhost).

Et &kontact; töötaks IMAP-iga, tuleb ette võtta järgmised sammud:

1. Luua IMAP-konto Cyruses libakasutajale `groupware` (juba tehtud!)

2. Luua ja seadistada IMAP-konto &kmail;is sellele kasutajale sisselogimiseks

3. Kasutada KDE ressursse, et &kontact;i komponendid saaksid kasutada andmeid, mida nad hangivad IMAP-i allikast

4. Lülitada sisse grupitöö kasutamise võimalus ja luua vastavad IMAP `INBOX`'i alamkaustad (kui neid veel pole)

5. Nautida &kontact;i ja andmete jagamist Cyruse IMAP-iga

Logi selleks &kde;sse sisse esimene reaalse kasutaja kontoga, kellele tahad anda grupitöö võimaluse.

Loome nüüd &kmail;is IMAP-konto.

Käivita &kontact; ja vali E-post (&kmail;i komponent). Vali menüüst Seadistused KMaili seadistamine Kontod Vastuvõtmine ja klõpsa nupule Lisa... Sinu käest päritakse, millist tüüpi konto luua. Vali Lahutatud IMAP (mitte lihtsalt IMAP). Seejärel sisesta kaardil Üldine järgmised andmed:

Konto nimi: `office_gwdata`

- Nimi, mida kasutatakse kausta local jaoks, mis osutab antud IMAP-kontole.

Kasutajanimi: `groupware`

- Cyruse kasutaja, kelle oleme valinud kõigi oma andmete omanikuks

Parool:

- Kasutaja `groupware` parool.

Server: `localhost`

- Pane tähele, et meie näites töötab &kontact;i klient samas masinas IMAP-serveriga

Port: `143`

- Vaikeväärtus

Märgi ära kast IMAP parool salvestatakse, nii ei küsita sinu käest seda &kontact;i järgmise kasutamise ajal. Märgi ära ka kast Uute kirjade regulaarne kontrollimne ja määra aeg minutites.

Sellega lõime lahutatud IMAP-i konto. See tähendab, et grupitöö andmete koopia salvestatakse kohalikult kliendile (kodukataloogi) ja seda sünkroniseeritakse alati, kui klient ühenduse loob. See tundub esmapilgul vähetõhus, sest andmeid dubleeritakse sel moel lausa mitmekordselt (&ie; kui sul on 10 kasutajad, kes tarvitavad &kontact;i, on sul 10+1 korda andmeid), kuid see on ainus viis, kuidas asjad kiiresti käivad, sest igal ühendusel peab &kontact; tõmbama kõik andmed ning &korganizer; ja &aadressiraamat; neid tõlgendama. Kui kasutad lahutatud IMAP-it. salvestatakse andmed kohapeal ning saadetakse ainult delta (&ie; andmed, mida on muudetud).

Teiselt poolt aga, kui kasutajatel töötab &korganizer; samas masinas, kus töötab ka IMAP-server, tundub mõistlik tarvitada ruumi kokkuhoidmiseks IMAP-it (seda nimetatakse ka ühendatud IMAP-iks), sest sel juhul ei ole liikumiskiirus probleemiks. Paraku ei ole see antud juhul kasutatav, sest &kontact; ei uuenda automaatselt kausta Kalender ühendatud IMAP-is, nii et sa ei pruugi teada saada, kui keegi mõne sündmuse lisab (sul tuleb käsitsi lülituda &kmail;ile ja klõpsata kaustal Kalender). Lisaks näed alguses, kui kaustu Kalender loetakse, et andmete uuendamine käib ikka väga aeglaselt.

Nüüd tuleb panna &kontact; kasutama IMAP-it oma erinevate komponentide andmeallikana. Vali &kmenu;st Käivita käsk ja anna ilmuvas dialoogis käsk ``tdecmshell tderesources``. Vali rippmenüüst Kontaktid, klõpsa nupule Lisa... ja vali Aadressiraamat IMAP-serveris (KMaili vahendusel). Seejärel vali ilmunud uus rida ja klõpsa nupule Kasuta standardressursina. Tee sedasama kirjetega Kalender ja Märkmed.

Nüüd tuleb &kmail;is (ja seeläbi terves &kontact;is) sisse lülitada grupitöö kasutamise võimalus:

1. Vali menüüst Seadistused KMaili seadistamine Muud Grupitöö

2. Märgi kast IMAP ressursside kasutamise lubamine

3. Vali grupitöö kaustade keeleks inglise keel (seda juhul, kui sul on juba kaustu IMAP-serveris, mis on loodud mõne teise programmiga, mis kasutab mõnda muud keelt)

4. Nüüd võta ette Ressurssikaustad paiknevad kaustas ja vali kausta office_gwdata alamkaust Inbox

   Jäta kast Grupitöö kaustad peidetakse praegu märkimata, et näeksid, mis toimub. Hiljem saad dialoogi naasta ja selle märkida, kui oled aru saanud, mis toimus.

5. Kui klõpsad OK, näed teadet: `&kmail; loob nüüd soovitud grupitöökaustad alamkaustadena kaustas Inbox`

   Kui sa seda ei soovi, klõpsa Loobu ning IMAP ressurss jääb mitteaktiivseks. Nii et klõpsa pigem Jätka (see juhtub ainult esimesel korral esimese reaalse kasutajaga). Näed kohe, et &kmail; kaustapuusse luuakse office_gwdata Inbox alla järgmised kaustad:

   - Kalender
   - Kontaktid
   - Märkmed
   - Ülesanded
   - Päevik

   Nüüd võid anda käsu:

       # ls -l /var/spool/cyrus/mail/g/user/groupware/
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Kalender
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Kontaktid
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Päevik
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Märkmed
       drwx------ 2 cyrus mail 144 Oct 31 16:36 Ülesanded
       -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

   Nagu näed, ei ole office_gwdata Inbox salvestatud mitte &kontact;i kasutaja kodukataloogi, vaid IMAP-i kasutaja `groupware` kataloogi.

Nüüd on &kontact; grupitööks valmis. Kui &kmail;i IMAP-konto tüübiks oli lahutatud, näitab kalendrirakenduse ressursiaken kirjet IMAP ressurss kolme alamkirjega, mis osutavad kohalikele failidele. Rakendus Kontaktid aga ei näita kirje IMAP ressurss mingeid alamkirjeid.

Nüüd võid logida &kde;sse sisse mõne teise kasutajanime alla ja seadistada tema &kontact;i kliendi samamoodi:

1. Ava &kontact; ja lisa e-posti komponendis IMAP-konto, määrates serveriks, arvuti, kus töötab Cyruse server (minu näites on selleks `192.168.1.3`).

   Märgi kindlasti ära kast Uute kirjade regulaarne kontrollimine ja määra minutites intervall. Dialoogi sulgedes ei küsita sinu käest alamkaustade loomise kohta (sest need on juba IMAP-serveris) ning sa näed neid kohe kaustapuus.

2. Lülita sisse grupitöö kasutamise võimalus, et saaksid salvestada andmeid IMAP-serverisse.

Pea meeles, et lahutatud IMAP-i korral saadetakse andmed kliendilt IMAP-serverisse ainult siis, kui klient sellega uute kirjade kontrollimiseks ühenduse loob. Nii et kui sinu &kontact;i klientidel on kirjade regulaarse kontrollimise intervalliks määratud näiteks 5 minutit, siis kõige halvemal juhul saavad nad sündmustest teada 10-minutilise viivitusega.

## Ainult lugemisõiguse andmine

Arvesta, et mulle on väidetud, et märkmete IMAP-teostus &kontact;is on enne versiooni 1.01 katki, nii et alljärgnev sel juhul ei kehti. Kui sa neid siiski kasutada soovid, pead tarvitama eespool tutvustatud seadistust.

Eelnevas seadistuses oli meil üks libakasutaja `groupware`, mida kasutasid kõik reaalsed &kontact;i kasutajad (&ie; `tony`, `rohn`, `amanda` &etc;) antud kasutaja nime ja parooliga IMAP-kontos. Sel moel on aga igal reaalsel kasutajal teistega ühesugused lugemis- ja kirjutamisõigused, sest kõik võtavad just ühe ja sellesama kasutajana `groupware` ühendust IMAP-serveriga.

Mõningate kasutajate ligipääsu piiramiseks (reeglina neile ainult lugemisõiguse võimaldamiseks) võib kasutada ACL-e (Access Control List ehk ligipääsunimekiri).

Vali &kmail;is office_gwdata sisenevate kirjade kausta mõni alamkaust, näiteks Kalender ja tee selle nimel klõps hiire parema nupuga. Vali Omadused Ligipääsukontroll. Siin saad määrata kasutajad, kes antud kaustale ligi pääsevad, ning sellegi, mida nad selles teha tohivad.

Lihtsalt eksperimenteerimise huvides anname õiguse Kõik kasutajale `mary`

Cyruse tasandil (PC-s, kus töötab IMAP-server cyrus, mis kasutab oma cyruse tööriistu) tuleb meil kõigepealt lisada kasutaja `mary`, et IMAP teda üldse tunnustaks, milleks loome talle IMAP-i kausta.

Seejärel logime GNU/Linuxisse kasutajana `mary` ja avame &kontact;i. Samamoodi nagu eespool näidatud, loome IMAP-konto &kmail;is samade andmetega, kuid ühe konkreetse kasutaja jaoks (libakasutaja `groupware` ja tema parooli asemel kasutame nime `mary` ja tema parooli.

Nüüd näeme &kmail;i kaustapuus sellist struktuuri: office_gwdata kasutaja groupware Kalender ja Ülesanded. Kontrolli kirju (Fail Kontrolli posti) ning office_gwdata alla tekib ka kaust sisenevad.

Nüüd lülita sisse grupitöö kasutamise võimalus ning anna kastis Ressurssikaustad paiknevad kaustas sisenevad, mis on office_gwdata alamkaust.

Nüüd on office_gwdata all kaks haru:

1. sisenevad, kus on alamkaustad Kalender, Kontaktid, Märkmed, Ülesanded ja Päevik, mis on salvestatud `mary` IMAP-kausta IMAP-serveris

2. kasutaja alamkaustaga groupware ja alamkaustadega, millele `mary` on saanud ligipääsuõiguse (antud juhul Kalendrid ja Ülesanded)

Klõpsa &HPN;ga kasutaja kaustale Kalender ja kontrolli, kas selle tüüp (sisu) on ikka kalender (kui pole, siis määra see) ja kas kasutaja kausta Ülesanded tüübiks on ülesanded.

Nüüd on kalendris kaks IMAP-ressurssi, kuhu kirjutada, nii et kui lood uue sündmuse, küsitakse sinu käest, millist neist kasutada (või kui jätad kasutamiseks ka kohaliku ressursi, on sul neid isegi kolm!).

Pead liikuma kalendris all vasakul asuvasse väiksesse aknasse, mis näitab saadaolevaid ressursse ning eemaldama märke nende eest, mis sinu tahtmist mööda ei pea osutama asukohale .groupware.directory (vaata ressursside asukohanimetuse lõppu).

## Autorid

Mina olen ainult algaja ning eelnevgi jutt nõudis minu käest ainult aega ja tahet. Teadmiste eest pean aga tänama mitmeid Freenode'i kanalitel tegutsevaid isikuid, kes ilmutasid suurt asjatundlikkust, kannatlikkust ja abivalmidust.

## Erilist tänu väärivad:

- Cyruse IMAP-i puudutavate osade eest kanalil #cyrus:

  - [protagonist] Andy Morgan morgan@orst.edu

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

- &kontact;i puudutavate osade eest kanalil #kontact:

  - [till] Till Adam adam@kde.org

  - [dfaure] David Faure faure@kde.org

  - [mdouhan] Matt Douhan matt@fruitsalad.org

Suur tänu teile kõigile!

Ah jaa, ja mina olen siis [markit] Marco Menardi mmenaz@mail.com

## Lisalugemist

## Viited

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

- &kontact;i veebilehekülg: http://www.kontact.org

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

- &kde; kogukonna Wiki: http://wiki.kde.org

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

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

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