Garanta Alta Disponibilidade em Projetos com Postfix: Guia Prático

Garanta Alta Disponibilidade em Projetos com Postfix: Guia Prático

Aprenda nesse artigo  adicionar alta disponibilidade em seus projetos com Postfix com a inclusão de relay para encaminhar mensagens para mais de um servidor e garantir a operação


Durante meus projetos como sysadmin estive diante de duas funcionalidades interessantes no postfix. Uma  das técnica é a utilização de servidores terceiros para realizar o disparo de envio, quando você possui um gateway de e-mail e por trás dele é necessário ter outro ou outros servidores de e-mail para repassar esta mensagem, você utiliza o host relay.

Agora se você já possui o host relay e quer manter uma alta disponibilidade de envios, você irá utilizar o smtp fallback relay ou fallback relay, variando o parâmetro de acordo com a versão do Postfix.

relay

Ele dará a você uma segunda opção de gateway de envio. Como assim ? Você possui 1 gateway de envio, apenas este servidor está enviando e-mail, agora este servidor fica sem comunicação, o que acontece ? Você irá parar de enviar e-mail, sendo refém apenas de um servidor. Com o smtp fallback relay, ele irá tentar fazer o relay para o servidor 1, se o servidor 1 não responder, ele automaticamente envia para o servidor 2, o servidor que você configurou como fallback, isto tudo automático, sem precisar ficar alternando ip’s entre servidores para conseguir manter os envios.

CRIANDO O CENÁRIO

Vamos lá, vamos criar um exemplo para o host relay, você tem um servidor anti-spam e quer que todos os envios da sua empresa sejam centralizados nele, então este servidor será seu gateway de envio, neste caso você irá criar um host relay para ele, seguindo o seguinte fluxo:

relay

Neste exemplo, os 2 servidores locais, ao realizar um envio, eles não enviam direto para o destinatário assim economizando recursos, eles enviam para o gateway, o gateway analisa o e-mail e ele é responsável por entregar o e-mail ao destinatário.

Configurando relay

Vamos partir do princípio que as suas 3 máquinas já estão configuradas na mesma rede e realizando envios normalmente, neste caso você irá acessar o arquivo main.cf, o principal arquivo de configuração do postfix.

Nas máquinas servidores locais, você irá configurar para qual máquina você irá redirecionar o envio, agora na gateway, irá informar quais redes estão autorizadas a realizar o disparo por ele.

Servidor local

relay

# vim /etc/postfix/main.cf

na linha do relayhost você irá inserir o ip da máquina gateway:

relayhost = 192.168.0.254

saia salvando e reinicie o serviço do postfix.

# service postfix restart

Servidor Gateway de envio

Nele irei autorizar apenas a minha rede realizar envio para ele, então irei acessar novamente o main.cf porem agora do servidor gateway e irei autorizar qualquer ip que estiver na minha rede poderá realizar envio por ele, encontre a linha com o mynetworks e adicione a sua rede. No meu caso eu deixei o localhost e todos que for da mesma range de ip.

# vim /etc/postfix/main.cf

mynetworks = 127.0.0.0/8,192.168.0.0/24

salve e reinicie o serviço do postfix

# service postfix restart

Verificando o serviço:

Ao verificar o log  dentro de /var/log/mail.log do postfix  servidor local, irá aparecer o ip que foi feito o relay e se o envio foi realizado:

to=<usuario@dominio.com.br>, relay=192.168.0.254[192.168.0.254]:25, delay=0.05, delays=0.02/0.01/0.01/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as CFA587FC40)

Agora no gateway de email irá mostrar que foi recebido um relay e de onde foi o relay:

Jun  5 16:29:22 postfix2 postfix/smtpd[4885]: connect from postfix1.4linux.int[192.168.0.250]

Jun  5 16:29:25 postfix2 postfix/smtp[4889]: CFA587FC40: to=<usuarioteste@gmail.com>, relay=gmail-smtp-in.l.google.com[64.233.190.26]:25, delay=2.8, delays=0.01/0.01/2.1/0.73, dsn=2.0.0, status=sent (250 2.0.0 OK 1496690967 c22si6177024qtd.74 – gsmtp)

Dica:

relay host autenticado

O relay host criado anteriormente serve para servidores na mesma rede, agora se você possuir um provedor de e-mail, como exemplo, alguma empresa de envio de e-mail em massa e a autenticação é feita através de login e senha criptografadas, você irá ter que adicionar alguns parâmetros a mais. Vamos para o segundo exemplo:

relay

Vamos abrir novamente o main.cf nele iremos adicionar as seguintes linhas:

relayhost = [smtp.4linux.com.br]:587

smtp_use_tls = yes

smtp_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt

salve e vamos criar o arquivo de autenticação:

# vim /etc/postfix/sasl_passwd

[smtp.4linux.com.br]:587 usuario:senha

salve e saia do arquivo.

Agora vamos dar permissão para este arquivo:

# chmod 600 /etc/postfix/sasl_passwd

 

O postfix não consegue ler arquivos de texto, então vamos mudar para uma forma que ele consiga ler :

# postmap /etc/postfix/sasl_passwd

 

Garanta que a linha da criptografia esteja dentro do /etc/postfix/master.cf, se não tiver adicione:

 

# vim /etc/postfix/master.cf

tlsmgr     unix         –       –       n       1000? 1 tlsmg

 

Assim que garantir que a criptografia tls encontra-se no master, vamos reiniciar o postifx

# service postfix restart

Pronto, basta realizar o envio e verificar o log no /var/log/mail.log novamente.

UTILIZANDO FALLBACK

Vamos criar um cenário com 2 servidores como gateway de saída, porém um ficará como secundário, caso o primeiro não responda, ele irá redirecionar os envios :

relay

Agora vamos configurar o smtp fallback relay de acordo com a versão do postfix, no meu caso estarei utilizando a versão 2.11.3-1.

Servidores Locais

relay

Nos servidores locais que já encontra-se com o relayhost configurado, vamos acessar o main.cf e adicionar a seguinte linha:

# vim /etc/postfix/main.cf

smtp_fallback_relay = 192.168.0.253

Então ficará da seguinte forma:

relayhost = 192.168.0.254

smtp_fallback_relay= 192.168.0.253

O que eu fiz ? Avisei o postfix de que caso o relayhost não esteja acessível é para enviar para o smtp fallback relay.

 

salve e reincie o postfix

# service postfix restart

 

Pronto, Agora se você derrubar a conexão com o gateway 1, ele irá redirecionar os envios automaticamente para o segundo gateway da seguinte forma:

relay

Para acompanhar essa mudança, acesse /var/log/mail.log, ele irá tentar realizar o envio e irá tentar disparar para o primeiro gateway na primeira vez, após 30 segundos tentando realizar o disparo e não houve a comunicação com o primeiro, ele redireciona automaticamente para o segundo:

Caso queira alterar o tempo, adicione dentro do main.cf a linha de timeout :

# vim /etc/postfix/main.cf

smtp_connection_timeout=10

saia salvando e reinicie o serviço.

Log do relay:

to=<emaildeteste@gmail.com>, relay=192.168.0.253[192.168.0.253]:25, delay=30, delays=0.01/0/30/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as F2EC5801CA)

Jun  5 17:34:58 postfix1 postfix/qmgr[9149]: B8BC0801C9: removed

Após reduzir o prazo:

Jun  5 17:49:44 postfix1 postfix/smtp[9708]: 364AE801C9: to=<emaildeteste@gmail.com>, relay=192.168.0.253[192.168.0.253]:25, delay=1.2, delays=0.05/0.01/1.1/0.05, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 7904F801CA)

Jun  5 17:49:44 postfix1 postfix/qmgr[9650]: 364AE801C9: removed

Seu relayhost e fallback relay estão funcionando corretamente, ambas as 2 funcionalidades do postfix são muito úteis em cenários que você utilize mais de 1 servidor e necessita garantir o envio de e-mail, um dos serviços mais importantes na sua infra.

 

Anterior Guia Prático: Como Configurar um Cluster de OpenShift Origin
Próxima Mulheres na Programação: Quebrando Paradigmas no Desenvolvimento de Software

About author

Gabriel Araujo
Gabriel Araujo 4 posts

Gabriel Policante Araujo, atua como Analista de Infraestrutura em Software Livre, formado em Redes de Computadores pelo Senai Suíço e cursando Análise e Desenvolvimento de Sistemas pela Universidade de Santo Amaro. Possui experiência em ferramentas voltadas para aplicação da cultura Devops, com ênfase em automação, Aplicações de e-mail como Zimbra e Arquiteto Multi Cloud. Detém expertise como instrutor de cursos voltados ao Sistema Operacional Linux, possui Certificação LPIC1 e LPIC2.

View all posts by this author →

Você pode gostar também

Infraestrutura TI

Entenda a Alta Disponibilidade com Pacemaker e Corosync

Fugindo um pouco dos tópicos mais quentes como Cloud Pública, IaC, DevOps e SRE, hoje veremos alguns elementos que são usados como base de muitos serviços que utilizamos: Clusters. Entender

Big Data

Engenheiro de Dados: a profissão essencial na era da informação

Profissões tendem a desaparecer e surgir com outras roupagens em um mundo onde a quantidade de conhecimento cresce exponencialmente. Embora esse fenômeno cause crises em algumas áreas, ele pode ser

Infraestrutura TI

Guia prático: Como criar grupos e aplicar regras de política com SUDO no FreeIPA

Este é o terceiro post de uma série de publicações sobre o FreeIPA. Até aqui vimos em outros posts como subir um servidor IPA e também seus clientes, como criar