# Partilhar dados com o &kontact; através de IMAP

## Introdução

Para o escritório do autor, era necessária há muito tempo uma solução de PIM que lhe permitisse partilhar os dados, de modo que a sua secretária e ele pudessem partilhar os contactos, compromissos e assim por diante. Sendo um utilizador do &kde;, o autor ouviu falar no projecto Kroupware e esperou pela sua finalização. Mas, quando viu a complicação da arquitectura e da configuração do servidor Kolab 1.0 (o lado do servidor do projecto), ele desistiu, ficando à espera de uma versão Kolab 2.0 mais simples. Em qualquer dos casos, as coisas do Kolab eram demasiadas para as necessidades em questão. Felizmente, no Wiki do &kde;, encontraram-se algumas conversas de IRC, onde se falava sobre a partilha de dados sem a infra-estrutura do Kolab ... mmm muito interessante!

Para os pequenos escritórios e necessidades, poderá ter o &kontact; a usar dados partilhados sem ter a necessidade de instalar o servidor Kolab ou outra infra-estrutura de 'groupware'. Ela poderá funcionar apenas com um servidor de IMAP, que poderá ser configurado facilmente.

O cenário em questão é um servidor com o 'Debian unstable' e o &kde; 3.4. O acesso é feito ao &kontact; e a outras aplicações do GNU/Linux a partir do Windows com o Cygwin/X, enquanto se espera que oo projecto Wine seja capaz de executar os últimos programas de Windows que o autor necessita (e que não estão disponíveis no GNU/Linux). Pretende-se partilhar contactos, eventos, itens por-fazer e notas com a secretária.

## O que é o IMAP

Esta definição vem do ComputerUser.com High-Tech Dictionary:

> Internet Message Access Protocol. Um protocolo que permite a um utilizador efectuar certas funções de correio electrónico num servidor remoto, em vez de ser num computador local. Através do IMAP, o utilizador poderá criar, remover ou mudar os nomes das caixas de correio, obter mensagens novas, removê-las e efectuar funções de pesquisa no correio. É necessário um protocolo separado para o envio de correio. Também é chamado de Internet Mail Access Protocol.

Por isso, pode ser considerado um sistema de armazenamento de dados. Para o usar, necessita de ter um servidor de IMAP, como o Cyrus, o Courier ou o UW.

## Kolab ou IMAP?

O Kolab traz a possibilidade de partilhar dados entre vários clientes. Possibilita à sua secretária usar o Outlook a si usar o &kontact;, por exemplo.

Terá de ter uma interface de configuração que faça a gestão de utilizadores, a configuração das contas de correio, os dados de configuração do LDAP central e do servidor de livro de endereços, a filtragem de lixo electrónico e vírus, os programas de férias, o tratamento da lista de livre-ocupado, a gestão de recursos (salas, carros), grupos, listas de distribuição, tratamento automático de convites, &etc;

Mas isso poderá causar problemas iniciais de configuração. Para um inexperiente como o autor, significa um pesadelo realmente longo e frustrante e muita complexidade para o gerir, assim que funcionar. Como tal, não obrigado, e passa-se a usar apenas o IMAP simples.

## Como configurar o servidor de IMAP Cyrus

A escolha vai para o Cyrus, que faz parte do conjunto de aplicações Kolab, por isso, se quiser mudar no futuro para o Kolab, já estará habituado a ele.

Vejamos a instalação e configuração!

Mude para o utilizador `root`.

    # apt-get install cyrus21-imapd cyrus21-common cyrus21-admin cyrus21-client sasl-bin sasl2-bin
    Installing cyrus21-imapd...O instalador pergunta algumas coisas esquisitas sobre um endereço de procura... pelo que se carrega simplesmente em Enter.

O instalador também criou o utilizador `cyrus`, que está no grupo (criado automaticamente)`sasl`, que é o dono de todos os ficheiros do 'cyrus'. No fim, com o comando `ps `-A``, poderá descobrir os processos novos: `cyrmaster` e `notifyd`.

O problema real na configuração do Cyrus está na autenticação, simplesmente porque não é trivial e o autor deste texto tem poucos conhecimentos do que está a fazer.

O Cyrus pode usar vários mecanismos de SASL (Simple Authentication and Security Layer), sendo o predefinido o 'sasldb' (guarda os utilizadores e as senhas no ficheiro de senhas do SASL `sasldb`), mas também são suportados o getpwent, kerberos4, kerberos5, PAM, rimap, shadow e LDAP.

Dado que não se pretende definir os utilizadores/senhas diferentes dos usados para aceder ao sistema &Linux;, pode-se optar por usar o shadow, de modo que o Cyrus use as senhas do &Linux; para a autenticação.

Para o fazer, terá de se dizer ao 'sasl' para usar o `saslauthd` como método de autenticação de senhas, e depois configurar o `saslauthd` para usar o shadow (ou o getpwent) como mecanismo de autenticação.

Ok, vamos começar!

Como `root`, mude a senha de Linux do utilizador `cyrus`:

    # passwd cyrus

Indique a senha que deseja (e que se recorde); para este exemplo, será configurada a cyrus como a senha do administrador cyrus.

    # vi /etc/imapd.conf

    sasl_pwcheck_method: saslauthd em vez do valor predefinido auxprop

remova comentário `#` da linha:

    #admins: cyrus

desta forma, poderá administrar o cyrus, entrando com o utilizador `cyrus` (as fantasias que poderão surgir!)

    # vi /etc/default/saslauthd

Remova o comentário da linha:

    # START=yes

(caso contrário, o saslauthd não irá iniciar no arranque, mesmo que seja referenciado em algum `/etc/rcx.d`!)

e, em vez de `MECHANISMS="pam"`, coloque `MECHANISMS="shadow"`; desta forma, no arranque, será executado um `saslauthd` `-a `shadow``.

Logo que tenha saído do seu editor, reinicie o sasl e o cyrus.

Para testar o IMAP:

    su cyrus
    $ imtest -m login -p imap localhost

Ser-lhe-á pedida a senha do `cyrus` (utilizador), como tal, introduza-a.

Se o utilizador `cyrus` estiver correctamente autenticado, irão aparecer as seguintes linhas:

    S: L01 OK User logged in
    Authenticated.

Para sair, escreva `. logout` (&ie; ponto espaço logout)

Agora, adicione um utilizador chamado `groupware` e defina uma senha para o mesmo, usando as suas ferramentas normais do sistema. Deverá estar num grupo sem privilégios, como o `nobody`, e não necessita de uma sessão ou de uma pasta pessoal.

Agora, terá de se criar o utilizador e um IMAP no cyrus também:

    # cyradm --user cyrus localhost
    depois de introduzir a senha do utilizador de administração cyrus, irá obter a linha de comandos localhost>
    localhost> cm user.groupware
    localhost> lm lista a caixa de correio acaba de criar
    user.groupware (\HasNoChildren))
    localhost> quit

Poderá escrever ``help`` para obter uma lista com os comandos disponíveis.

Poderá verificar o que aconteceu com:

    # 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

Agora, deverá ser capaz de se ligar com um cliente de IMAP como o utilizador `groupware` e ver a `INBOX` (pasta de Recebidos).

No protocolo IMAP, a selecção da caixa de correio `INBOX` é uma palavra-mágica, uma espécie de alcunha para a estrutura de pastas acima. O cliente vê a `INBOX` e o servidor de IMAP mapeia-a na pasta `/var/spool/cyrus/mail/...` e respectiva estrutura de ficheiros.

## Como configurar os clientes do &kontact;

O autor liga-se ao PC servidor do escritório, com GNU/Linux (uma espécie de "caixa negra" sem monitor nem teclado), a partir de 2 PCs com &Windows; 2000, através do Cygwin/X, usando-os como um servidor de X-Window server (num futuro próximo, ele pretende substituir ambos com 2 clientes mínimos mini-ITX e usando o LTSP). Com esta configuração, todos os utilizadores correm o &kontact; na mesma máquina em que o Cyrus está instalado e a correr (o 'localhost').

Para que o &kontact; funcione com o IMAP, existem estes passos para terminar:

1. Crie uma conta de IMAP no Cyrus para o utilizador falso `groupware` (o que já foi feito anteriormente!)

2. Crie/configure uma conta de IMAP no &kmail; para se autenticar com esse utilizador

3. Use o 'tderesources' para fazer com que os componentes do &kontact; funcionem com os dados retirados da fonte de IMAP

4. Active a funcionalidade de 'groupware' e crie as subpastas relacionadas com este nessa `INBOX` do IMAP (se não tiver sido já feito)

5. Divirta-se com o &kontact; e os dados partilhados através do IMAP da Cyrus

Para tal, ligue-se ao &kde; com a primeira conta do utilizador real, à qual pretenda oferecer as funcionalidades de 'groupware'.

Crie-se então a conta de IMAP no &kmail;.

Execute o &kontact; e seleccione o E-Mail (o componente do &kmail;). No menu, escolha a opção Configuração Configurar o KMail Contas página Recepção e carregue no botão Adicionar.... Será então pedido o tipo da sua conta de correio, onde irá seleccionar a opção IMAP desligado (não seleccione o IMAP simples). Finalmente, na página Geral, indique os seguintes dados:

Nome da Conta: `dados_escritorio`

- Um nome que será usado para a pasta local que aponta para esta conta de IMAP.

Utilizador: `groupware`

- O utilizador da Cyrus que foi escolhido como dono de todos os dados do escritório

Senha:

- A senha do utilizador `groupware`.

Servidor: `localhost`

- Lembre-se que, no exemplo em questão, o cliente do &kontact; corre na mesma máquina que o servidor de IMAP

Porto: `143`

- O valor por omissão

Assinale a opção guardar a senha de IMAP, para que não lhe seja pedida, da próxima vez que executar o &kontact;. Assinale a opção Activar a verificação periódica de correio e defina um valor em minutos.

Lembre-se que foi assinalado o tipo de conta IMAP desligado. Isto tem o efeito de que uma cópia dos dados de 'groupware' é guardada localmente no cliente (sob a pasta pessoal) e que é sincronizada, sempre que o cliente se liga. Isto parece muito ineficiente, dado que os seus dados são duplicados várias vezes (&ie; se tiver 10 utilizadores que usam o &kontact;, terá 10+1 vezes os mesmos dados), mas é a única forma de fazer com que as coisas funcionem rapidamente dado que, em todas as ligações, o &kontact; tem de obter todos os dados e fazer com que o &korganizer; e o &kaddressbook; os interpretem. Se usar o IMAP desligado, os dados são mantidos localmente em 'cache', sendo enviado apenas o delta (&ie; os dados alterados).

Por outro lado, se os seus utilizadores executam o &korganizer; no mesmo PC que corre o servidor de IMAP, parece razoável usar o IMAP (este é chamado de IMAP desligado) para poupar espaço, dado que a velocidade de transferência não deverá ser um problema. Porém, infelizmente, isto não funciona, porque o &kontact; não actualiza automaticamente a pasta de Calendário no IMAP ligado, como tal, você não será actualizado quando alguém adicionar eventos (terá de mudar manualmente para a aplicação &kmail; e carregar na pasta de Calendário). Para além disso, no arranque, quando ele lê as pastas de Calendário, poderá ver uma intermitência tremenda e uma actualização lenta dos dados.

Agora, terá de se dizer ao &kontact; para usar o IMAP como fonte de dados para os seus vários componentes. No &kmenu;, escolha o Executar um comando, execute o ``tdecmshell tderesources``. Na lista, seleccione os Contactos e carregue depois no botão Adicionar..., onde poderá escolher o Livro de endereços num Servidor de IMAP através do KMail. Depois, seleccione essa linha nova e carregue em Usar por Omissão. Faça o mesmo para o Calendário e para as Notas.

Agora, terá de se activar a funcionalidade de 'groupware' do &kmail; (e, por consequência, de todo o &kontact;):

1. Escolha no menu a opção Configuração Configurar o KMail Diversos Groupware

2. Assinale a opção para Activar a funcionalidade de recursos do IMAP

3. Escolha o Inglês como Língua das pastas de 'groupware' (isto é no caso de já ter as pastas criadas no servidor de IMAP por um outro programa numa língua diferente).

4. Agora, vá para a opção As pastas de recursos estão na conta e seleccione a subpasta Inbox da pasta dados_escritorio.

   Desligue a opção Esconder as pastas de 'groupware' por agora, para que se possa ver o que acontecerá. Poderá voltar aqui e assinalá-la, logo que esteja tudo bem.

5. Quando carregar em OK, aparecer-lhe-á a mensagem: `O &kmail; irá agora criar as pastas necessárias no recurso de IMAP como subpastas da Inbox`

   Se não quiser isto, carregue em Não, pelo que o recurso de IMAP ficará desactivado. Carregue em Sim (isto só acontece da primeira vez com o primeiro utilizador real). Irá ver imediatamente que, na árvore de pastas do &kmail;, sob a pasta dados_escritorio Inbox, serão criadas as subpastas:

   - Calendar
   - Contacts
   - Notes
   - Tasks
   - Journal

   se agora fizer um:

       # 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

   Como pode ver, o office_gwdata/Inbox está guardado, não de forma local na pasta do utilizador actual do &kontact;, mas sim nas pastas de IMAP do utilizador `groupware`.

Agora, o &kontact; está pronto para trabalhar e guardar os dados aí. Na aplicação de calendário, se a conta de IMAP do &kmail; era do tipo desligado, a janela do recurso irá mostrar o item Recurso de IMAP com 3 sub-itens, que são referências para ficheiros locais do utilizador. Por outro lado, a aplicação dos Contacts não mostra sub-itens por baixo do Recurso de IMAP.

Poderá agora ligar-se ao &kde; com um utilizador diferente e configurar o seu cliente do &kontact; de uma forma muito semelhante:

1. Abra o &kontact; e, no componente de Correio, adicione uma conta de IMAP que indique como servidor o computador em que o servidor de Cyrus se executa (neste caso, o `192.168.1.3`).

   Lembre-se de assinalar a opção Activar a verificação periódica do correio e defina um valor em minutos. Quando confirmar, não lhe será pedida a confirmação da criação das subpastas (dado que estas existem no servidor de IMAP), pelo que as verá na árvore de pastas.

2. Active a funcionalidade de 'groupware' para poder gravar os dados no servidor de IMAP.

Tenha em atenção que, no IMAP desligado, os dados são transmitidos de um cliente para um servidor de IMAP, apenas quando o cliente se ligar para verificar o correio novo. Como tal, se tiver os seus clientes do &kontact; com um intervalo de verificação de correio de, por exemplo, 5 minutos, no pior dos casos, terá um atraso de 10 minutos entre a escrita do evento e a sua aparição nos outros utilizadores.

## Como Ter Acesso Apenas para Leitura

Tenha cuidado, dado que se confirma que a implementação de IMAP das Notas no &kontact; anterior à versão do 1.01 tem problemas, pelo que esta configuração não irá funcionar nesse caso; aí, se as quiser usar, terá de usar a configuração anterior.

Na configuração anterior, existe o mesmo utilizador falso, chamado `groupware`, que é usado por todos os utilizadores reais do &kontact; (&ie; o `antonio`, o `ze`, a `amanda`, &etc;), através da conta de IMAP com o seu utilizador e senha. Porém, desta forma, todos os utilizadores reais têm as mesmas permissões de leitura/escrita dos outros, dado que toda a gente se liga com o utilizador `groupware` ao servidor de IMAP.

Para limitar o acesso a alguns utilizadores (tipicamente, oferecendo o acesso apenas para leitura), serão usadas as ACLs (Access Control Lists - Listas de Controlo de Acesso).

Seleccione no &kmail; uma subpasta da caixa de correio dados_escritorio, como por exemplo a Calendar e carregue com o botão direito do rato. Seleccione a opção Propriedades Controlo de Acesso. Aqui, poderá indicar os utilizadores a que deseja dar acesso a esta pasta, bem como o que eles poderão fazer.

Só para experimentar a troca de eventos, serão dadas Todas as permissões ao utilizador `maria`

Ao nível do cyrus (no PC que está a correr o servidor de IMAP da Cyrus, com as ferramentas do cyrus), terá primeiro de adicionar o utilizador `maria`, para que seja um utilizador reconhecido de IMAP, e criar uma pasta de IMAP para ela.

Depois, ligue-se ao GNU/Linux como a `maria` e entre no &kontact;. Como foi mostrado anteriormente, será configurada uma conta de IMAP no &kmail; com os mesmos dados, com a diferença do utilizador (em vez do utilizador falso `groupware` e a senha senha, serão usados a `maria` e a senha dela).

Na árvore de pastas do &kmail;, desta vez verá a seguinte estrutura: dados_escritorio utilizador groupware Calendário e Tarefas. Verifique o correio (Ficheiro Verificar o Correio) pelo que terá também uma pasta inbox sob a dados_escritorio.

Agora, active a funcionalidade de 'groupware' do &kmail; e, no campo As pastas de recursos são subpastas de , coloque a inbox, que é uma subpasta da dados_escritorio.

Agora, active a funcionalidade de 'groupware' do &kmail; e, no campo As pastas de recursos são subpastas de , coloque a inbox, que é uma subpasta da dados_escritorio.

Neste momento, tem duas ramificações da pasta sob a dados_escritorio:

1. A inbox, com o Calendar, Contacts, Notes, Tasks e a Journal, que estão gravadas nas pastas de IMAP da `maria`, no servidor de IMAP

2. O utilizador, com a subpasta groupware e as subpastas a que a `maria` tme acesso (neste exemplo, à Calendar (Calendário) e às Tasks (Tarefas))

Carregue com o &RMB; na pasta Calendar do utilizador e verifique se é do tipo Calendário (se não, defina-a como tal) e se a utilizador Tasks é do tipo de Tarefas.

Agora, no Calendário, terá dois recursos de IMAP disponíveis, nos quais poderá escrever; como tal, se criar um novo evento, ser-lhe-á perguntado qual o que será usado (ou, se deixar disponíveis os recursos, locais, terá então 3!).

Terá de ir à pequena janela do lado esquerdo no Calendário, a que mostra os recursos disponíveis, e desligar os que não apontam para o local .groupware.directory (veja a parte final de cada pasta de recursos).

## Créditos

O autor considera-se pouco experiente e, para este HOWTO, só ofereceu o seu tempo e vontade. Para o conhecimento, ele deseja agradecer a algumas pessoas nos canis da 'freenode' pela sua competência, paciência e vontade de ajudar.

## Muito obrigado a:

- Pela parte de IMAP do Cyrus, no canal #cyrus:

  - [protagonist] Andy Morgan morgan@orst.edu

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

- Pela parte do &kontact; no canal do #kontact:

  - [till] Till Adam adam@kde.org

  - [dfaure] David Faure faure@kde.org

  - [mdouhan] Matt Douhan matt@fruitsalad.org

Muito obrigado, rapazes!

E, claro, o próprio autor, [markit] Marco Menardi mmenaz@mail.com

## Leituras Posteriores

## Referência

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

- Página Web do &kontact;: http://www.kontact.org

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

- Wiki da Comunidade do &kde;: http://wiki.kde.org

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

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

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