Marco
Menardi
gnu@kde.org
José
Pires

    jncp@netcabo.pt

Tradução

# 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

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.

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 'kresources' 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.

Now we have to tell &kontact; to use IMAP as the data source for its various components. From the &kmenu;, choose Run command, run ``kcmshell kresources``. In the combo box select Contacts, then press the Add... button, and choose Addressbook on IMAP Server via KMail. Then select that new line and press Use as Standard button. Do the same for Calendar and Notes.

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. Now move to Resource folder are in account and select the the Inbox subfolder of the office_gwdata folder.

   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.

Now enable &kmail; groupware functionality, and in Resource folders are subfolders of put the inbox that is subfolder of office_gwdata.

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