Marko
Menardi (Marco Menardi)
gnu@kde.org
Dragan
Pantelić

    falcon-10@gmx.de

prevod

# Deljenje podataka Kontactom preko IMAP‑a

## Uvod

Za moju malu kancelariju dugo sam tražio PIM rešenje koje bi mi omogućilo deljenje podataka, da moja sekretarica i ja možemo da delimo kontakte, sastanke i sl. Budući korisnik KDE‑a, čuo sam o projektu Kroupware, i čekam njegovo dovršenje. Ali, kada sam video koliko je komplikovana arhitektura i postavljanje Kolabovog servera 1.0 (serverska strana projekta), odustao sam, čekajući lakši za razmeštanje Kolab 2.0. U svakom slučaju, mogućnosti Kolaba bile su očigledno preobimne za moje potrebe. Srećom, našao sam na vikiju KDE‑a deo IRC razgovora u kojem se govorilo o deljenju podataka bez infrastrukture Kolaba... zanimljivo!

Za male kancelarije i potrebe, možete učiniti da Kontact koristi deljenje podataka bez potrebe za instaliranjem Kolabovog servera ili druge grupverske pozadine. Može da radi samo sa IMAP serverom, koji se lako dâ postaviti.

Moj scenario je server sa Debianom nestabilnim i KDE‑om 3.4. Kontactu i ostalim izvanrednim programima sa GNU/Linuxa pristupam iz Windowsa putem Cygwina/X, dok čekam da projekat Wine bude u stanju da pokrene i poslednje windows programe koji mi trebaju (a koji nisu raspoloživi pod GNU/Linuxom). Želim da delim kontakte, događaje, obaveze i beleške sa svojom sekretaricom.

## Šta je IMAP?

This definition is from the ComputerUser.com High-Tech Dictionary:

> Internet Message Access Protocol. A protocol that allows a user to perform certain electronic mail functions on a remote server rather than on a local computer. Through IMAP the user can create, delete, or rename mailboxes; get new messages; delete messages; and perform search functions on mail. A separate protocol is required for sending mail. Also called Internet Mail Access Protocol.

Dakle, može se shvatiti kao skladište podataka. Za korišćenje vam treba IMAP server, kao što su Cyrus, Courier ili UW.

## Kolab ili IMAP?

Kolab donosi mogućnost deljenja podataka između različitih klijenata. To omogućava vašoj sekretarici da koristi Outlook, dok vi, na primer, koristite Kontact.

Imaćete postavno sučelje kojim se upravlja korisnicima, postavljanje poštanskog naloga, centralni LDAP server za postavne podatke i adresar, filtriranje spama i virusa, skripte za godišnje odmore, rukovanje slobodno-zauzetim, rukovanje resursima (prostorije, automobili), grupama, distribucionim listama, automatsko rukovanje pozivnicama, itd.

No, ovo može prouzrokovati teškoće u početnoj postavi. Za novajliju poput mene to znači noćnu moru, i previše složenosti u upravljanju čak i kada napokon sve proradi. Dakle, ne hvala, držaću se jednostavnog IMAP‑a.

## Kako postaviti IMAP server Cyrus

Moj izbor pada na Cyrus, deo softverskog paketa Kolab, pa ako ću se već okrenuti Kolabu u budućnosti, barem ću ga ovim upoznati.

Pokrenimo instalaciju i postavu!

Postanimo root.

    # apt-get install cyrus21-imapd cyrus21-common cyrus21-admin cyrus21-client sasl-bin sasl2-bin
    Installing cyrus21-imapd... Instalator pita nešto o adresi za pretragu, što nisam razumeo... Jednostavno pritisnuh Enter.

Instalator je takođe stvorio korisnika cyrus koji je u (automatski stvorenoj) grupi sasl, koja je „vlasni“ svih Cyrusovih fajlova. Konačno, naredbom `ps`-A`` možete naći nove procese: `cyrmaster` i `notifyd`.

Pravi problem pri postavljanju Cyrusa jeste autentifikacija, zato što nije trivijalna, a ja sam početnik sa ograničenim znanjem o ovome što radim.

Cyrus može da koristi razne mehanizme SASL‑a (sloj za jednostavnu autentifikaciju i bezbednost), gde je podrazumevani `sasldb` (skladišti korisnička imena i lozinke u fajlu SASL tajni `sasldb`), ali su podržani i `getpwent`, Kerberos4, Kerberos5, PAM, `rimap`, `shadow` i LDAP.

Pošto ne želim da definišem korisnike i lozinke različite od onih koji pristupaju mom računaru pod Linuxom, biram mehanizam fajla `shadow`, tako da Cyrus koristi sistemske lozinke za autentifikovanje.

Da bismo ovo uradili, treba da kažemo SASL‑u da koristi naredbu `saslauthd` kao metod autentifikacije lozinki, a zatim naredbi `saslauthd` da koristi `shadow` (ili `getpwent`) kao mehanizam autentifikacije.

U redu! Krenimo!

Kao korisnik root, izmenite sistemsku lozinku korisnika cyrus:

    # passwd cyrus

Unesite željenu lozinku (koju ćete lako zapamtiti), za ovaj primer to neka bude `cyrus`, kao administratorsku lozinku za Cyrus.

    # vi/etc/imapd.conf

    sasl_pwcheck_method: saslauthd  umesto podrazumevanog auxprop

uklonite primedbu `#` iz reda:

    #admins: cyrus

ovako možete upravljati Cyrusom tako što se prijavite kao korisnik cyrus (ala mi je zamisao!)

    # vi /etc/default/saslauthd

Otkomentarišite red:

    # START=yes

(inače se `saslauthd` neće pokrenuti tokom podizanja, čak iako je pomenuta u nekom od fajlova `/etc/rcx.d`!)

i umesto `MECHANISMS="pam"` stavite `MECHANISMS="shadow"`, čime će pri podizanju biti izvršeno `saslauthd` `-a `shadow``.

Kad izađete iz uređivača, ponovo pokrenite SASL i Cyrus.

Za probu IMAP‑a:

    su cyrus
    $ imtest -m login -p imap localhost

Upitaće vas za lozinku korisnika cyrus, pa je unesite.

Ako je korisnik cyrus pravilno autentifikovan, pojaviće se sledeći redovi:

    S: L01 OK User logged in
    Authenticated.

Za izlaz, ukucajte `. logout` (tj. tačku, razmak, `logout`)

Sada dodajte korisnika po imenu groupware i postavite njegovu lozinku, koristeći uobičajene sistemske alatke. Trebalo bi da bude u nepovlašćenoj grupi, poput nobody, i da ne zahteva prijavnu školjku ili domaću fasciklu.

Sada takođe treba da stvorimo korisnika i IMAP u Cyrusu:

    # cyradm --user cyrus localhost
     posle unosa lozinke za administrativnog korisnika cyrus, dobijate upit localhost>
    localhost> cm user.groupware
    localhost> lm prikazuje upravo napravljeno sanduče
    user.groupware (\HasNoChildren))
    localhost> quit

Za spisak raspoloživih naredbi možete uneti ``help``.

Ovim možete proveriti šta se dogodilo:

    # 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

Sad bi trebalo da možete da se povežete sa IMAP klijentom kao korisnik groupware i vidite `INBOX`.

U protokolu IMAP, odabir sandučeta `INBOX` je čarobna reč, nešto kao „alijas“ za gornju strukturu fascikli. Klijent vidi `INBOX`, a IMAP server ga mapira u fasciklu i strukturu fajlova `/var/spool/cyrus/mail/...`.

## Postavljanje Kontactovih klijenata

Na svoj kancelarijski server pod GNU/Linuxom (neka vrsta „crne kutije“ bez monitora i tastature) povezujem se sa dva računara pod Windowsa 2000, pomoću Cygwina/X, koristeći ih kao X server (u bližoj budućnosti nadam se da ću oba zameniti dvama mini‑ITX tankim klijentima pod LTSP‑om). S ovom postavom svaki korisnik izvršava Kontact na istoj mašini gde je instaliran i izvršava se Cyrus (lokalni domaćin).

Da bi Kontact radio sa IMAP‑om, treba primeniti sledeće korake:

1. Napravite IMAP nalog u Cyrusu za prividnog korisnika groupware (što smo već ranije uradili!)

2. Napravite i podesite IMAP nalog u K‑pošti, za prijavljivanje kao taj korisnik

3. Koristite k‑resurse da bi Kontactove komponente radile sa podacima uzetim iz IMAP izvora

4. Uključite grupversku funkcionalnost i napravite željene potfascikle tog IMAP `INBOX` (ako već niste)

5. Uživajte u Kontactu i deljenim podacima kroz Cyrusov IMAP

Tako, prijavite se u KDE sa prvim „stvarnim korisničkim“ nalogom kojem hoćete da obezbedite grupversku funkcionalnost.

Napravimo IMAP nalog u K‑pošti.

Pokrenite Kontact i izaberite Pošta (komponentu K‑pošte). Odaberite iz menija Podešavanje Podesi K‑poštu...Nalozi jezičak Primanje, i pritisnite dugme Dodaj.... Bićete upitani za vrstu naloga e‑pošte, pa odaberite nepovezani IMAP (ne samo IMAP). Zatim, u jezičku Opšte unesite sledeće podatke:

Ime naloga: `Kancelarija`

  Ime koje će se koristiti za „lokalnu“ fasciklu koja pokazuje na ovaj IMAP nalog.

Prijava: `groupware`

  Korisnik Cyrusa kojeg smo izabrali kao „vlasnika“ svih kancelarijskih podataka.

Lozinka:

  Lozinka korisnika groupware.

Domaćin: `localhost`

  Setite se da se u našem primeru Kontactov klijent izvršava na istom računaru kao IMAP server

Port: `143`

  Podrazumevani

Popunite Skladišti IMAP lozinku da vam sledeći put kad pokrenete Kontact ne bi bila tražena. Popunite Uključi periodičnu proveru pošte i postavite vrednost u minutima.

Zapazite da smo za vrstu naloga popunili nepovezani IMAP. Efekat ovoga je skladištenje kopije grupverskih podataka „lokalno“ na klijentu (pod domaćom fasciklom), koja se sinhronizuje svaki put kada se klijent poveže. Ovo se čini vrlo neefikasnim, pošto se podaci mnogo puta dupliraju (tj. ako imate 10 korisnika Kontacta, imate 10+1 kopija podataka), ali je jedini način da stvari brzo idu, jer pri svakom povezivanju Kontact treba da dohvati sve podatke i prosledi ih K‑organizatoru i K‑adresru na tumačenje. Ako koristite „nepovezani IMAP“, podaci se keširaju lokalno i šalje se samo „delta“ (tj. izmene u podacima).

S druge strane, ako korisnici izvršavaju K‑organizator na istom računaru koji izvršava IMAP server, korišćenje IMAP‑a čini se razumnim (ovo se zove „IMAP na vezi“) radi uštede prostora, jer više nema problema s brzinom prenosa. Na nesreću, ovo ne funkcioniše jer Kontact ne ažurira automatski fasciklu Kalendar u IMAP‑u na vezi, te ne bivate ažurirani kad neko dodaje događaje (morate se ručno prebaciti u K‑poštu i kliknuti na fasciklu Kalendar). Dodatno, na početku kad čita fascikle kalendara, možete da primetite ogromno treperenje i sporo ažuriranje podataka.

Sad treba da kažemo Kontactu da koristi IMAP kao izvor podataka za svoje različite komponente. Iz KMenija izaberite Izvrši naredbu i izvršite ``kcmshell4 kresources``. Iz spiska izaberite Kontakti, zatim pritisnite dugme Dodaj..., i odaberite Adresar na IMAP serveru preko K‑pošte. Zatim izaberite novodobijeni red i pritisnite dugme Kao standardni. Isto uradite za Kalendar i Beleške.

Sad treba da u K‑pošti (posledično i za ceo Kontact) uključimo grupversku funkcionalnost:

1. Izaberite iz menija Podešavanje Podesi K‑poštu...RaznoGrupver

2. Popunite Uključi funkcionalnost IMAP resursa

3. Izaberite engleski pod Jezik za grupverske fascikle: (ovo u slučaju da već imate fascikle na IMAP serveru koje je stvorio drugi program na drugom jeziku).

4. Sada idite na Fascikle resursa su u nalogu: i odaberite potfasciklu pristigle fascikle Kancelarija.

   Ostavite za sada nepopunjeno Sakrij grupverske fascikle, tako da možemo da vidimo šta se događa. Kad sve bude jasno, možete se navratiti i popuniti.

5. Kad pritisnete U redu, dobijate odziv: `K‑pošta će sada napraviti potrebne grupverske fascikle kao potfascikle u „pristigle“. Ako ne želite ovo, odustanite i IMAP resurs će biti isključen`

   Ako ovo ne želite, pritisnite Ne i IMAP resurs će biti isključen. Pritisnite da (ovo se dešava samo prvi put sa prvim „stvarnim korisnikom“). Odmah ćete videti da su u K‑poštinom stablu fascikli, pod Kancelarijapristigle stvorene naredne potfascikle:

   - Kalendar
   - Kontakti
   - Beleške
   - Zadaci
   - Dnevnik

   ako sad izvršite:

       # 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

   Kao što vidite, fascikla pristigle pod Kancelarija ne skladišti se lokalno u Kontactu pod domaćom fasciklom trenutnog korisnika, nego u IMAP fasciklama korisnika groupware.

Sada je Kontact spreman za rad i skladištenje podataka tamo. U kalendarskom programu — ako je K‑poštin IMAP nalog bio nepovezanog tipa, prozor resurs treba da prikazuje stavku IMAP resurs sa tri podstavke koje su putanje do lokalnih domaćih fajlova. Umesto toga, Kontakti ne prikazuje podstavke ispod IMAP resurs.

Sada se možete prijaviti u KDE pod drugim korisničkim imenom i vrlo slično postaviti Kontactov klijent za tog korisnika:

1. Otvorite Kontact, i u komponenti Pošta dodajte IMAP nalog, navodeći pod Domaćin: računar na kom radi Cyrusov server (u mom slučaju `192.168.1.3`).

   Ne zaboravite da popunite Uključi periodičnu proveru pošte i postavite vrednost u minutima. Kad potvrdite, neće vam se tražiti stvaranje potfascikli (pošto su nađene na IMAP serveru), već ćete ih videti u stablu fascikli.

2. Aktivirajte grupversku funkcionalnost da biste mogli da upisujete podatke na IMAP server.

Budite svesni da se u „nepovezanom IMAP‑u“ podaci prenose sa klijenta na IMAP server samo kad se klijent poveže da proveri novu poštu. Dakle, ako vam Kontactovi klijenti periodično proveravaju poštu na svakih, recimo, pet minuta, u najgorem slučaju postojaće desetominutno zakašnjenje upisivanja događaja i njegove pojave kod ostalih korisnika.

## Kako imati pristup samo‑za‑čitanje

Imajte na umu da mi je potvrđeno da je izvedba IMAP beleški u Kontactu pre verzije 1.01 pokvarena, pa ova postava neće za njih funkcionisati. No ako ipak želite da ih koristite, moraćete koristiti prethodnu postavu.

U prethodnoj postavi imali smo istog „prividnog“ korisnika, po imenu groupware, kojeg koriste svi „stvarni“ korisnici Kontacta (npr. pera, koja, vanja, itd.) preko IMAP naloga sa njegovom prijavom i lozinkom. Ali ovako svaki stvarni korisnik ima iste dozvole za čitanje i pisanje, pošto se svako povezuje na IMAP server kao korisnik groupware.

Da bismo ograničili pristup izvesnim korisnicima (obično dajući im pristup samo‑za‑čitanje) možemo koristiti ACL‑ove (liste kontrole pristupa).

Izaberite u K‑pošti potfasciklu dolaznog sandučeta pod Kancelarija, na primer Kalendar i kliknite desnim dugmetom miša. Odaberite Svojstva, jezičak Kontrola pristupa. Ovde možete uneti korisnike kojima želite dati pristup ovoj fascikli, i šta mogu da rade.

Radi eksperimentisanja sa razmenom događaja, dajmo „sve“ dozvole korisnici vanja.

Na nivou Cyrusa (na računaru koji izvršava IMAP server Cyrusa, sa Cyrusovim alatkama), prvo treba da dodamo korisnika vanja, tako da bude prepoznata kao korisnica IMAP‑a, i napravimo joj IMAP fasciklu.

Zatim se prijavimo GNU/Linuxu kao vanja i uđemo u Kontact. Kao što je prethodno pokazano, postavićemo IMAP nalog u K‑pošti sa istim podacima, osim onih korisničkih (za razliku od prividnog korisnika groupware i njegove lozinke, upotrebićemo vanja i njenu lozinku).

U K‑poštinom stablu fascikli, sada ćete videti ovakvu strukturu: Kancelarija user groupware Kalendar i zadaci. Proverite poštu (Fajl Proveri poštu) i pod Kancelarija dobićete i fasciklu pristigle.

Sad uključite grupversku funkcionalnost K‑pošte, i pod Fascikle resursa su potfascikle: zadajte pristigle koje je potfascikla od Kancelarija.

Sad imate dve grane fascikle pod Kancelarija:

1. pristigle sa kalendarom, kontaktima, beleškama, zadacima i dnevnikom, koji su sačuvani u IMAP fasciklama korisnice vanja na IMAP serveru.

2. `user`, sa potfasciklom `groupware` i potfasciklama kojima vanja ima pristup (u ovom primeru, kalendar i zadaci)

Kliknite desnim na user Kalendar i proverite da li kalendarskog tipa (ako nije, podesite da bude), a takođe i da li je user Zadaci tipa zadataka.

Sada u kalendaru imate dva raspoloživa IMAP resursa u koja se može pisati, pa kad pravite novi događaj, bićete upitani koji od njih koristiti (ili ako ste ostavili raspoložive i lokalne resurse, imaćete tri).

Treba da odete na donji levi, mali prozor u kalendaru — onaj što prikazuje raspoložive resurse — i ispraznite one koji ne pokazuju na putanju `.groupware.directory` (kao zadnji deo putanje resursa).

## Zasluge

Početnik sam, i za ovaj sam kako‑da pružio samo svoje vreme i volju. Za znanje se moram zahvaliti nekim momcima sa Freenodeovih kanala, za njihovu stručnost, strpljenje i spremnost da pomognu.

### Posebno su mi pomogli:

- Za deo o IMAP‑u u Cyrusu na kanalu `#cyrus`:

  - [`protagonist`] Endi Morgan (Andy Morgan) morgan@orst.edu

  - [`plixed`] Oke Tim (Okke Timm) okke.timm@web.de

- Za deo o Kontactu na kanalu `#kontact`:

  - [`till`] Til Adam (Till Adam) adam@kde.org

  - [`dfaure`] David For (David Faure) faure@kde.org

  - [`mdouhan`] Mat Douhan (Matt Douhan) matt@fruitsalad.org

Mnogo hvala, momci!

Ah, a tu sam i ja, [`markit`] Marko Menardi (Marco Menardi) mmenaz@mail.com

## Dalje za čitanje

### Izvori

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

- Veb sajt Kontacta: http://www.kontact.org

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

- Viki zajednica KDE‑a: http://wiki.kde.org

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

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

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