Zimbra é uma ótima ferramenta Open Source para colaboração de e-mail, que aos poucos vem tomando lugar frente ao Exchange Server e outras ferramentas de colaboração proprietárias.
A ferramenta pode ser utilizada de maneira “Self-Hosted”, ou seja, hospedada localmente em sua empresa. Desde que, você possua um servidor, de preferência com discos de alta velocidade e bom processador.
Memória é uma questão a se pensar, pois o Zimbra é um “gastão de memória”, quanto mais memória você entrega a ele, mais ele irá utilizar.
Bons críticos, culpam o Java. Mas como não tenho muito conhecimento em desenvolvimento Java, não vou opinar.
Estou apenas avisando que se você disponibilizar 64 GB de memória para ele, esta será consumida. E isto nem sempre será necessário.
Existem basicamente duas versões do Zimbra: a ZCSO (Open Source) e a NE (Network Edition).
A diferença entre as duas são algumas “Features”, como por exemplo o protocolo MAPI (Colaboração) e a opção de backup no painel Admin.
O protocolo MAPI é uma feature muito boa, mas com certeza o que faz mais falta na versão Open Source é a ferramenta de Backup.
Então vou expor um script de backup, com versionamento das caixas postais.
O comando básico para fazer backup:
zmmailbox -z -m user@domain.com getRestURL '/?fmt=tgz' > user@domain.com.tgz
O comando básico para restaurar:
zmmailbox -z -m user@domain.com postRestURL "/?fmt=tgz&resolve=skip" user@domain.com.tgz
A partir dai podemos tratar com shell, perl ou a linguagem que está mais habituado.
Eu gosto de usar o shell para tudo, então antes de procurar qualquer alternativa em outra linguagem, eu tento primeiramente no shell.
Existem algumas considerações no momento do restore, algum parâmetros podem ser alterados.
- skip
- Restaura os itens deletados.
- Ignora os itens existentes completamente.
- modify
- Restaura os itens deletados.
- Atualiza os itens existentes e compara com o backup (Ex: Itens lidos e não lidos).
- reset
- Deleta todos os itens da conta.
- Restaura o backup em uma nova conta.
Lembrando que, o script foi feito para a minha necessidade. Analise se a sua é a mesma. =D
Backup Zimbra
#!/bin/bash
################################################### # Script de backup simples do zimbra ############### # Rubem de Lima Savordelli @ rsavordelli@gmail.com # ####################################################
# Dir home do Zimbra
ZHOME=/opt/zimbra # Dir de destino do backup ZBACKUP=/opt/zimbra/backup # Dir de confs do Zimbra ZCONFD=$ZHOME/conf # Data para versionamento DATE=$(date +%d-%m-%Y) # Caminho absoluto do backup, com data. ZDUMPDIR=$ZBACKUP/$DATE # Binário de backup ZMBOX=/opt/zimbra/bin/zmmailbox # Data para verificação do versionamento. # Seguindo a sintaxe, coloque quantos dias de versionamento quer. No meu caso eu deixei com dois backupold=$(date --date "2 days ago" +%d-%m-%Y) # Arquivo de log log=/var/log/backup.log # Arquivo de debug, passos mais importantes do script, para debugar mesmo. debug=/var/log/backup.debug # Conta a enviar e-mail no final do backup admin=notificacoes@domain.com
# Nao alterar daqui pra frente. # Remove Backups antigos echo " Removendo Backups antigos" >> /var/log/backup.debug sleep 5 # Verifica se existem diretórios mais antigos que o setado na variavel backupold if [ -d $ZBACKUP/$backupold ] ; then rm -rf $ZBACKUP/$backupold fi # Cria o diretório do dia. if [ ! -d $ZDUMPDIR ]; then mkdir -p $ZDUMPDIR fi
echo "backup $backupold removido" >> /var/log/backup.debug
# Gerando lista de contas para o backup. echo " Gerando lista ... " for mbox in `/opt/zimbra/bin/zmprov -l gaa` do echo " Gerando backup da conta $mbox ..." echo "Usuário $mbox" >> $debug
#Exportando contas com ZMprov e checando integridade. Caso a saida do comando seja um erro, envia um e-mail para a conta $admin echo "inicio backup `date` $mbox " >> $debug echo "=================================================" >> $debug $ZMBOX -z -m $mbox getRestURL "//?fmt=tgz" > $ZDUMPDIR/$mbox.tgz && echo "Backup da conta $mbox OK " || (echo "Subject: FALHA NO BACKUP DO ZIMBRA ";echo "Falhou") | /opt/zimbra/postfix/sbin/sendmail $admin echo "Fim backup `date` $mbox " >> $debug echo "=================================================" >> $debug done
2 comentários
Gustavo Salaberry
6 de agosto de 2014 em 09:02 (UTC -3) Link para este comentário
Adicionalmente eu também faço backup do LDAP adicionando o comando abaixo ao script.
/opt/zimbra/openldap/sbin/slapcat -F /opt/zimbra/data/ldap/config -b “” -l $ZDUMPDIR/zimbra-ldap.ldif
Rubem De Lima Savordelli
6 de agosto de 2014 em 09:09 (UTC -3) Link para este comentário
Legal Gustavo. Este post foi apenas das Mailboxes. Para o backup completo do zimbra precisariamos além do backup do Ldap, o backup do sqlite com as regras de cbpolicyd e do mysql do zimbra também.
Tenho um outro script que fiz para backup full do Zimbra, vou postar aqui pra vocês.
Me mande um e-mail (rsavordelli@aw2net.com.br) para te avisar quando eu postar.
Att,