Marco
Menardi
gnu@kde.org
Marcus
Gama

    marcus.gama@gmail.com

Tradução

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

## Introdução

Para o meu escritório do autor, eu estava procurando há muito tempo uma solução de PIM que me permitisse compartilhar os dados, de modo que a minha secretária e eu pudéssemos compartilhar os contatos, compromissos e assim por diante. Sendo um usuário do &kde;, eu ouvi falar no projeto Kroupware e esperei pela sua finalização. Mas, quando eu vi a complexidade da arquitetura e da configuração do servidor Kolab 1.0 (o lado do servidor do projeto), eu desisti, ficando à espera de uma versão Kolab 2.0 mais simples. De qualquer maneira, os recursos do Kolab eram muito além do que minhas necessidades. Felizmente, no Wiki do &kde;, encontrei algumas conversas de IRC, onde se falava sobre o compartilhamento de dados sem a infra-estrutura do Kolab ... mmm muito interessante!

Para os pequenos escritórios e necessidades, você poderá ter o &kontact; usando dados compartilhados sem ter que instalar o servidor Kolab ou outra infra-estrutura de 'groupware'. Ele poderá trabalhar 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 o projeto 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 contatos, 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 (Protocolo de Acesso de Mensagens Internet). Um protocolo que permite a um usuário efetuar certas funções de correio eletrônico num servidor remoto, em vez de ser num computador local. Através do IMAP, o usuário poderá criar, remover ou renomear caixas de correio, obter mensagens novas, removê-las e efetuar funções de pesquisa no correio. É necessário um protocolo separado para o envio de correio. Também é chamado de Internet Mail Access Protocol (Protocolo de Acesso de Correio Internet).

Por isso, ele pode ser considerado um sistema de armazenamento de dados. Para usá-lo, você precisa ter um servidor de IMAP, como o Cyrus, o Courier ou o UW.

## Kolab ou IMAP?

O Kolab traz a possibilidade de compartilhar dados entre vários clientes. Ele permite que a sua secretária use o Outlook e você use o &kontact;, por exemplo.

Você terá que ter uma interface de configuração que faça o gerenciamento dos usuários, 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 eletrônico e vírus, os programas de férias, o tratamento da lista de livre-ocupado, o gerenciamento 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 eu, significa um pesadelo realmente longo e frustrante e muita complexidade para gerenciar, assim que funcionar. Assim, não obrigado, eu passarei a usar apenas o simples e bom IMAP.

## Como configurar o servidor de IMAP Cyrus

Minha escolha vai para o Cyrus, que faz parte do conjunto de aplicativos 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 usuário 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 que eu desconheço sobre um endereço de procura... eu simplesmente pressionei Enter.

O instalador também criou o usuário cyrus, que está no grupo (criado automaticamente)sasl, que é o dono de todos os arquivos do 'cyrus'. No final, com o comando `ps `-A``, você 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 eu possuo poucos conhecimentos do que estou fazendo.

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

Uma vez que eu não pretendo definir os usuários/senhas diferentes dos usados para acessar ao sistema &Linux;, eu optei por usar o shadow, de modo que o Cyrus use as senhas do &Linux; para a autenticação.

Para fazer isso, nós teremos que 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 usuário cyrus:

    # passwd cyrus

Insira a senha que desejar (e que você se lembre); 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 padrão auxprop

remova comentário `#` da linha:

    #admins: cyrus

desta forma, você poderá administrar o cyrus, entrando com o usuário cyrus (com qual fantasia eu tiver!)

    # vi /etc/default/saslauthd

Remova o comentário da linha:

    # START=yes

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

e, em vez de `MECHANISMS="pam"`, coloque `MECHANISMS="shadow"`; desta forma, na inicialização, 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á pedida a senha do cyrus (usuário), assim, introduza-a.

Se o usuário cyrus estiver corretamente autenticado, irão aparecer as seguintes linhas:

    S: L01 OK User logged in
    Authenticated.

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

Agora, adicione um usuário chamado groupware e defina uma senha para ele, 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, eu terei que criar o usuário e um IMAP no cyrus também:

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

Você poderá digitar ``help`` para obter uma lista com os comandos disponíveis.

Você 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, você deverá ser capaz de conectar-se com um cliente de IMAP como o usuário groupware e ver a `INBOX` (pasta de Recebidos).

No protocolo IMAP, a seleção da caixa de correio `INBOX` é uma palavra-mágica, uma espécie de apelido 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 arquivos.

## Como configurar os clientes do &kontact;

Eu conecto ao meu PC servidor do escritório, com GNU/Linux (uma espécie de "caixa preta" 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, eu pretendo substituir ambos por 2 clientes mínimos mini-ITX e usando o LTSP). Com esta configuração, todos os usuários rodam o &kontact; na mesma máquina em que o Cyrus está instalado e rodando (o 'localhost').

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

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

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

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

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

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

Para isso, logue-se ao &kde; com a primeira conta do usuário real, à qual pretende oferecer as funcionalidades de 'groupware'.

Vamos criar então a conta de IMAP no &kmail;.

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

Nome da Conta: `dados_escritorio`

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

Usuário: `groupware`

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

Senha:

  A senha do usuário groupware.

Servidor: `localhost`

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

Porta: `143`

  O valor padrão

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

Lembre-se que foi assinalado o tipo de conta IMAP desconectado. 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 conecta. Isto parece muito ineficiente, uma vez que os seus dados são duplicados várias vezes (&ie; se tiver 10 usuários que usam o &kontact;, terá 10+1 vezes os mesmos dados), mas é a única forma de fazer com que as coisas funcionem rapidamente já que, em todas as conexões, o &kontact; tem que obter todos os dados e fazer com que o &korganizer; e o &kaddressbook; os interpretem. Se usar o IMAP desconectado, os dados são mantidos localmente em 'cache', sendo enviado apenas o delta (&ie; os dados alterados).

Por outro lado, se os seus usuários executam o &korganizer; no mesmo PC que roda o servidor de IMAP, parece razoável usar o IMAP (isto é chamado de IMAP conectado) para poupar espaço, uma vez que a velocidade de transferência não deverá ser um problema. Porém, infelizmente, isto não funciona, porque o &kontact; não atualiza automaticamente a pasta de Calendário no IMAP conectado, assim, você não será atualizado quando alguém adicionar eventos (terá que mudar manualmente para o aplicativo &kmail; e clicar na pasta de Calendário). Além disso, na inicialização, quando ele lê as pastas de Calendário, você poderá ver uma intermitência tremenda e uma atualização lenta dos dados.

Agora, nós teremos que 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 ``kcmshell kresources``. Na lista, selecione os Contatos e clique depois no botão Adicionar..., onde poderá escolher o Livro de endereços num Servidor de IMAP através do KMail. Depois, selecione essa nova linha e clique em Usar como Padrão. Faça o mesmo para o Calendário e para as Notas.

Agora, nós teremos que habilitar a funcionalidade de 'groupware' do &kmail; (e, por consequência, de todo o &kontact;):

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

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

3. Escolha o Inglês como Idioma das pastas de 'groupware' (isto é no caso de já ter as pastas criadas no servidor de IMAP por um outro programa num idioma diferente).

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

   Desligue a opção Ocultar as pastas de 'groupware' por enquanto, para que possamos ver o que acontecerá. Você poderá voltar aqui e assinalá-la, logo que esteja tudo bem.

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

   Se você não quiser isto, clique em Não, ficando então o recurso de IMAP desativado. Clique em Sim (isto só acontece na primeira vez com o primeiro usuário real). Você verá imediatamente que, na árvore de pastas do &kmail;, sob a pasta dados_escritorio Inbox, serão criadas as subpastas:

   - Calendário
   - Contatos
   - Notas
   - Tarefas
   - Jornal

   se você fizer agora 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 usuário atual do &kontact;, mas sim nas pastas de IMAP do usuário groupware.

Agora, o &kontact; está pronto para trabalhar e guardar os dados aí. No aplicativo de calendário, se a conta de IMAP do &kmail; era do tipo desconectado, a janela do recurso irá mostrar o item Recurso de IMAP com 3 sub-itens, que são referências para arquivos locais do usuário. Por outro lado, o aplicativo dos Contatos não mostra sub-itens abaixo do Recurso de IMAP.

Você poderá agora logar-se ao &kde; com um usuário 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 Ativar 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 (uma vez que elas existem no servidor de IMAP), de modo que as verá na árvore de pastas.

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

Tenha cuidado observando que, no IMAP desconectado, os dados são transmitidos de um cliente para um servidor de IMAP, apenas quando o cliente se logar para verificar o correio novo. Assim, 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 usuários.

## Como Ter Acesso Apenas para Leitura

Tenha cuidado observando que a implementação de IMAP das Notas no &kontact; anterior à versão do 1.01 possui problemas, assim esta configuração não irá funcionar nesse caso; aí, se quiser usá-la, terá que usar a configuração anterior.

Na configuração anterior, existe o mesmo usuário falso, chamado groupware, que é usado por todos os usuários reais do &kontact; (&ie; o antonio, o jose, a amanda, &etc;), através da conta de IMAP com o seu usuário e senha. Porém, desta forma, todos os usuários reais têm as mesmas permissões de leitura/escrita dos outros, uma vez que todos se logam com o usuário groupware ao servidor de IMAP.

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

Selecione no &kmail; uma subpasta da caixa de correio dados_escritorio, como por exemplo a Calendar e clique com o botão direito do mouse. Selecione a opção Propriedades Controle de Acesso. Aqui, você poderá inserir os usuários aos quais 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 usuário maria

No cyrus (no PC que está a rodando o servidor de IMAP da Cyrus, com as ferramentas do cyrus), nós teremos primeiro que adicionar o usuário maria, para que seja um usuário reconhecido de IMAP, e criar uma pasta de IMAP para ela.

Depois, logue-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 usuário (em vez do usuário falso groupware e a sua senha, nós usaremos a maria e a senha dela).

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

Agora, ative 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, ative 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, você possui 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 usuário, com a subpasta groupware e as subpastas a que a maria tem acesso (neste exemplo, à Calendar (Calendário) e às Tasks (Tarefas))

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

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

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

## Créditos

Eu me considero pouco experiente e, para este HOWTO, só ofereci o meu tempo e vontade. Para conhecimento de todos, eu desejo agradecer a algumas pessas dos canais 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

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

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

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

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

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