Como construir um sistema Postfix de alta disponibilidade?

11

Estou precisando configurar um espelho remoto para um servidor de postfix (onde o conteúdo de ambos os servidores de e-mail deve ser o mesmo a qualquer momento).

A idéia é que, se o servidor principal cair em algum momento, o servidor espelho tomará o seu lugar, gerenciará os novos e-mails recebidos e, quando o servidor de e-mail aparecer novamente, ele será atualizado com o novo e-mail. e-mails e devolva o controle para gerenciar os novos e-mails recebidos.

Os servidores de e-mail serão hospedados em locais diferentes (por exemplo, maindomain.com, themirrorsite.com).

Obter um servidor de backup simples não parece ser muito difícil:

Mas o problema é que essa configuração não tornaria o site de backup um espelho completo do servidor de e-mail principal (ele armazenará apenas os e-mails recebidos enquanto o servidor principal estiver inativo).

Existe uma maneira de obter a configuração necessária?

    
por VanHackman 21.08.2011 / 19:35

4 respostas

21

O resultado que você deseja alcançar e a maneira pela qual você decidiu fazê-lo são coisas muito diferentes. Para ser franco, o que você quer implementar é uma má idéia, e se você conseguir de alguma forma fazer funcionar, não funcionará por muito tempo (ou muito bem).

O que torna essa pergunta difícil de responder é que você pulou direto para a implementação e não descreveu qualquer coisa útil sobre o seu ambiente ou o que você está tentando realmente alcançar. Por favor, não faça isso, você obterá resultados muito melhores aqui se você "mostrar o seu trabalho".

Deixem-me colocar alguns cenários, no entanto, para lhe dar uma ideia do que é possível, prático e útil:

  • Garantir que nenhum e-mail seja perdido : (não acho que isso seja o que você precisa, pois a documentação a que você se refere cobre adequadamente) Tudo o que você quer ter aqui é garantir que, independentemente de quanto tempo seu e-mail a infra-estrutura de entrega e gerenciamento está acabando, você não vai devolver nenhum e-mail e pode controlar quando a entrega é feita. Para isso, um backup simples "off-site" MX funcionará de forma adequada. Eu digo "simples" porque você precisa replicar muitos dados para o backup (toda a lógica anti-spam, informações válidas de usuário / alias para que você possa rejeitar corretamente mensagens inválidas no horário SMTP, esse tipo de coisa), mas é tudo scriptável , automatizável e razoavelmente trivialmente implementável com um pouco de cuidado. Desde que você tenha disco suficiente para enfileirar todos os e-mails, você pode enfileirar por semanas ou meses até que o seu site primário volte e você pique o backup MX e descarregue uma métrica de correspondência na sua infraestrutura de e-mail e seus usuários vá "aaaaaaahhh!"
  • Garantindo a disponibilidade total do sistema de e-mail : Parece que é isso que você quer, mas não é simples nem bonito. Basicamente, você quer ser capaz de fornecer serviço de correio "completo" para sua base de usuários no caso de uma falha completa do site. Em princípio, isso é realmente impossível, porque a replicação não é instantânea, mas você pode chegar a um nível razoável de confiabilidade, pelo menos. O pouco difícil não é o MTA, no entanto; é a própria loja de correspondência. Você precisará descobrir uma maneira de replicar todas as operações de armazenamento de e-mail (nova entrega de mensagens, alterações de estado de mensagens, exclusão) para o segundo site quase em tempo real - e fazer das duas formas, dependendo de qual site estiver ativo . Você pode escolher a opção barata, de um rsync periódico (com o risco de que qualquer coisa feita desde o último rsync tenha sido para sempre se precisar de failover), ou ir para várias replicações em nível de arquivo ou bloco técnicas para tentar manter as coisas em sincronia em tempo quase real (reduzindo a quantidade de perda de dados em troca de configuração e operação significativamente mais complicadas). Alguns sistemas de correio têm suporte para algum tipo de replicação embutida, o que pode facilitar a vida. Depois, há toda a questão do failover, e como você faz isso e, em seguida, falha voltar , que é mais difícil novamente, e finalmente você tem que testá-lo periodicamente, para garantir que você atualize fez um tempo atrás não quebrou nada ...

Basicamente, a última opção é dolorosa e irritante. Minha preferência pessoal, se você puder se safar (e você ficaria surpreso com a frequência que você pode) é colocar todos os seus ovos em uma cesta, depois de ter certeza de que você tem uma cesta muito boa e robusta (engenharia de sistemas apropriada). ), mantendo um estoque de remendos e ferramentas na mão (com foco em Alta Recuperabilidade , e assegurando que as pessoas saibam que de vez em quando, alguns ovos podem ser quebrados e você realmente sente muito, mas a vida não é perfeita (não faça garantias de SLA que não são razoável).

Há momentos em que você precisa de alta disponibilidade e eu construí sistemas que garantem isso, mas eles não são simples e, em muitos casos, não são econômicos, e é para isso que estamos aqui . Sim, HA é legal e sexy, e você ganha credibilidade por construir uma gigantesca monstruosidade de complexidade, mas não estamos aqui para afagar nossos egos. Estamos aqui para oferecer valor comercial, e me desculpe, mas um cluster de email de vários locais e altamente disponível da Rube Goldberg provavelmente não oferecerá tanto valor quanto um serviço de correio simples e robusto e, ocasionalmente, "nós" desculpe pela interrupção do e-mail, teremos os sistemas de volta em uma hora, por favor, sinta-se à vontade para tomar um café e um bolinho em nós "anúncio.

    
por 22.08.2011 / 00:46
1

Você pode conseguir isso por meio do failover do DNS MX + de um sistema de replicação de dados.

Para failover do MX: Dois servidores de email, precisam de ajuda com a configuração do DNS para o backup

Para replicação de dados: link

- $

    
por 22.08.2011 / 01:31
1

Eu usei o dbmail para realizar uma solução semelhante. O dbmail armazena todo o email em um banco de dados. Você pode configurar a replicação de banco de dados para garantir que seus e-mails também sejam armazenados no local remoto. Isso torna o gerenciamento do sistema de e-mail mais complicado, já que você precisa gerenciar o banco de dados e o e-mail.

    
por 22.08.2011 / 20:18
0

O que você quer é a replicação do Postfix, que eu não acho que o Postfix suporta nativamente. A solução que vi outras pessoas usando está replicando os arquivos de dados do Postfix entre servidores usando um sistema de arquivos distribuído.

    
por 21.08.2011 / 20:19