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.
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:
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
# 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:
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 :
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
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:
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.
About author
Você pode gostar também
Monitoramento de Dados: Como Utilizar o PostgreSQL e o PgPool com Zabbix
Com o mercado tecnológico cada vez mais crescente, o volume de dados aumenta significativamente a cada minuto, e esse volume é armazenado em diversos sistemas de banco de dados distribuídos.
12 Práticas Eficazes para Combater Ataques DDoS em Seu Servidor
Muito bem… como primeiro post por aqui… eu pensei em abordar um assunto que constantemente me abordam nos treinamentos e palestras e bate papos que tenho, que e sobre ataque
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