Como criar um sistema Postfix de alta disponibilidade?

12

Estou precisando configurar um espelho remoto para um servidor postfix (em que o conteúdo dos dois servidores de email deve ser o mesmo a qualquer momento).

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

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

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

Mas o problema é que essa configuração não tornaria o site de backup um espelho completo do servidor de email principal (ele conterá apenas os emails recebidos enquanto o servidor principal estiver inativo).

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

VanHackman
fonte

Respostas:

22

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

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

Permitam-me apresentar alguns cenários, porém, para dar uma amostra do que é possível, prático e útil:

  • Garantir que nenhum e-mail seja perdido: (Acho que não é disso que você precisa, pois a documentação a que se refere o cobre adequadamente) Tudo o que você deseja ter aqui é a garantia de que, independentemente de quanto tempo sua infraestrutura de entrega e gerenciamento de mensagens estiver inativa, você não devolver qualquer correspondência e você poderá controlar quando a entrega será feita. Para isso, um MX simples de backup externo "simples" funcionará adequadamente. 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 devolver corretamente mensagens inválidas no horário SMTP, esse tipo de coisa), mas tudo é programável , automatizável e bastante trivialmente implementável com um pouco de cuidado. Contanto que você tenha disco suficiente para enfileirar todo o correio,
  • Garantir a disponibilidade total do sistema de correio : Parece que é isso que você deseja, mas não é simples ou bonito. Basicamente, você deseja poder fornecer um serviço de correio "completo" à 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 obter pelo menos um nível razoável de confiabilidade. A parte difícil não é o MTA; é a própria loja de correio. Você precisará descobrir uma maneira de replicar todas as operações de armazenamento de mensagens (entrega de novas mensagens, alterações no estado da mensagem, exclusão) para o segundo site quase em tempo real - e fazê-lo nos dois sentidos, dependendo de qual site estiver ativo . Você pode optar pela opção mais barata, de um rsync periódico (com o risco de que qualquer coisa feita desde o último rsync se acabe para semprese você precisar realizar o failover) ou optar por várias técnicas de replicação em nível de arquivo ou bloco para tentar manter as coisas sincronizadas 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 depois o retorno , o que é mais difícil novamente e, finalmente, você precisa testá-lo periodicamente, para garantir que a atualização do sistema operacional que você fez um tempo atrás não quebrar qualquer coisa ...

Basicamente, a última opção é dolorosa e irritante. Minha preferência pessoal, se você conseguir se safar (e você ficará surpreso com a frequência com que pode), é colocar todos os seus ovos em uma cesta, depois de garantir que você tenha uma cesta realmente boa e resistente (engenharia de sistemas adequada ), mantendo um estoque de remendos de cesta e ferramentas à mão (com foco na alta recuperabilidade ) e garantindo que as pessoas saibam que de vez em quando alguns ovos podem se quebrar e você sente muito, mas a vida não é perfeita (não faça garantias de SLA que não sejam razoáveis).

Há momentos em que você precisa de disponibilidade ultra alta, e eu desenvolvi 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, o HA é legal e sexy, e você recebe créditos nerds por criar uma monstruosidade de complexidade imponente, mas não estamos aqui para acariciar nossos egos. Estamos aqui para agregar valor aos negócios, e sinto muito, mas é provável que um cluster de correio multi-sites altamente disponível da Rube Goldberg não forneça tanto valor quanto um serviço de correio simples e robusto e o ocasional "nós" desculpe-nos pela falta de correio, teremos os sistemas de volta em uma hora, sinta-se à vontade para tomar um café e um bolinho em nós ".

mulher
fonte
2
Não poderia ter dito melhor.
voretaq7
4
Lamento que eu possa oferecer apenas um +1
mailq
Eu acho que um NAS basicamente resolve o problema de armazenamento e sincronização de correio, não é? Especialmente se sua loja de e-mail ficar grande e você estiver hospedando e-mails para vários domínios.
9609 Ernie
Não, um NAS representa cerca de 5% de todo o problema e faz coisas ruins ao seu desempenho e escalabilidade.
womble
1

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

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

Para replicação de dados: http://www.drbd.org/docs/install/

- $

SparX
fonte
O drbd funcionaria com servidores que não estão na mesma LAN? O servidor principal e o servidor de failover devem se comunicar apenas pela Internet; portanto, não tenho certeza se isso funcionará nesse caso.
procurando
O DRBD possui um produto de proxy proprietário que melhora bastante a replicação da WAN; não é barato e não há garantia de manter tudo atualizado em todos os lugares.
womble
1

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

Yavor Shahpasov
fonte
0

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

Klox
fonte
3
O Postfix de espelhamento é fácil. Mas esse não é o problema. O difícil é como sincronizar o armazenamento de mensagens (mbox ou Maildir). O armazenamento de emails no NFS para IMAP é quase impossível e leva a um ponto de falha único novamente.
mailq