Postfix: Habilitando autenticação via SMTP (Centos 7)

Olá ! Quem acompanha meus artigos pôde observar que atendo algumas demandas de envio de e-mails por aplicações com o Postfix. É um cenário interessante e com algumas peculiaridades, e o Postfix como sempre surpreende pela flexibilidade e desempenho, em um ambiente que configurei é gerado um volume médio de 500 mil mensagens por dia.

Na última demanda que recebi havia a necessidade de configurar um SMTP para aplicações com autenticação, isto é, os sistemas irão se autenticar e não serem liberados pela diretiva mynetworks. Para esta demanda as configurações foram feitas em um CentOS 7. A principal dúvida é como habilitar a autenticação no Postfix, e especialmente nestes cenários para aplicações, qual base utilizar para cadastro dos usuários.

Para atendar a demanda, irei utilizar como base para os usuários uma base local do SASL. Além do Postfix instalado, segue a relação de pacotes que devem estar instalados:

Captura de tela de 2014-12-08 14:50:50

Assumindo que você já tenha o Postfix com as configurações básicas instaladas, as seguintes configurações devem ser feitas para habilitar a autenticação no arquivo main.cf:

smtpd_sasl_path = sasl2/smtpd.conf
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

O arquivo /etc/sasl2/smtpd.conf deve ser criado com o seguinte conteúdo:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5

Efetuadas estas configurações, os serviço do SASL precisa ser iniciado e do Postfix recarregado. Para confirmar se o Postfix está com o suporte a autenticação, após conectar no mesmo e executar o comando EHLO o seguinte resultado deve ser apresentado:

Captura de tela de 2014-12-08 14:51:49

Observe as linhas que iniciam com “250=AUTH”, são as que indicam o suporte à autenticação.

Para criar os usuários, o comando saslpasswd pode ser utilizado. Veja o nosso exemplo com o usuário “autentica”:

saslpasswd -c autentica

Para testar a autenticação via TELNET, precisamos converter o usuário (autentica) e senha (123456) para Base64:

perl -MMIME::Base64 -e ‘print encode_base64(“00autentica00123456“);’

Captura de tela de 2014-12-08 14:51:07

Para testar de fato, conecte-se via TELNET e após executar o comando EHLO autentique-se com o seguinte comando:

AUTH PLAIN “Usuário e Senha em Base64”

A resposta para o comando deve ser “AUTHENTICATION SUCCESSFUL”

Caso queira controlar quais endereços cada usuário pode utilizar como remetente, é necessário configurar o controle de identidade no Postfix, que fica para um próximo artigo.

Referências:

http://wiki.centos.org/HowTos/postfix_sasl

Authenticated SMTP with Postfix on CentOS, the easy way

Anúncios

Postfix: Efetuando relay em hosts que exigem autenticação E nas portas SUBMISSION ou SMTPS

Olá ! Em um post anterior eu tratei as configurações necessárias para configurar o Postfix para efetuar relay em um servidor que exige autenticação: https://respirandolinux.wordpress.com/2014/10/25/postfix-efetuando-relay-em-hosts-que-exigem-autenticacao/

Ocorre que muitas vezes é necessário efetuar o relay no servidor utilizando as portas SUBMISSION (587) ou SMTPS (465). Para que seja possível efetuar essa entrega, as configurações abaixo podem ser utilizadas (exemplo com destino utilizando submission):

O parâmetro que define o host para onde será encaminhada a mensagem é o relayhost:

Exemplo:

relayhost = servidor-externo.laboratorio.com.br

Agora para fazer com que o Postfix autentique ao efetuar o relay e inicie a encriptação exigida pelo serviço SUBMISSION, insira as configurações conforme abaixo:

relayhost = servidor-externo.laboratorio.com.br:587
smtp_sasl_password_maps= hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous, noplaintext
smtp_sasl_tls_security_options = noanonymous

O grande detalhe aqui está no parâmetro smtp_sasl_password_maps, onde iremos inserir no arquivo criado o usuário e senha para autenticação no host definido em relayhost.

O arquivo deve ser criado no seguinte formato:

hostname-do-relayhost.fqdn:porta                     usuario:senha

Nosso exemplo:

servidor-externo.laboratorio.com.br:587              usuario:senha

Efetuadas as configurações, rode o postmap no arquivo /etc/postfix/sasl_passwd e efetue um reload no serviço do Postfix.