Backup em tempo real de mensagens recebidas com o Zarafa + Postfix

2

Eu tenho um servidor Zarafa (com o Postfix como agente de entrega) que eu gostaria de adicionar backup em tempo real. Já:

  • Faz o backup do banco de dados com o mysqldump e todo o sistema de arquivos usando o rdiff-backup todas as noites.
  • Tem um retorno usando o DRBD (a máquina é uma máquina virtual Xen com back-end DRBD). Então, no caso de o primário ficar inativo, posso abrir a máquina virtual no host de backup instantaneamente.

Em caso de corrupção do sistema de arquivos / banco de dados, eu gostaria de ter um backup em tempo real do e-mail recebido para evitar a perda das mensagens recebidas após o backup noturno.

A entrega do Zarafa funciona assim (trecho do Postfix 'main.cf):

mailbox_transport = zarafa: zarafa_destination_recipient_limit = 1
virtual_alias_maps = mysql:/etc/postfix/mysql-aliases.cf

O transporte da caixa de correio (como definido no arquivo master.cf) é uma ferramenta que aceita dados no stdin para entregar na loja do Zarafa (baseada no arquivo mysql +). Virtual_alias_maps é um comando SQL que basicamente retorna o j.doe em [email protected] , mas apenas para usuários existentes. Em outras palavras, ele recupera o nome de usuário do Zarafa do endereço de e-mail.

Uma coisa que eu posso pensar, é entregar todos os e-mails para um segundo transporte que os envia para outro servidor. Esse servidor pode ser um servidor maildir de courier simples e o fetchmail pode ser configurado para reenviar usando o SMTP para um servidor restaurado do backup.

Mas, isso não é 100% elegante e eu nem sei como fazer isso ...

Alguma ideia de melhor / implementação ...?

Editar: agora tenho um segundo servidor de email configurado para que ele despeje todos os emails de entrada do domínio relevante em uma caixa de correio com X-Original-To: e Delivered-To: cabeçalhos, para que eu possa recuperá-los usando o fetchmail e entregá-los a esses endereços fetchmail tem uma opção para isso, eu tenho dito). Agora, deixar o Postfix no primário entregar a dois transportes ...

    
por Halfgaar 05.06.2012 / 14:40

1 resposta

2

Várias abordagens podem se adequar às suas necessidades aqui. Um deles é o DRBD, mas eu recomendaria isso apenas para sistemas de alta disponibilidade e de missão crítica.

  • O backup em nível MTA não leva em conta as alterações feitas em seu email (sinalizadores, leitura / não leitura, mudança para pastas, itens enviados) e não inclui outros itens de groupware, como calandragem, por exemplo. Eu considero isso não uma opção.
  • A replicação no nível do MySQL é quase em tempo real. Configure um escravo em um local remoto e, em caso de emergência, promova-o para ser seu mestre. Além disso, usar mysqldump em um escravo tem um impacto muito menor em seu ambiente de produção. Verifique também se você mantém seus anexos em sincronia (geralmente no sistema de arquivos) e precisa verificar a integridade do seu escravo regularmente.
  • Hotbackup InnoDB no nível do MySQL. Você poderia usar o kit de ferramentas da Percona para criar backups quentes de seu banco de dados do Zarafa com menos freqüência e rsync bando os arquivos de log binários com muita frequência (depois de liberar os logs). Pode-se reproduzir os logs no instantâneo consistente antigo para obter uma recuperação pontual.
  • Use o Archiver do Zarafa . Ele também fornece o arquivamento na entrega em combinação com o dagent e, embora seja chamado de "Arquivador", ele pode fazer mais do que apenas arquivar e-mails.
  • Use o MSR do Zarafa e mantenha-o funcionando em segundo plano. Ele manterá suas lojas sincronizadas no nível Zarafa.

Se você não tem certeza sobre como configurar isso no nível do MySQL, eu recomendo brincar com ele primeiro, para ficar confortável. Eu recomendo ler "High Performance MySQL" (O'Reilly) também.

    
por 11.09.2012 / 03:30

Tags