Resolvendo inconsistências entre servidores Backend e Mupdate Master (Murder)

É possível que a relação de caixas postais do servidor Mupdate (Murder) perca a consistência com os servidores Backend do ambiente, como por exemplo uma caixa postal não estar mais listada no Backend e o Mupdate ainda a mantenha em sua lista. Isso pode ocorrer por falhas de comunicação (rede) entre os servidores ou erros de I/O no Mupdate. Como o servidor Mupdate é autoritativo no ambiente do Cyrus Aggregator, isto é, sua relação é considerada mandatória, não é possivel forçar novamente a criação de uma caixa no Backend que erroneamente esteja sendo listada no Mupdate.

No caso de ocorrer muitas inconsistências, o procedimento recomendado é:

  1. Parar o serviço do Cyrus no servidor Mupdate
  2. Parar o serviço do Cyrus no Backend
  3. Remover a relação de caixas posais (mailboxes.db) no servidor Mupdate
  4. Executar o comando ctl_mboxlist -m -a -w no servidor Backend como usuário Cyrus e com o serviço parado, o -w irá simular a operação, caso esteja de acordo, basta executar novamente sem esta opção.

Porém, não é viável parar o serviço caso ocorram pequenas inconsistências, para isso o utilitário cyr_dbtool do Cyrus, pode ser utilizado, ele consegue manipular o arquivo mailboxes.db, que geralmente fica no formato skiplist, sem a necessidade parar o serviço. Vejamos sua utilização:

/usr/lib/cyrus/bin/cyr_dbtool /caminho/mailboxes.db skiplist show

Informamos o caminho do arquivo (não é permitido utilizar caminhos relativos), seu formato, e por último, a operação a ser executada. Neste caso irá listar todos os registros presentes no arquivo.

Exemplo com o resultado do comando executado em um servidor Mupdate:

user.fabio            1 nome_do_backend!default fabio    lrswipkxtecda
user.fabio.Drafts    1 nome_do_backend!default fabio    lrswipkxtecda    
user.fabio.Sent     1 nome_do_backend!default fabio    lrswipkxtecda        
user.fabio.Trash    1 nome_do_backend!default fabio    lrswipkxtecda

Para remover um registro, utilizamos a operação delete:

/usr/lib/cyrus/bin/cyr_dbtool /caminho/mailboxes.db skiplist delete user.fabio
/usr/lib/cyrus/bin/cyr_dbtool /caminho/mailboxes.db skiplist delete user.fabio.Drafts
/usr/lib/cyrus/bin/cyr_dbtool /caminho/mailboxes.db skiplist delete user.fabio.Sent
/usr/lib/cyrus/bin/cyr_dbtool /caminho/mailboxes.db skiplist delete user.fabio.Trash

Desta forma, os registros serão removidos imediatamente da base, sendo possível criar as caixas novamente no servidor Backend. O comando não permite o uso de caracteres coringas.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s