Como configurar o Postfix para enviar emails usando um servidor SMTP externo?

Neste artigo, vamos mostrar como configurar uma instalação do servidor de email Postfix para fazer relay (retransmitir) emails através de outro servidor de correio com autenticação.

Essa configuração é útil para os seguintes cenários:

  • Você já possui um servidor de email e deseja que suas aplicações Web enviem email pelo servidor Postfix local em vez de se conectarem diretamente a um servidor de email remoto. Isso reduz a latência para a aplicação e também torna a entrega mais confiável (o Postfix tentará enviar a mensagem várias vezes).
  • Você deseja retransmitir os emails pelo Gmail ou outro serviço semelhante, como o Email Corporativo da CentralServer.

Instalando o Postfix

O primeiro passo é, obviamente, instalar o servidor de email Postfix.

NOTA: Se o seu servidor foi instalado a partir de um template padrão de servidor cloud da CentralServer, o Postfix já foi instalado. Neste caso, pode pular esta etapa.

Os comando para instalação variam conforme o “sabor” (“flavor”) do Linux que você estiver usando: “rpm” no Fedora, RHEL e CentOS, “yum” no Alma Linux e “apt-get” nos sistemas Debian, Ubuntu, como mostrado abaixo:

sudo apt-get install postfix

O instalador solicitará que você selecione um modelo para o arquivo de configuração. Se todos os emails serão retransmitidos, selecione “Sistema Satélite”; em seguida, digite o servidor SMTP para o qual irá encaminhar os emails no próximo prompt. Por exemplo:

[smtp.gmail.com]:465

Observação: você precisa colocar colchetes ao redor do nome do host, como “[exemplo.com]” ou “[exemplo.com]:465”, para garantir que a autenticação ocorra com este servidor de correio. Se simplesmente usássemos “exemplo.com”, o Postfix faria uma consulta de DNS para achar o servidor de email do domínio e poderia achar um servidor de entrada (MX) ao invés do SMTP que aceita autenticação.

Configurando a Autenticação

Agora, queremos que o Postfix se autentique com o servidor SMTP. Se você deseja fazer realay por meio de seu servidor dedicado de email, uma alternativa seria atualizar a configuração de “mynetworks” no servidor de email de destino para aceitar email sem autenticação (ou seja, autorizar somente por endereço IP). Aqui, porém, usaremos autenticação baseada em nome de usuário/senha.

Primeiro, edite o arquivo: /etc/postfix/main.cf

Você deverá encontrar a linha abaixo se você selecionou “Sistema Satélite” na instalação do Postfix. Caso contrário, você precisa adicioná-la ou modificá-la agora:

relayhost = [smtp.seudomínio.com.br]:465

NOTA: Substitua seudomínio.com.br pelo nome de domínio do seu servidor de e-mail.

Abaixo dessa linha, adicione as seguintes opções adicionais para habilitar a autenticação:

smtp_sasl_type = cyrus

smtp_use_tls = yes

smtp_sasl_auth_enable = yes

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

smtp_sasl_security_options = noanonymous

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

smtp_tls_wrappermode = yes

Aqui, estamos dizendo ao Postfix para usar a autenticação SASL e também habilitar o TLS para comunicação segura. Também informamos os caminhos para os arquivos: um com o certificado de autenticação confiável ​​(CRT) e outro com as credenciais de login (sasl_passwd).

O arquivo /etc/ssl/certs/ca-certificates.crt já deve existir no seu servidor. Já o arquivo com as credenciais de autenticação precisa ser criado.

Então, use o editor “nano” ou o “vim” para criar o arquivo /etc/postfx/sasl_passwd e insira o nome do relayhost (entre colchetes) e também o nome de usuário e senha da conta a ser usada para autenticação, no formato:

[smtp.seudomínio.com.br]:465 conta@seudomínio.com.br:senha

Em seguida, salve o arquivo.

O próximo passo é atualizar as permissões do arquivo para torná-lo legível apenas pelo usuário root:

chmod 600 /etc/postfix/sasl_passwd

E, agora, precisamos criar o arquivo adicional sasl_passwd.db contendo um pequeno banco de dados com o “hash” das credenciais (esse é o arquivo que será de fato usado pelo Postfix):

sudo postmap /etc/postfix/sasl_passwd

Por fim, recarregue o serviço do Postfix e tente enviar um email de teste:

systemctl reload postfix

echo ‘teste’ | mail -s ‘teste’ you@example.com

echo “Mensagem de teste” | mail -s “Mensagem enviada via Postfix” email_do_destinatario@domínio.com.br

Se as configurações foram feitas corretamente, a mensagem será entregue com sucesso. Para depurar alguma falha, verifique os arquivos de log do Postfix (/var/log/mail.log ou /var/log/maillog).

AVISO LEGAL: Os procedimentos descritos neste documento devem ser executados de acordo com o contexto de cada sistema, de forma a evitar impactos negativos à segurança, disponibilidade, integridade e privacidade de dados. A CentralServer se reserva o direito de modificar a qualquer tempo e sem aviso prévio as informações aqui apresentadas a fim de refletir o lançamento de novos serviços, atualizações físicas e operacionais, e evolução do estado-da-arte da tecnologia.