Backup no Zimbra
Material necessário
Computador com acesso a CPU do Zimbra através do Putty.exe ou acesso a sua console
Realizado por
Gestor do TI
Observação
Informação retirada do site <https://stato.blog.br/wordpress/backup-no-zimbra/>
Backup no Zimbra ANDRÉ STATO 10 DE FEVEREIRO DE 2016 12 COMENTÁRIOS SERVIDORES, ZIMBRA
Descrição
Antes mesmo de falarmos do backup, devemos saber onde ficam localizadas as mensagens de nossos domínios e usuários.
Sabemos que o zimbra é instalado no diretório /opt/zimbra, e obviamente um backup completo pode ser feito copiando-se todo conteúdo desse diretório.
Um simples script, copiando todo conteúdo de /opt/zimbra, faria o backup full, o restore se daria novamente copiando todo conteúdo para a pasta e fixando as permissões através do comando abaixo :
/opt/zimbra/libexec/zmfixperms –extended
Mas onde ficam as mensagens dos usuários ?
As mensagens ficam localizadas em /opt/zimbra/store/0 . Dentro desta pastas teremos os id dos usuários, e não os nomes
Podemos identificar qual pasta de cada usuário usando os comandos do próprio zimbra:
su zimbra
zmprov gmi usuario@dominio.com
Obs: gmi significa getMailboxInfo
Aqui então conseguimos verificar o o mailbox do usuário andre@dominiolinux.net é o mailbox 3, então sua pasta ficará em /opt/zimbra/store/0/3. Desta forma podemos fazer backup diretamente da pasta, e restaurar diretamente para a pasta.
Podem ocorrer problemas de index quando feito backup, e comando adicionais devem ser executados.
A primeira coisa a ser feita é remover o índice da conta atual, os arquivos de índice ficam em /opt/zimbra/index/0/X , onde X é o id da conta, no caso do usuário andre@dominiolinux.net, é o valor 3. Desta forma o comando seria :
rm -rf /opt/zimbra/index/0/index/*
É possível já executar um comando, que descubra qual o id diretamente, com a junção dos comandos:
rm -rf /opt/zimbra/index/0/$(/opt/zimbra/bin/zmprov gmi andre@dominiolinux.net | grep mailboxId | awk ‘{ print $2 }’)/index/*
Agora podemos reindexar sem nenhum problema:
zmprov rim andre@dominiolinux.net status
Obs: rim significa reIndexMailbox
Este comando deverá ser executado depois de feito o restore, seja ele manual ou automático, através das ferramentas do zimbra.
Backup através do zmmailbox
Uma outra forma de fazer backup, obviamente não tão manual, é utilizando o zmmailbox, que é uma ferramenta que acompanha o zimbra, e é utilizada para backup de contas individuais.
zmmailbox -z -m andre@dominiolinux.net gru ” //? fmt = tgz” > /srv/backup/andrestato.tgz
Obs: gru significa getRestURL
Com isso já temos nosso backup pronto de uma única conta do Zimbra.
Agora iremos fazer o procedimento de restore. O mesmo comando é executado, mas com algumas alterações:
zmmailbox -z -m andre@dominiolinux.net pru “//? fmt = tgz&resolve=reset” /backup/andrestato.tgz
Obs: pru significa postRestURL
Podemos notar que acima existe um diretiva resolve com o valor reset. Na realidade existem 4 opções de resolve. O resolve informa como ele irá tratar mensagens existentes na caixa. No caso do reset, irá apagar o que existe e sobrescrever todo conteúdo.
Abaixo a opção do resolve:
skip: ignora itens duplicados, e é também o default para resolução de conflitos. Modify: Modifica itens antigos. reset: irá apagar os diretórios antigos (ou caixa de correio inteira). replace: irá apagar e re-inserí-los.
Criando um Script para fazer Backup de Todas as contas
Sabendo como funciona o backup individual de contas do Zimbra, fica bem simples fazer um script para fazer backup de todas as contas de uma única vez.
O primeiro passo é pegar todas as contas existentes através do comando zmprov. Exite uma opção gaa (getAllAcconts), que poderá listar todas as contas existentes. A partir desse comando, através de um grep –v, removemos as contas que não queremos fazer backup, tal como admin, gal, entre outras.
Com essa informação em mãos, dentro de um loop , podemos realizar o backup através do zmmailbox.
Vejamos as contas que são trazidas através do comando zmprov:
Podemos ver que as contas admin,spam, ham, vírus*, gal* não nos interessa, um pequeno filtro com o grep já irá remover essas contas:
zmprov –l gaa | grep –v –E “gal|vírus|admin|ham|spam”
Podemos então pegar essa lista, jogar para um loop como o for, e fazer os backups individuais de uma única vez. Abaixo o script, que poderá ser criando no /bin , neste caso irei chamá-lo de backupindzimbra.sh
#!/bin/bash for i in $( zmprov –l gaa | grep –v –E “gal|vírus|admin|ham|spam”);do zmmailbox -z -m $i gru ” ///? fmt = tgz ” > /backup/$ (date +%d-%m-%Y). $i.tgz done
Salve esse conteúdo no arquivo /bin/backupindzimbra.sh, altere as permissões e os donos para então executar:
chown zimbra.zimbra /bin/backupindzimbra.sh chmod 755 /bin/backupindzimbra.sh
Neste caso, foi executado o backup e encontrado 3 caixas de email, para deixar permanente, adicione ao crontab, no arquivo /etc/crontab, como exemplo abaixo, executando uma vez por semana, no sábado, as 12:00:
00 12 * * 6 zimbra /bin/backupindzimbra.sh
Backup e Restore a quente
Por padrão o Zimbra Open não oferece ferramenta para backup e restore a quente, sem parar o próprio serviço do Zimbra, diferente da Edição Network.
Mas existem muitas contribuições feitas pela comunidade, que permite que seja feito tal backup, mesmo no Open.
Uma ferramenta dessa foi concebida pela 4Linux chamada zmbkpose.
O zmbkpose é um shell script que utiliza o utilitário curl para trazer o conteúdo das caixas postais, via HTTP para um arquivo compactado que pode ser utilizado para restore.
Para instalação devemos seguir os passos abaixo:
1) Instalar dependências : apt – get install curl ldap-utils unzip git –y 2) Download do aplicativo no diretório /usr/src: cd /usr/src git clone git://github.com/bggo/Zmbkpose.git cd Zmbkpose ./install 3) Será solicitado a senha do administrador do zimbra, e posteriormente a informação que o software está instalado: Altere dentro do arquivo /etc/zmbkpose.conf, o email de noitificação em EMAIL_NOTIFY, eo WORKDIR para informa o destino do backup e por fim o endereço LDAP do Servidor Zimbra em LDAPMASTERSERVER: EMAIL_NOTIFY=andre@dominiolinux.net WORKDIR=/backup LDAPMASTERSERVER=ldap://localhost:389
Com ele já instalado, agora podemos fazer nossos backups e restores a quente.
Com ele podemos realizar os seguintes backups:
Backup Completo de todas as contas Backup Completo de uma conta Backup Incremental de todas as contas Backup Incremental de uma conta
Para realizarmos backup Full de todas as contas executamos o comando abaixo:
zmbkpose –f
Para backup full de um usuário:
zmbkpose –f andre@dominiolinux.net
Para backup incremental de todas as contas:
zmbkpose –i
E por fim para backup incremental de uma conta:
zmbkpose –i andre@dominiolinux.net
Com esses comandos simples podemos fazer backup full ou incremental de todas as contas ou de uma única conta.
Quando criamos um backup, é gerado um valor relacionado com a sessão, data do dia e com o prefixo full ou inc, que gerará uma pasta, onde serão feitos os backups, exemplo:
full-20141023010230 inc-20141023010231
Esse também será o valor que deverá ser passado em caso de restore.
Podemos consultar as sessões já realizadas através da opção –l. Veja abaixo:
zmbkpose –l
full-20141023010230 inc-20141023010231
O processo de restauração é bem simples, usando a opção –r para fazer a restauração de um email, ou vários , separados por vírgula. Mas o valor da sessão deverá ser informada. Veja abaixo dois exemplos, onde restauramos a conta de um e abaixo de dois usuários:
zmbkpose –r andre@dominiolinux.net full-20141023010230 zmbkpose –r andre@dominiolinux.net,caio@dominiolinux.net full-20141023010230
Uma outra opção muito interessante, é restaurar um backup de uma conta removida. Para tal usamos a opção –restoreAccount, exemplo:
zmbkpose -restoreAccount andre@dominiolinux.net
Neste caso do restore da Conta não é necessário a sessão.
Obs: Em relação a agendamento de Backup, use o crontab em /etc/crontab. Suas opções sintaxe é:
Minuto Hora DiadoMes Mês DiadaSemana usuário script
Onde: Minuto de 00 à 59, Hora de 00 à 23, Dia do Mês de 1 a 31, Mês de 1 à 12 e Dia da Semana de 0 à 7, onde 0 e 7 são domingo, 1 segunda, 2 terça, e assim sucessivamente.
No Crontab, usamos Dia da Semana, ou Dia do Mês e não os dois ao mesmo tempo. Um exemplo Simples , seria por exemplo um script para rodar o backup incremental diário e um Full aos sábados.
00 00 * * 1-5 zimbra /bin/zmbkpose –i 00 00 * * 6 zimbra /bin/zmbkpose –f
Lembre-se que sempre o comando zmbkpose, deverá ser executado pelo usuário zimbra.