Poupe até 53% em Servidores VPS, escolha agora. Oferta limitada.

Guia: Postfix como relay SMTP com SASL e TLS no Fedora 42

17 min de leitura  ·  Guia técnico

Postfix como relay SMTP restrito é uma configuração em que o servidor aceita e retransmite mensagens apenas de clientes que provam identidade via SASL, com toda a comunicação cifrada por TLS. No Fedora 42, a combinação Postfix + Dovecot SASL + TLS é a forma mais robusta de eliminar o risco de open relay e manter o IP do servidor fora de listas negras. Para configurar o relay SMTP com SASL e TLS no Fedora 42, siga estes passos:

  1. Instale Postfix, Dovecot e as bibliotecas Cyrus SASL com DNF5
  2. Configure o socket Unix do Dovecot SASL com permissões corretas para o usuário postfix
  3. Edite /etc/postfix/main.cf adicionando os parâmetros SASL e TLS
  4. Ative a porta de submissão 587 com STARTTLS obrigatório no master.cf
  5. Libere as portas no firewalld e ajuste contextos SELinux
  6. Valide com postfix check e teste autenticação via openssl

Pré-requisitos para configurar relay SMTP restrito no Fedora 42

  • Fedora 42 instalado com acesso root ou sudo via SSH
  • Postfix 3.8+ disponível nos repositórios padrão do Fedora
  • Dovecot 2.3+ para o backend de autenticação SASL
  • Certificado TLS válido: Let's Encrypt via Certbot ou autoassinado para testes
  • Domínio próprio com registro MX apontando para o servidor
  • Portas 25, 587 e opcionalmente 465 acessíveis no firewall externo
  • SELinux em modo enforcing (padrão no Fedora) — ajustes serão cobertos neste guia

Se precisar de ajuda para acessar seu servidor via SSH antes de começar, consulte o guia Acessando servidores VPS Linux da AviraHost.

Instalando Postfix e dependências SASL no Fedora 42

O Fedora 42 utiliza o DNF5 como gerenciador de pacotes. O Postfix está disponível nos repositórios padrão sem necessidade de repositório adicional. Além do MTA, instale o Dovecot (que fornecerá o mecanismo SASL via socket Unix) e as bibliotecas Cyrus SASL para os mecanismos PLAIN e LOGIN:

dnf install -y postfix postfix-pcre dovecot cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5 openssl

Após a instalação, confirme a versão do Postfix:

postconf mail_version
mail_version = 3.8.x

Habilite e inicie ambos os serviços para que persistam após reinicialização:

systemctl enable --now postfix dovecot
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service
Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service

Configurando o Dovecot SASL como backend de autenticação

A abordagem recomendada para autenticação SASL em instalações modernas é delegar a verificação de credenciais ao Dovecot via socket Unix. Isso centraliza a gestão de usuários e reutiliza a infraestrutura já existente no Dovecot, evitando manter dois bancos de senhas separados.

Edite /etc/dovecot/conf.d/10-master.conf, localize o bloco service auth e adicione o listener Unix dentro dele:

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

Em seguida, edite /etc/dovecot/conf.d/10-auth.conf para garantir que os mecanismos PLAIN e LOGIN estejam habilitados:

auth_mechanisms = plain login

Reinicie o Dovecot para aplicar as alterações e confirme que o socket foi criado com as permissões corretas:

systemctl restart dovecot
ls -la /var/spool/postfix/private/auth
srw-rw---- 1 postfix postfix 0 jan 15 14:32 /var/spool/postfix/private/auth

A presença do socket com permissão srw-rw---- e proprietário postfix:postfix confirma que o Dovecot SASL está pronto para receber requisições do Postfix.

Configurando TLS no Postfix para cifrar credenciais SASL

A cifragem TLS é obrigatória em qualquer relay SMTP moderno. O parâmetro smtpd_tls_auth_only = yes é especialmente crítico: ele impede que credenciais SASL sejam enviadas em texto claro, mesmo que o cliente tente ignorar o STARTTLS. Para testes locais, gere um certificado autoassinado:

Atenção: Certificados autoassinados geram erros em clientes de email em produção. Para ambiente real, use um certificado emitido por CA reconhecida, como Let's Encrypt.

mkdir -p /etc/postfix/ssl
chmod 700 /etc/postfix/ssl

openssl req -newkey rsa:2048 -nodes \
  -keyout /etc/postfix/ssl/postfix.key \
  -x509 -days 365 \
  -out /etc/postfix/ssl/postfix.crt \
  -subj "/CN=mail.seudominio.com"

chmod 644 /etc/postfix/ssl/postfix.crt
chmod 600 /etc/postfix/ssl/postfix.key

Adicione os parâmetros TLS ao /etc/postfix/main.cf:

# TLS para conexoes de entrada (smtpd)
smtpd_tls_cert_file = /etc/postfix/ssl/postfix.crt
smtpd_tls_key_file = /etc/postfix/ssl/postfix.key
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

# TLS para conexoes de saida (smtp)
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Para referência sobre SSL em infraestrutura web, veja o artigo Lista Prática: 5 Vantagens de ter SSL gratuito no seu site.

Ajustando main.cf e master.cf para relay SMTP restrito

O núcleo da configuração de relay restrito está no parâmetro smtpd_relay_restrictions. Ele define que apenas clientes autenticados via SASL ou pertencentes às redes locais configuradas em mynetworks podem retransmitir mensagens. Qualquer outra origem recebe rejeição imediata com código 554.

Adicione ou atualize as seguintes diretivas em /etc/postfix/main.cf:

# Identidade do servidor
myhostname = mail.seudominio.com
mydomain = seudominio.com
myorigin = $mydomain

# Redes locais confiaveis (sem autenticacao necessaria)
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

# Restricao de relay: apenas autenticados ou redes locais
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

# Backend SASL via Dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

# Restricoes adicionais
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_sender_domain
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

Agora edite /etc/postfix/master.cf para ativar a porta de submissão 587. Localize a linha comentada submission ou adicione ao final do arquivo:

submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Na porta 587, o valor encrypt em smtpd_tls_security_level torna o TLS obrigatório — diferente de may usado na porta 25. As linhas com -o sobrescrevem as configurações globais do main.cf exclusivamente para este listener.

Valide a sintaxe da configuração antes de reiniciar:

postfix check
(sem saída indica configuracao sem erros de sintaxe)
systemctl restart postfix

Para entender o contexto geral de um servidor de email completo com Dovecot IMAP, consulte o artigo Passo a passo para configurar servidor de e-mail no VPS Linux.

Liberando portas no firewalld e ajustando SELinux no Fedora 42

O Fedora 42 usa o firewalld como camada de firewall padrão e o SELinux em modo enforcing. Ambos precisam de ajustes para permitir o tráfego SMTP sem comprometer a segurança do sistema.

Libere as portas no firewalld na zona padrão:

firewall-cmd --permanent --add-service=smtp
firewall-cmd --permanent --add-port=587/tcp
firewall-cmd --permanent --add-port=465/tcp
firewall-cmd --reload
success
success
success
success

Verifique as portas aplicadas:

firewall-cmd --list-ports
587/tcp 465/tcp

Para o SELinux, verifique se há negações relacionadas ao socket Dovecot:

ausearch -m avc -ts recent | grep postfix

Se encontrar negações AVC relacionadas ao socket SASL, gere e aplique uma política personalizada:

ausearch -m avc -ts today | audit2allow -M postfix-dovecot-sasl
semodule -i postfix-dovecot-sasl.pp

Alternativamente, habilite a boolean que frequentemente resolve conflitos de socket entre serviços no Fedora:

setsebool -P nis_enabled 1

Confirme os contextos SELinux do diretório de spool do Postfix:

ls -laZ /var/spool/postfix/private/ | grep auth
srw-rw----. postfix postfix system_u:object_r:postfix_private_t:s0 auth

Testando autenticação SASL e handshake TLS pela linha de comando

Antes de apontar clientes de email reais para o relay, valide cada componente individualmente. Comece listando as diretivas SASL e TLS carregadas:

postconf -n | grep -E "sasl|tls|relay"

Em seguida, teste o handshake TLS direto na porta 587:

openssl s_client -starttls smtp -connect localhost:587 -crlf
CONNECTED(00000003)
...
250-STARTTLS
250-AUTH PLAIN LOGIN
250 DSN

A linha 250-AUTH PLAIN LOGIN confirma que o SASL está anunciado corretamente após o STARTTLS. Para testar a autenticação, gere a string Base64 com credenciais de um usuário Linux existente:

echo -ne "\0usuario\0senha" | base64
AHVzdWFyaW8Ac2VuaGE=

Abra uma sessão openssl na porta 587 e envie a autenticação:

openssl s_client -starttls smtp -connect localhost:587 -quiet
EHLO localhost
AUTH PLAIN AHVzdWFyaW8Ac2VuaGE=
235 2.7.0 Authentication successful

A resposta 235 2.7.0 Authentication successful confirma que o SASL está funcional. Monitore os logs em tempo real para validar o campo sasl_username:

journalctl -u postfix -f
postfix/submission/smtpd[1234]: connect from localhost[127.0.0.1]
postfix/submission/smtpd[1234]: 1234ABCD: client=localhost[127.0.0.1], sasl_method=PLAIN, sasl_username=usuario

A presença de sasl_method=PLAIN, sasl_username=usuario no log confirma que o relay está aceitando mensagens apenas após autenticação.

Problemas comuns e como resolver

Sintoma: erro "SASL authentication failed" ao conectar na porta 587

Causa: O socket Unix do Dovecot não foi criado, as permissões estão incorretas ou o mecanismo PLAIN não está habilitado no Dovecot.
Solução: Verifique se o socket existe com ls -la /var/spool/postfix/private/auth. Se não existir, reinicie o Dovecot com systemctl restart dovecot. Confirme que auth_mechanisms = plain login está definido em /etc/dovecot/conf.d/10-auth.conf e que o bloco unix_listener no 10-master.conf aponta para o caminho correto com user = postfix e group = postfix.

Sintoma: "Relay access denied" mesmo com credenciais corretas

Causa: O parâmetro smtpd_relay_restrictions não inclui permit_sasl_authenticated, ou o cliente está conectando na porta 25 sem autenticação exigida pelo master.cf.
Solução: Execute postconf smtpd_relay_restrictions e confirme que permit_sasl_authenticated aparece antes de reject_unauth_destination. Verifique também se o bloco do master.cf para a porta 587 está com recuo correto (dois espaços antes de -o), pois linhas sem recuo são interpretadas como um novo serviço independente.

Sintoma: TLS não negocia — erro "SSL routines" no log do Postfix

Causa: O caminho do certificado ou da chave privada está incorreto, os arquivos não têm permissão de leitura pelo processo postfix, ou a chave e o certificado não correspondem.
Solução: Verifique os caminhos com postconf smtpd_tls_cert_file smtpd_tls_key_file. Confira as permissões: o certificado deve ser 644 e a chave 600. Valide que o par cert/chave corresponde com openssl x509 -noout -modulus -in postfix.crt | md5sum e openssl rsa -noout -modulus -in postfix.key | md5sum — os hashes devem ser idênticos.

Sintoma: SELinux bloqueia o socket Dovecot no Fedora 42

Causa: O SELinux em modo enforcing impede que o processo postfix acesse o socket Unix criado pelo Dovecot, gerando entradas AVC no audit log com avc: denied { connectto }.
Solução: Consulte as negações com ausearch -m avc -ts today | grep dovecot. Use o audit2allow para criar uma política customizada: ausearch -m avc -ts today | audit2allow -M postfix-sasl seguido de semodule -i postfix-sasl.pp. Verifique também se o diretório /var/spool/postfix/private/ mantém o contexto SELinux postfix_private_t com ls -laZ.

Perguntas frequentes sobre relay SMTP com SASL e TLS

O que é relay SMTP restrito no Postfix?

Um relay SMTP restrito no Postfix é uma configuração em que o servidor aceita e encaminha emails apenas de origens autenticadas e autorizadas, bloqueando uso não autorizado. Isso evita que o servidor seja explorado como open relay para envio de spam, exigindo credenciais SASL válidas antes de retransmitir qualquer mensagem. A configuração é implementada pelo parâmetro smtpd_relay_restrictions no main.cf, combinando permit_sasl_authenticated com reject_unauth_destination.

Por que usar SASL com Postfix no Fedora 42?

O SASL (Simple Authentication and Security Layer) adiciona uma camada de autenticação ao protocolo SMTP, impedindo que qualquer cliente envie emails sem fornecer usuário e senha válidos. No Fedora 42, o Postfix integra com o Cyrus SASL ou o Dovecot SASL, sendo o Dovecot SASL a opção mais simples de configurar e manter em servidores de email modernos. Sem autenticação SASL, qualquer host com acesso à porta 25 pode usar seu servidor para enviar spam, resultando em bloqueio de IP e comprometimento da reputação do domínio.

Como verificar se o TLS está ativo no Postfix?

Execute o comando postconf -n | grep tls para listar todas as diretivas TLS configuradas. Para testar a negociação TLS em tempo real, use openssl s_client -starttls smtp -connect localhost:587 e verifique se o handshake TLS é concluído com sucesso e o certificado é apresentado corretamente. Procure pela linha Verify return code: 0 (ok) para certificados válidos, ou pelo nome do servidor no campo subject=CN para verificar o certificado autoassinado.

Qual a diferença entre porta 25, 465 e 587 no Postfix?

A porta 25 é usada para comunicação entre servidores MTA (Mail Transfer Agent) e geralmente bloqueada por provedores para clientes finais. A porta 465 usa SMTPS com TLS implícito desde o início da conexão. A porta 587 é a porta de submissão padrão para clientes de email, usando STARTTLS para elevar a conexão para TLS após o handshake inicial — é a recomendada para relay autenticado, conforme definido pela RFC 6409. Para o relay restrito com SASL, a porta 587 com smtpd_tls_security_level=encrypt é a configuração preferível.

Como testar autenticação SASL no Postfix pela linha de comando?

Gere a string de autenticação Base64 com o comando: echo -ne "\0usuario\0senha" | base64. Em seguida, conecte via openssl na porta 587 com openssl s_client -starttls smtp -connect localhost:587 e envie AUTH PLAIN <string_base64>. Se o servidor responder com 235 2.7.0 Authentication successful, o SASL está funcionando corretamente. Verifique também os logs com journalctl -u postfix -f para confirmar o campo sasl_username nas entradas de log durante o teste.

Conclusão

Configurar o Postfix como relay SMTP restrito com SASL e TLS no Fedora 42 transforma um servidor de email básico em uma infraestrutura segura e auditável, compatível com requisitos modernos de anti-spam e conformidade. Os pontos essenciais desta implementação:

  • Use Dovecot SASL via socket Unix — é mais eficiente que o Cyrus SASL standalone, centraliza a gestão de credenciais e reutiliza a infraestrutura já existente do Dovecot IMAP/POP3.
  • Force TLS na porta 587 com smtpd_tls_security_level=encrypt — isso garante que credenciais SASL jamais trafeguem em texto claro, mesmo que o cliente tente ignorar o STARTTLS.
  • Monitore os logs regularmente com journalctl -u postfix e configure o Fail2Ban para bloquear automaticamente IPs com múltiplas falhas de autenticação SASL antes que o servidor entre em listas negras.

Leia também

Precisa de ajuda com relay SMTP e servidores de email?

Configurar Postfix com SASL, TLS e SELinux no Fedora 42 exige atenção a detalhes que diferem entre distribuições e versões. Um VPS Linux com suporte especializado pode agilizar essa implementação e garantir que seu servidor de email opere com segurança e alta entregabilidade desde o primeiro dia.

Conheça os planos de VPS Linux da AviraHost

  • 0 Os usuários acharam isso útil
  • Postfix, SMTP, SASL, TLS, Fedora, AviraHost, email-servidor
Esta resposta foi útil?

Artigos Relacionados

Guia Completo para Configurar E-mails Profissionais no cPanel

Guia Completo para Configurar E-mails Profissionais no cPanel Ter um e-mail profissional é...

Como Configurar DNS Personalizado para Seu Domínio na AviraHost

Como Configurar DNS Personalizado para Seu Domínio na AviraHost Ter um DNS personalizado é...

Como gerenciar um domínio.

Adicione um domínio a sua conta, utilizando nosso painel de gerenciar domínios, Você pode...

Solucionar problemas de resolução de nomes DNS em VPS Linux e servidor dedicado

Introdução Falhas na resolução de nomes DNS podem causar lentidão, indisponibilidade de sites e...

Checklist para Configurar e Testar Limite de E-mails Enviados por Hora no VPS Linux e Servidor Dedicado

Introdução Controlar o volume de e-mails enviados por hora é fundamental para evitar bloqueios...