Conversão da base de dados do Cyrus IMAP no Debian

Este na verdade não é um artigo, mas sim a tradução do documento Readme Debian Database do Cyrus IMAP que fiz para me ajudar na manutenção das bases de dados da minha implementação do Cyrus.

[ Hits: 7.868 ]

Por: Claudio Rocha de Jesus em 07/01/2008


Conversão do Banco de dados de base



Cyrus IMAP para Debian: Conversão do Banco de dados de base
$Id: README.Debian.database 728 2007-06-19 15:18:11Z astronut $

"Todos os administradores de sistemas têm suas histórias de terror. Para mim, foi a configuração de uma HP Color Bubblejet no GNU/Linux usando ghostscript antes do projeto linuxprinting.org nascer. Bem que era um pedaço do bolo, em comparação com o que estou prestes a descrever neste documento."

         --  "Hosting email for virtual domains using Postfix and Cyrus"
                                     Haim Dimermanas, 2001-08-01

           "Eu o avisei para ler toda documentação antes, não avisei?"
                                    --  Henrique M. Holschuh, 2002-10-01

Para maiores informações, por favor consulte http://asg.web.cmu.edu/cyrus/imapd/.

Existe também Cyrus-HOWTO (Cyrus-IMAP.txt) disponível como parte coleção do LDP HOWTO. Dicas de atualização estão em UPGRADE.Debian. Documentação antiga irá lhe causar muita dor de cabeça, previna-se quando for procurar por informações que não seja na lista de ajuda do Cyrus.

Banco de dados de base

Cyrus pode ser compilado para usar diferentes tipos de banco de dados de base para cada tipo de base de dados. O pacote irá avisar se você tentar iniciar o Cyrus e o banco de dados de base parece ter mudado desde a última versão ativa.

Depois de converter todos os e-mails armazenados em /var/lib/cyrus para usar o banco de dados de base correta usando o cvt_cyrusdb(8), remova /usr/lib/cyrus/cyrus-db-types.active e execute "dpkg-reconfigure cyrus-common-2.2" uma vez para redefinir os contadores de erros e iniciar o cyrmaster.

Se o cvt-cyrusdb travar bem no início da conversão, sua base de dados pode ser bloqueada. Desbloqueá-la (ou seja, REALMENTE parar o Cyrus se ele continua funcionando), use os utilitários db* (através de uma versão antiga do Berkeley DB) para limpar qualquer trava, ou tentar uma reinicialização.

IMPORTANTE: Se você mudar o tipo de qualquer uma das base de dados através do arquivo imapd.conf, o arquivo cyrus-db-types.txt não é atualizado para corresponder as mudanças. Certifique-se de fazer uma verificação nos dois arquivos, caso isso ocorra.

Passo-a-passo, guia de conversão:

1. Pare o sistema Cyrus:

# /etc/init.d/cyrus2.2 stop

2. Descubra quais bases de dados converter:

# diff -u /usr/lib/cyrus/cyrus-db-types.active /usr/lib/cyrus/cyrus-db-types.txt

As base de dados da instalação padrão são estas:

	DUPLICATE		/var/lib/cyrus/deliver.db
	MBOX			/var/lib/cyrus/mailboxes.db
	TLS			/var/lib/cyrus/tls_sessions.db

Não se preocupe com a atualização da base TLS, basta excluí-la: a informação não é reutilizada quando você para o Cyrus.

Se a versão do BerkeleyDB é que foi alterada, você precisa usar o utilitário de atualização do Berkeley DB em todas as bases de dados "db*(versão)". Consulte as páginas man do db(versão)_upgrade. Note que você precisará usar o utilitário db(versão)_upgrade com a mesma versão dada na linha DBENGINE do arquivo cyrus-db-types.txt.

Você deve procurar linhas com 'berkeley' ou 'berkeley_nosync' no lado direito. Você pode seguramente ignorar linhas com 'flat', 'skiplist' or 'quotalegacy'.

As bases de dados SUBS e SEEN são diferentes: existem muitas delas (uma para cada usuário em SEEN e SUBS respectivamente) e você precisa converter cada uma delas.

   SUBS			/var/lib/cyrus/...../*.sub
   SEEN			/var/lib/cyrus/...../*.seen

Para versões do Cyrus 1.x, os arquivos estão em /var/spool/cyrus/...../.

SUBS contém as pastas de subscrição, e SEEN contém a visão de estado de todas as mensagens na pasta.

Tipos db3_nosync e db3 são os mesmos assuntos para conversão de base de dados.

2.1. Convertendo de DB* para SKIPLIST

Como usuário cyrus, faça o seguinte:

# cd /
# /usr/sbin/cvt_cyrusdb <caminho_completo base de dados> db3 \
/var/lib/cyrus/temp.db flat
# rm -f <caminho_completo base de dados>
# /usr/sbin/cvt_cyrusdb /var/lib/cyrus/temp.db flat \
<caminho_completo base de dados> skiplist
# chown cyrus:mail <caminho_completo base de dados>
# rm -f /var/lib/cyrus/temp.db


2.2. Convertendo de FLAT para SKIPLIST

Como usuário cyrus, faça o seguinte:

# cd /
# mv <caminho_completo base de dados> <caminho_completo base de dados>.old
# /usr/sbin/cvt_cyrusdb <caminho_completo da base de dados>.old flat \
<caminho_completo da base de dados> skiplist
# chown cyrus:mail <caminho_completo da base de dados>
# rm -f <caminho_completo da base de dados>.old


2.3. Bases de dados SUBS e SEEN

Sugiro utilizando um pequeno shell script e usando "find" para converter em massa as bases SEEN:

# find /var/lib/cyrus -type f -name '*.seen' -exec meushellscript {} \;

O comando "find" acima coloca o nome da base de dados com "$1" dentro do seu shell script.

3. Reinicie o banco de dados de base mudando o sistema:

# rm /usr/lib/cyrus/cyrus-db-types.active
# dpkg-reconfigure cyrus-common-2.2


4. Inicie o Cyrus, se não iniciar pelo passo 3:

# /etc/init.d/cyrus2.2 start

RAZÃO PELA QUAL NÃO EXISTE SCRIPT DE ATUALIZAÇÃO AUTOMÁTICA: Porque me incomoda pessoas que não lêem textos, e um usuário Debian perguntou-me exatamente a coisa errada (sobre cyrus21-imapd) enquanto estava no meio da edição de um script disse E o tempo tem estado bastante curto para mim ultimamente: será muito mais rápido escrever um documento do que escrever e testar um script. Portanto, agora todos terão de ler os documentos para conseguir fazer o Cyrus trabalhar novamente. Não estou a atrasar o skiplist para mudar um pouco mais o script.

Talvez algum dia vou terminar a atualização do script. Talvez alguém vai escrever um (Eu certamente vou incluí-lo no pacote, se for bom o suficiente). Não prenda sua respiração, no entanto.

-- Henrique de Moraes Holschuh <hmh@debian.org>
-- Traduzido por Cláudio Rocha de Jesus <crochadejesus@yahoo.com.br> em 2007-11-29 16:39

   

Páginas do artigo
   1. Conversão do Banco de dados de base
Outros artigos deste autor

Compilando o Mono 2.2 no Ubuntu 8.10

Git - Ciclo básico de trabalho

Implantação de um Sistema de Workgroup Open Source

Leitura recomendada

Instalação do Postfix e OpenWebmail no Slackware

Qmail - Servidor de email em 20 minutos

Evosign - Adicionar assinatura automática ao Evolution

Webmail Roundcubemail em PHP4/PHP5 com skins, LDAP e extras

Migrando entre clientes de correio eletrônico

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário