Arquivo

Textos com Etiquetas ‘Zimbra’

Zimbra: Recuperando MySQL corrompido

10, fevereiro, 2011 Sem comentários

Opa,

Recentemente tive um problema grave com o servidor de colaboração Zimbra, todo o tráfego de e-mail estava parado e, após uma busca nos logs, descobri que o problema estava no banco de dados MySQL que estava com algumas tabelas corrompidas, segue abaixo os passos que foram necessários para fazer um dump de todas as tabelas relacionadas, limpeza da base e importação dos dados.

OBS.: Mantenha sempre um backup, essa opção pode não funcionar em alguns casos! Não me responsabilizo pelo que pode ocorrer ao seu banco, realize esses passos por sua conta e risco!

Primeiro pare os serviços do Zimbra:

[zimbra@meuservidoremail ~]$ zmcontrol stop

Adicione a variável abaixo no arquivo de configuração do banco MySQL dentro da sessão [mysqld]:

[zimbra@meuservidoremail ~]$ vim /opt/zimbra/conf/my.cnf

innodb_force_recovery = 1

Inicie o serviço do MySQL:

[zimbra@meuservidoremail ~]$ mysql.server start

Carregue as variáveis do Zimbra:

[zimbra@meuservidoremail ~]$ source ~/bin/zmshutil ; zmsetvars

Crie uma lista dos bancos de dados existentes:

[zimbra@meuservidoremail ~]$ mysql –batch –skip-column-names -e “show databases” | grep -e mbox -e zimbra > /tmp/mysql.db.list

Crie um diretório na pasta tmp para armazenar os dumps dos bancos:

[zimbra@meuservidoremail ~]$ mkdir /tmp/mysql.sql

Faça o dump dos bancos:

[zimbra@meuservidoremail ~]$ for db in $(cat /tmp/mysql.db.list); do
~/mysql/bin/mysqldump $db -S $mysql_socket -u root –password=$mysql_root_password > /tmp/mysql.sql/$db.sql
echo “Dumped $db”
done

OBS1.: Se forem apresentados erros na execução dos dumps dos bancos, incremente o valor da variável innodb_force_recovery (o valor máximo é 6), reinicie o banco e execute o comando novamente até não obter erros.

OBS2.: Caso tenha problemas em executar os dumps acesse esse link para resetar a senha do banco MySQL.

Remova todos os bancos existentes e possivelmente corrompidos:

[zimbra@meuservidoremail ~]$ for db in $(cat /tmp/mysql.db.list |grep mbox)
do
mysql -u root –password=$mysql_root_password -e “drop database $db”
echo -e “Dropped $db”
done

[zimbra@meuservidoremail ~]$ mysql -u root –password=$mysql_root_password -e “drop database zimbra”

Remova a váriavel innodb_force_recovery do arquivo de configuração do banco MySQL e reinicie o serviço:

[zimbra@meuservidoremail ~]$ vim /opt/zimbra/conf/my.cnf
[zimbra@meuservidoremail ~]$ mysql.server restart

Crie os bancos e importe os dumps:

[zimbra@meuservidoremail ~]$ for db in $(cat /tmp/mysql.db.list)
do
mysql -e “create database $db character set utf8”
echo “Created $db”
done

[zimbra@meuservidoremail ~]$ mysql zimbra < /tmp/mysql.sql/zimbra.sql

[zimbra@meuservidoremail ~]$ for sql in /tmp/mysql.sql/mbox*
do
mysql $(basename $sql .sql) < $sql
echo -e “Updated $(basename $sql .sql) \n”
done

Teste o acesso ao banco e inicie os serviços do Zimbra:

[zimbra@meuservidoremail ~]$ mysql zimbra -e “select * from mailbox order by id desc limit 1”
[zimbra@meuservidoremail ~]$ zmcontrol start

Pronto! Verifique nos logs se os erros continuam e lembre-se de executar backup’s!

Abraço!

Fonte: http://wiki.zimbra.com/index.php?title=Mysql_Crash_Recovery

Categories: Linux Tags: , ,

Zimbra: Atualizando o Clamav

16, abril, 2010 2 comentários

Opa,

Recentemente (15/04) o software anti-vírus Clamav descontinuou as versões anteriores a 0.95.x (mais informações aqui), logo após essa operação os servidores que rodavam versões anteriores começaram a apresentar problemas, quando tentavam realizar a atualização das vacinas corrompiam o banco de dados e com isso os e-mail’s não eram entregues. Para solucionar esse problema foi necessário atualizar a versão do software, segue abaixo como consegui atualizar essa tarefa com o Zimbra em um servidor CentOS 5.4.

Antes de tudo recomendo a realização de um backup do seu sistema, pois como diz o ditado, “melhor prevenir…”, após essa tarefa faça o download do código (source) da última versão estável no site do Clamav (nesse post utilizei a versão 0.96).

Feito o download vamos instalar as dependências, descompactá-lo e executar os passos para a compilação e instalação do pacote:

# yum install gmp-devel bzip2-devel zlib-devel gcc
# tar -xvf clamav-0.96.tar.gz
# cd clamav-0.96
# ./configure --prefix=/opt/zimbra/clamav-0.96 --with-user=zimbra --with-group=zimbra
# make
# make check
# make install

Feita a instalação compare os antigos arquivos de configuração (clamd.conf e freshclam.conf) com os novos arquivos instalados, caso necessário realize os ajustes.

# cd /opt/zimbra/clamav-0.96/etc/
# mv clamd.conf clamd.conf.orig
# mv freshclam.conf freshclam.conf.orig
# cp /opt/zimbra/conf/{clamd,freshclam}.conf .
# diff clamd.conf clamd.conf.orig
# diff freshclam.conf freshclam.conf.orig

Pare o serviço:

# su - zimbra -c "zmcontrol stop"

Remova o link simbólico do clamav na pasta do zimbra e crie um novo link apontando para a nova versão:

# cd /opt/zimbra
# rm clamav
# ln -s /opt/zimbra/clamav-0.96 /opt/zimbra/clamav

Agora crie a pasta onde são armazenados os banco de dados das vacinas e ajuste as permissões:

# mkdir /opt/zimbra/clamav/db
# chown -R zimbra:zimbra /opt/zimbra/clamav-0.96

Atualize as vacinas e inicie o serviço:

# su - zimbra -c "/opt/zimbra/clamav/bin/freshclam"
# su - zimbra -c "zmcontrol start"

Execute o comando abaixo para ver se todos os serviços estão executando:

# su - zimbra -c "zmcontrol status"
Host meuservidor.exemplo.com
antispam                Running
antivirus               Running
ldap                    Running
logger                  Running
mailbox                 Running
mta                     Running
snmp                    Running
spell                   Running
stats                   Running

Caso o serviço antivirus não inicie verifique o log em /opt/zimbra/log/clamd.log.

Abraço!

Fonte: http://wiki.zimbra.com/wiki/ClamAV_-_Updating_Version

Categories: Linux Tags: , , ,

Zimbra: Criando um alias de domínio

9, novembro, 2009 12 comentários

Opa,

Geralmente quando temos diversos domínios em um servidor de e-mail separamos as contas, ou seja, podemos ter uma conta contabilidade@dominio.com.br, que receberá os e-mail’s do usuário contabilidade do dominio.com.br e outro endereço como contabilidade@outrodominio.com.br, que seria o usuário contabilidade do outrodominio.com.br, cada um recebendo os e-mail’s destinados à eles. Mas às vezes nos deparamos com a solicitação de que o novo domínio ou todos os domínios registrados no servidor de e-mail sejam apenas aliases para um único domínio previamente cadastrado, para solucionar essa tarefa no Zimbra basta executar alguns comandos, primeiro acesse com o usuário zimbra:

# su - zimbra

Versões inferiores à 5.0.16:

$ zmprov createDomain outrodominio.com.br zimbraDomainType alias zimbraMailCatchAllAddress @outrodominio.com.br zimbraMailCathAllForwardingAddress @dominio.com.br

Versões 5.0.16 e superiores:

$ zmprov createAliasDomain outrodominio.com.br dominio.com.br zimbraMailCatchAllForwardingAddress @dominio.com.br

Com isso todos os e-mail’s enviados para outrodominio.com.br serão direcionados para o dominio.com.br, exemplo:

fulano@outrodominio.com.br -> fulano@dominio.com.br
fl0cker@outrodominio.com.br -> fl0cker@dominio.com.br

Caso deseje adicionar mais um domínio basta executar novamente o comando alterando outrodominio.com.br pelo domínio desejado.

Abraço!

Fonte: http://wiki.zimbra.com/index.php?title=ManagingDomains#ZCS_5.0.16_and_later

Categories: Linux Tags: , ,