# Compartir dades amb &kontact; a través de IMAP

## Introducció

He estat cercant durant un temps una solució PIM per a la meva petita oficina que em permeti compartir dades, per a que la meva secretaria i jo poguera'm compartir contactes, cites, &etc; Sent usuari de &kde;, havia sentit a parlar del projecte Kroupware i esperava la seva finalització. Però quan vaig veure el complicada que era l'arquitectura i la configuració del servidor 1.0 de Kolab (el servidor del projecte), vaig decidir esperar per un fàcil desenvolupament de Kolab 2.0. En qualsevol cas, el producte Kolab era l'adequat a les meves necessitats. Afortunadament en el wiki de &kde; vaig trobar alguns trossos de conversacions de l'IRC en el que parlaven sobre la compartició de dades sense la infraestructura de Kolab... mmm. Interessant!

Per a petites oficines i petites necessitats, podeu usar &kontact; per a compartir dades sense que us calgui instal·lar el servidor Kolab o d'altres motors de treball corporatiu. Pot funcionar amb tan sols el servidor IMAP, el qual es pot configurar de forma fàcil.

El meu escenari és un servidor Debian unstable i &kde; 3.4. He accedit a &kontact; i d'altres magnífiques aplicacions GNU/Linux des de windows usant Cygwin/X, mentre esperava que el projecte wine fora capaç d'executar els últims programes Windows que necessito (i que no estan disponibles en GNU/Linux). Vull compartir contactes, esdeveniments, notes amb la meva secretaria.

## Què és IMAP

Aquesta definició apareix en el Diccionari d'alta tecnologia ComputerUser.com:

> Internet Message Access Protocol (protocol d'accés a la missatgeria per Internet). Un protocol que permet a l'usuari dur a terme certes funcions de correu electrònic en un servidor remot i en un ordinador local. A través de IMAP l'usuari podrà crear, esborrar o renomenar bústies de correu, obtenir missatges nous, esborrar missatges i usar funcions de recerca en el correu. Per enviar correu cal un protocol diferent. També anomenat Internet Mail Access Protocol (protocol d'accés a correu per Internet).

De manera que, si podeu considerar un magatzem de dades. Per a usar-lo us caldrà un servidor IMAP, com Cyrus, Courier o UW.

## Kolab o IMAP?

Kolab te l'habilitat per a compartir dades entre diferents clients. Això fa possible que la vostra secretaria usi Outlook i vos useu &kontact;, per exemple.

Podreu usar una interfície de configuració per gestionar usuaris, configurar el vostre compte de correu, una central LDAP de dades de configuració i un servidor de llibreta d'adreces, filtrat de correu brossa i virus, scripts per a les vacances, maneig de llistes de disponibilitat, maneig de recursos (habitacions, vehicles), grups, llistes de distribució, gestió d'invitacions automàtiques, &etc;

Però això pot causar una serie de problemes inicials. Per als novells com jo voldrà dir: una llarga i frustrant malson, i massa complexitat per a que tot funcioni a la primera. És a dir, no gràcies, em quedo amb IMAP.

## Com configurar el servidor IMAP Cyrus

La meva elecció és Cyrus, forma part del paquet de programari Kolab, per tant podré usar Kolab en el futur, al menys m'informaré.

Deixeu iniciar la instal·lació i la configuració!

Convertiu-vos en `root`.

    # apt-get install cyrus21-imapd cyrus21-common cyrus21-admin cyrus21-client sasl-bin sasl2-bin
    S'està instal·lant cyrus21-imapd...L'instal·lador ha demanat quelcom que no he entès sobre la recerca d'una adreça... He premut &Intro;.

L'instal·lador també ha creat l'usuari `cyrus` que es troba en el grup (creat automàticament) `sasl`, el qual és el propietari de tots els fitxers cyrus. Al final amb `ps `-A`` podeu trobar els nous processos: `cyrmaster` i `notifyd`.

El problema real en la configuració de Cyrus és l'autenticació, ja que no és trivial i jo soc novell, amb un coneixement limitat sobre el que estic fent.

Cyrus pot usar diferents mecanismes SASL (Simple Authentication and Security Layer -capa d'autenticació simple i seguretat), el que per omissió és sasldb (desa els noms dels usuaris i les contrasenyes en el fitxer de secrets SASL `sasldb`), però també estan suportats getpwent, kerberos4, kerberos5, PAM, rimap, shadow i LDAP.

Com no vull definir usuaris/contrasenyes diferents als d'accés al meu &Linux; he escollit el mecanisme shadow, és a dir, Cyrus usarà les contrasenyes de &Linux; per a l'autenticació.

Per a fer això tenim que dir-li a sasl que useu `saslauthd` com a mètode d'autenticació de contrasenyes, i a llavores es configurarà `saslauthd` per usar shadow (o getpwent) com a mecanisme d'autenticació.

Bé. Comencem!

Com a `root`, canvieu la contrasenya Linux de l'usuari `cyrus`:

    # passwd cyrus

Introduïu la contrasenya que vulgueu (i recordeu-la). Nosaltres usarem per a aquest exemple cyrus com a contrasenya d'administració de cyrus.

    # vi /etc/imapd.conf

    sasl_pwcheck_method: saslauthd en comptes del per omissió auxprop

elimineu la marca `#` de la línia:

    #admins: cyrus

Així podreu administrar cyrus accedint com a usuari `cyrus` (quina fantasia he tingut!)

    # vi /etc/default/saslauthd

Descomentar la línia:

    # START=yes

(d'altra manera saslauthd no serà iniciat quan arrenqueu el sistema, fins i tot encara que se'n faci referència a `/etc/rcx.d`!)

En lloc de `MECHANISM="pam"` assigneu `MECHANISM="shadow"` de manera que en l'arrencada del sistema s'executi `saslauthd` `-a `shadow``.

Una vegada sortiu del vostre editor, torneu a iniciar sasl i cyrus.

Per a comprovar IMAP:

    su cyrus
    $ imtest -m login -p imap localhost

Se us demanarà per la contrasenya (usuari) de `cyrus`, que haureu d'introduir.

Si l'usuari `cyrus` s'ha autenticat correctament, apareixeran les següents línies:

    S: L01 OK User logged in
    Authenticated.

Per a sortir escriviu `. logout` (&ead;, punt espai logout)

Ara afegiu un usuari anomenat `groupware` i assigneu-li una contrasenya, usant les vostres eines habituals. S'hauria d'incloure en un grup sense privilegis com `nobody` atès que no precisa iniciar una sessió d'intèrpret de comandaments o disposar d'un directori d'inici.

Ara també haurem de crear l'usuari i un IMAP en cyrus:

    # cyradm --user cyrus localhost
    després d'introduir la contrasenya per a l'usuari administrador cyrus, obtindreu l'indicatiu localhost>
    localhost> cm user.groupware
    localhost> lm llista les bústies de correu creades
    user.groupware (\HasNoChildren))
    localhost> quit

Podeu escriure ``help`` per obtenir una llista dels comandaments disponibles.

Podeu comprovar el que passa amb:

    # 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

Ara hauríeu de ser capaç de connectar amb un client IMAP com a usuari `groupware` i veure el `INBOX`.

En el protocol IMAP, seleccionar la bústia de correu `INBOX` és un mon màgic, un tipus de alias per a la estructura superior de directoris. El client veu `INBOX`, i el mapa del servidor IMAP en la carpeta i en la estructura de fitxers `/var/spool/cyrus/mail/...`.

## Com configurar els clients &kontact;

M'he connectat al meu PC servidor d'oficina GNU/Linux (una especie de "caixa negra" sense monitor ni teclat) des de 2 PC &Windows; 2000 amb Cygwin/X, usant-lo com a servidor X-Window (en un futur pròxim espero substituir ambdós amb 2 lleugers clients mini-itx usant LTSP). Amb aquesta configuració cada usuari executa &kontact; en la mateixa màquina en la que estigui instal·lat i en execució Cyrus (localhost).

Per a que &kontact; treballi amb IMAP, heu de completar les següents passes:

1. Crear un compte IMAP en Cyrus per al fals usuari `groupware` (ja ho havíem fet!)

2. Crear/configurar un compte IMAP en &kmail; per accedir-hi com a aquest usuari.

3. Useu tderesources per a fer que els components de &kontact; treballin amb les dades proporcionades per la font IMAP

4. Habilitar la funcionalitat de treball corporatiu i relacionar les subcarpetes de IMAP `INBOX` (si no està llest)

5. Que gaudiu de &kontact; i compartiu dades amb el vostre Cyrus IMAP

Accediu al &kde; amb el primer compte d'usuari real al que vulgueu proveir de la funcionalitat de treball corporatiu.

Creu el compte de IMAP en &kmail;.

Executeu &kontact; i seleccioneu Correu (el component &kmail;). En el menú escolliu Arranjament Configura KMail Comptes pestanya Rep , i premeu el botó Afegeix.... Tot seguit se us demanarà pel tipus de compte de correu, i seleccioneu IMAP desconnectat (no tan sols IMAP). A continuació en la pestanya General introduïu les següents dades:

Nom del compte: `office_gwdata`

- El nom que serà usat per a la carpeta local que apunta a aquest compte IMAP.

Usuari: `groupware`

- L'usuari Cyrus que s'ha escollit com a propietari de totes les dades de l'oficina.

Contrasenya:

- La contrasenya de l'usuari `groupware`.

Màquina: `localhost`

- Recordeu que per al nostre exemple, el client &kontact; s'executa en el mateix ordinador que el servidor IMAP

Port: `143`

- El per omissió

Marqueu Desa la contrasenya IMAP i així no se us demanarà la propera vegada que executeu &kontact;. Marqueu Habilita l'interval de comprovació del correu i establiu un valor en minuts.

Tingueu present que hem marcat el tipus de compte IMAP desconnectat. Això te l'efecte de copiar les dades de treball corporatiu localment en el client (en la carpeta personal), i sincronitza cada cert temps les connexions dels clients. Això sembla molt poc eficient, podent-se duplicar les dades en algunes ocasions (&ead;, si teniu 10 usuaris que usen &kontact;, obtindreu les dades 10+1 vegades), però és la única manera de que les coses funcionin ràpid, per descomptat que cada connexió de &kontact; obté totes les dades i &korganizer; i &kaddressbook; tenen que interpretar-les. Si useu IMAP desconnectat les dades es desaran de forma local, i tan sols s'enviaran al delta (&ead;, les dades que han canviat).

D'altra banda, si els vostres usuaris executen &korganizer; en el mateix PC que s'executa el servidor IMAP, sembla raonable usar IMAP (que s'anomenaIMAP connectat) per estalviar espai, atès que la velocitat de transferència no és un inconvenient. Però malauradament això no funciona, atès que &kontact; no actualitza automàticament la carpeta Calendari en IMAP connectat, de manera que no s'actualitzarà cada vegada que algú afegeixi un esdeveniment (hauríeu d'anar de forma manual a l'aplicació &kmail; i prémer sobre la carpeta Calendari). Addicionalment, en l'arrencada, quan es llegeixen les carpetes de Calendari, podreu veure un gran parpelleig i actualitzacions de dades molt lentes.

Ara tenim que dir-li a &kontact; que usi IMAP com a font de dades per als diferents components. Des del &kmenu;, escolliu Executa comandament i executeu ``tdecmshell tderesources``. En la caixa seleccioneu Contactes, llavores premeu el botó Afegeix... i escolliu Llibreta d'adreces sobre un Servidor IMAP via KMail. Seleccioneu la nova línia i premeu el botó Usa com a estàndard. Feu el mateix per al Calendari i Notes.

Ara tenim que habilitar la funcionalitat de treball corporatiu de &kmail; (i en conseqüència, tot el &kontact;):

1. Escolliu des del menú Arranjament Configura KMail Varis Groupware

2. Marqueu Habilita la funcionalitat de recurs IMAP

3. Escolliu Anglès com a Idioma de les carpetes groupware (aquest serà el cas que hi hagi carpetes en el servidor IMAP creades per un programa diferent en un idioma diferent).

4. Ara aneu a Les carpetes de recurs són subcarpetes de i seleccioneu la subcarpeta entrada de la carpeta office_gwdata.

   De moment deixeu sense marcar Oculta les carpetes groupware, de manera que veurem el que succeeix. Podreu tornar aquí i marcar-la una vegada tot estigui clar.

5. Quan premeu Bé apareixerà el missatge: `&kmail; ara crearà les carpetes requerides per al recurs IMAP com a subcarpetes d'entrada`

   Si no voleu fer això, premeu No, i el recurs IMAP es deshabilitarà. Premeu Sí (això tan sols passarà la primera vegada amb el primer usuari real). El podreu veure de forma immediata en l'arbre de carpetes de &kmail;, sota office_gwdata entrada:

   - Calendari
   - Contactes
   - Notes
   - Tasques
   - Diari

   si ara feu:

       # 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

   Com podeu veure, office_gwdata entrada no és desat en la carpeta d'inici de l'usuari de &kontact;, però sí en les carpetes dels usuaris IMAP `groupware`.

Ara &kontact; està preparat per a treballar amb les dades aquí desades. En l'aplicació calendari, si el compte IMAP de &kmail; és del tipus desconnectat, la finestra de recurs hauria de mostrar l'ítem Recurs imap amb 3 subítems, que són rutes cap als fitxers personals locals. De tota manera, l'aplicació de Contactes no mostrarà subítems sota el Recurs imap.

Ara podreu accedir a la sessió de &kde; amb un nom d'usuari diferent i configurar els vostres client &kontact; de manera similar a:

1. Obriu &kontact; i en el component KMail afegiu un compte IMAP especificant com a servidor l'ordinador en el que s'està executant el servidor Cyrus (en el meu cas: `192.168.1.3`).

   Recordeu marcar Habilita l'interval de comprovació del correu i establir el valor en minuts. Quan confirmeu, no se us demanarà per la creació de la subcarpeta (atès que aquestes es troben en el servidor IMAP), i les podreu veure en l'arbre de carpetes.

2. Activeu la funcionalitat de treball corporatiu per a poder desar les dades en el servidor IMAP.

Assegureu-vos que en IMAP desconnectat, les dades es trameten des d'un client cap al servidor IMAP tan sols quan els clients es connecten per a comprovar el correu nou. Per tant si els vostres clients en &kontact; tenen un interval de comprovació del correu establert, per exemple, a 5 minuts, en el pitjor dels casos hi haurà un retard de 10 minuts des de que s'escriu l'esdeveniment fins que aquest aparegui a la resta d'usuaris.

## Com tenir accés de tan sols lectura

Assegureu-vos de tenir instal·lada una implementació de IMAP en &kontact; que sigui adequada, atès que les anteriors a la versió 1.01 es pengen amb aquesta configuració, i pel que aquesta configuració no hi funcionarà, per tant quan les vulgueu usar, us caldrà usar una configuració anterior.

En la configuració anterior, tindrem el mateix usuari fals, anomenat`groupware`, aquest s'usa per als usuaris reals de &kontact; (&ead;, `toni`, `robert`, `amanda`, &etc;) usat pel compte de IMAP amb el seu usuari i contrasenya. Però d'aquesta forma tots els usuaris reals tenen els mateixos permisos de lectura/escriptura, atès que es connecten com a l'usuari `groupware` al servidor IMAP.

Per a limitar l'accés a alguns usuaris (típicament, proporcionant accés de tan sols lectura), poden usar-se les ACL (Access Control Lists -llistes de control d'accés-).

Seleccioneu en &kmail; una subcarpeta d'entrada de office_gwdata, per exemple Calendari, i feu clic dret del ratolí. Seleccioneu Propietats pestanya Control d'accés. Aquí podreu introduir els usuaris als que vulgueu donar accés a aquesta carpeta i el que poden fer.

Per experimentar intenteu canviar alguns ítems, donant Tots els permisos a l'usuari `maria`

En el nivell cyrus (en el PC que està executant el servidor IMAP cyrus, amb les eines cyrus), el primer que ens cal és afegir l'usuari `maria`, per a que reconegui a l'usuari IMAP, i li crei una carpeta IMAP.

Llavores accedim a GNU/Linux com a `maria` i entrem en &kontact;. Com s'ha vist anteriorment, configurarem un compte IMAP en &kmail; però amb les dades de l'usuari (en lloc del fals usuari `groupware` i la seva contrasenya, usarem `maria` i la seva contrasenya).

En l'arbre de carpetes de &kmail;, aquesta vegada veureu aquesta estructura: office_gwdata usuari groupware Calendari i tasques. Comproveu el correu (Fitxer Comprova el correu) i tindreu una carpeta entrada sota office_gwdata.

Ara habiliteu la funcionalitat de treball corporatiu de &kmail; i en Les carpetes de recurs són subcarpetes de escriviu entrada com a subcarpeta de office_gwdata.

Ara habiliteu la funcionalitat de treball corporatiu de &kmail; i en Les carpetes de recurs són subcarpetes de escriviu entrada com subcarpeta de office_gwdata

Ara tindreu dues branques de carpetes sota office_gwdata:

1. entrada amb Calendari, Contactes, Notes, Tasques i Diari, que són desades en les carpetes IMAP de `maria` en el servidor IMAP.

2. L'usuari, amb la subcarpeta groupware i les subcarpetes a les que `maria` te accés (en aquest exemple, Calendari i Tasques)

Feu clic amb el &BDR; en el Calendari de l'usuari i comproveu si és del tipus Calendari (si no, hauria de ser-ho), i si les Tasques de l'usuari són del tipus Tasques.

Ara en el Calendari tindreu disponibles dos recursos IMAP sobre els que escriure, de manera que si creeu un esdeveniment nou, se us demanarà sobre quin dels dos usar (o si teniu els recursos locals disponibles. En teniu 3!).

Aneu a la petita pantalla inferior a l'esquerra en Calendari, la que mostra els recursos disponibles, i desmarqueu aquells que no apunten cap a la ruta .groupware.directory (veureu la part de la cua de cada ruta de recurs).

## Crèdits

Soc novell, i per a aquest "com es fa" tan sols he usat el meu temps i voluntat. Per obtenir el coneixement en realitat haig de donar les gràcies a algunes persones en els canals de freenode per la seva competència, paciència i amabilitat.

## Un especial agraïment a:

- Per a la part IMAP de Cyrus en el canal #cyrus:

  - [protagonist] Andy Morgan morgan@orst.edu

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

- Per la part &kontact; en el canal #kontact:

  - [till] Till Adam adam@kde.org

  - [dfaure] David Faure faure@kde.org

  - [mdouhan] Matt Douhan matt@fruitsalad.org

Moltes gràcies nois!

Ah! I també per a, [markit] Marco Menardi mmenaz@mail.com

## Lectures addicionals

## Referència

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

- Lloc web de &kontact;: http://www.kontact.org

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

- Comunitat wiki de &kde;: http://wiki.kde.org

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

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

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