= Cyrus IMAP = O servidor Cyrus IMAP é o responsável em fornecer as mailboxes dos usuários. Ele é um servidor IMAP de alta performance que permite que vários usuários trabalhem simultanemanete na mesma mailbox, além de possuir funções de pesquisa, indice e compartilhamento muito avançadas. Para maiores informações sobre o protocolo IMAP e suas funções consulte o seguinte [http://pt.wikipedia.org/wiki/Internet_Message_Access_Protocol endereço]. O servidor Cyrus IMAP é compatível com praticamente todos os clientes IMAP disponíveis no mercado(Apple Mail,Android,Thunderbird,Outlook,Evolution,KMail). Atualmente a versão considerada estável pelo projeto é a 2.4.6. As distribuições de Linux costumam vir por padrão com o Cyrus 2.2 ou 2.3 == Funcionalidades == * Armazenamento: Utiliza um formato próprio para armazenar as mensagens parecido com o formato Maildir. * Indices: Suporta indices nos formato BerkleyDB ou no formato skiplist( padrão a partir das versões 2.4) * Autenticação: Utiliza da estrutura SASL. * Controle: Possui implementado as RFCs (5593,4551,5464,5551) que normatizam administração de servidores IMAP. Possui nativamente suporte há: * Hierarquia; * Autorização; * Quota. * Compartilhamentos * Suporta administração por mail de interface própria ( cyradm ) e várias linguagens como perl, python e java. * Conectividade: Possui suporte e módulos para diversas aplicações como: * Exim (MTA) * Postfix * !SpamAssassin * Clamav * Amavis * Filtros: Suporte built-in para filtros no lado do servidor(SIEVE). == Como configurar o Cyrus IMAP para funcionamento com o Expresso == Esta configuração é específica para uma configuração apenas com um servidor IMAP. O servidor também pode ser configurado de forma distribuída ( Cyrus Aggregation (Murder) ). Edite o arquivo /etc/imapd.conf e certifique-se que este arquivo contém as seguintes linhas: {{{ unixhierarchysep: yes admins: expresso-admin sasl_mech_list: PLAIN sasl_pwcheck_method: saslauthd allowusermoves: yes duplicatesupression: 0 lmtp_over_quota_perm_failure: 1 partition-default: /var/spool/imap configdirectory: /var/lib/imap defaultpartition: default }}} Edite o arquivo /etc/cyrus.conf e certifique-se que este arquivo contém as seguintes linhas: {{{ START { # do not delete this entry! recover cmd="/usr/cyrus/bin/ctl_cyrusdb -r" } SERVICES { imap cmd="imapd -U 30" listen="imap" prefork=1 imaps cmd="imapd -s -U 30" listen="imaps" prefork=1 lmtpd cmd="lmtpd" listen="lmtp" prefork=1 sieve cmd="timsieved" listen="sieve" prefork=1 } EVENTS { # this is required checkpoint cmd="/usr/cyrus/bin/ctl_cyrusdb -c" period=5 # SQUATTER indexa as caixas postais para pesquisa. squatter cmd="/usr/cyrus/bin/squatter -s -r user" at=2300 } }}} A lista de todos os parâmetros de configuração disponíveis pode ser acessada pelo shell através dos comandos {{{ man imapd.conf man cyrus.conf }}} == Administrando as Contas no Servidor Cyrus IMAP == A administração de cotas e compartilhamentos de caixa é feita pelo módulo Expresso Admin do Expresso. Quando você cria ou deleta uma conta de correio no Expresso Admin a operação é executada no Servidor IMAP. As contas de e-mail podem ser administradas pela linha de comando através do comando "cyradm" ou via scripts em perl, python e etc .... A ferramenta cyradm é um shell interativo para administração do cyrus. Abaixo segue um exemplo de conexão e criação de caixas: {{{ cyradm --server servidor.imap.expresso --user expresso-admin cm user/login ( criar caixa de usuário ) cm user/login/Sent cm user/login/Drafts cm user/login/Trash lm (lista as caixas) lq user/login ( listar quota do usuário: login ) sq user/login 1024000 ( Setar a cota de 1Gb para a caixa ) lam user/login ( Listar as ACLs de uma caixa ) lam user/login/* ( Para deletar uma caixa voce deve dar permissão ao expresso-admin para ela ) sam user/login expresso-admin all dm user/login }}} Maiores dúvidas sobre a administração podem ser consultadas no[http://www.cyrusimap.org/docs/cyrus-imapd/2.3.16/man/cyradm.1.php manual] do cyradm. ou pelo manual. {{{ man cyradm }}} == Criando scripts para Administração em lote das contas == O cyrus possui uma API em perl que permite a criação de scripts para tarefas rotineiras como criação de contas em massa, configuração de cotas, definir compartilhamentos e etc . Neste manual este assunto não vai ser abordado com detalhes. Uma biblioteca que facilita bastante o trabalho é a "[http://python-cyrus.sourceforge.net/ python-cyrus]" criada pelo Reinaldo Carvalho um dos colaboradores da comunidade Expresso. == Configurando o Expresso para utilizar um servidor Cyrus em uma máquina remota == A aplicação Expresso já prevê a distribuição dos seus serviços em outros servidores. Para o Cyrus, proceda da seguinte forma: {{{ - Se logue no expresso como expresso-admin; - Vá no módulo Administrador e procure pelo módulo Admin do Email (EmailAdmin); - Clique em "Configurações do Servidor"; - Edite o perfil e configure os novos parâmetros na aba POP3/IMAP; }}} == Funcionalidades avançadas do Cyrus IMAPD == === delay expunge: === === singleinstance store: === === Expirar mensagens de uma pasta automaticamente === == FAQs: == * Qual a versão do Cyrus IMAP devo utilizar ? * Quais as versões do Cyrus IMAP testadas com o Expresso ? * Porque o "restart" do serviço está demorando muito ? * Qual o limite de mailboxes que posso ter no cyrus imap ? * Quais os arquivos importantes em um backup do cyrus imap ? * Como restaurar uma instalação do cyrus imap ? * O que é o squat ? == Como funciona a estrutra de pastas do Cyrus == O banco de dados com as caixas do Cyrus fica localizado em '''{configdirectory}/mailboxes.db'''. A caixa de um usuário fica dentro de um path específico. Para descobrir aonde está a caixa de um usuário você pode usar o comando: {{{ mbpath user/login /var/spool/imap/l/user/login }}} Dentro de cada caixa existem arquivos de controle específicos. São eles os arquivos: {{{ cyrus.squat cyrus.cache cyrus.index cyrus.header }}} Caso um usuário não esteja conseguindo ler as mensagens ou elas se encontrem embaralhadas você pode reconstruir a caixa do usuário com o comando: {{{ reconstruct -rf user/login }}} dependendo da versao o comando é o: {{{ cyrreconstruct -rf user/login }}} == Mais informações == Maiores dúvidas visite o site: [http://www.cyrusimap.org Documentação do cyrus]