16 min de leitura · Guia técnico
Configurar o Postfix corretamente no Rocky Linux 9 é essencial para garantir entrega confiável de e-mails transacionais e evitar que seu servidor seja usado como open relay. Siga este checklist completo:
- Instalar o Postfix via DNF e habilitar o serviço no systemd
- Definir
myhostname,mydomainemyoriginnomain.cf - Configurar
mydestination,inet_interfacesemynetworks - Habilitar TLS com certificado válido para criptografar o tráfego SMTP
- Configurar autenticação SASL para relay seguro
- Testar envio, verificar logs e ajustar registros DNS (SPF, DKIM, DMARC)
Pré-requisitos para configurar o Postfix no Rocky Linux 9
- Sistema operacional: Rocky Linux 9 (mínimo 9.0, recomendado 9.3 ou superior)
- Acesso root ou usuário com privilégios
sudo - Postfix versão 3.5+ disponível nos repositórios padrão do Rocky Linux 9
- FQDN configurado: o servidor deve ter um hostname totalmente qualificado, como
mail.exemplo.com.br - Porta 25 liberada no firewall (firewalld) e no painel do provedor de VPS
- Certificado TLS válido (Let's Encrypt ou comercial) para habilitar SMTP seguro
- Acesso SSH ao servidor — veja como acessar em Acessando servidores VPS Linux da AviraHost
- Registros DNS do domínio acessíveis para configurar SPF e MX
Instalação e ativação do Postfix no Rocky Linux 9
O primeiro passo do checklist de configuração do Postfix é garantir que o pacote esteja instalado e o serviço ativo. No Rocky Linux 9, o gerenciador de pacotes padrão é o DNF, que resolve dependências automaticamente.
- Atualize os repositórios do sistema:
sudo dnf update -y
- Instale o Postfix e o pacote de utilitários de e-mail:
sudo dnf install postfix mailx -y
Output esperado:
Installed:
postfix-3.5.x-x.el9.x86_64
mailx-12.5-x.el9.x86_64
Complete!
- Habilite e inicie o serviço via systemd:
sudo systemctl enable postfix --now
- Confirme que o serviço está ativo:
sudo systemctl status postfix
Output esperado:
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
Active: active (running) since ...
Se o Sendmail estiver instalado e em conflito, remova-o antes de prosseguir:
Atenção: remover o Sendmail é irreversível sem reinstalação. Certifique-se de que nenhuma aplicação depende dele.
sudo dnf remove sendmail -y
Configuração do arquivo main.cf — parâmetros essenciais
O arquivo /etc/postfix/main.cf é o coração da configuração do servidor de e-mail. Cada diretiva controla um aspecto do comportamento do MTA (Mail Transfer Agent). Edite o arquivo com seu editor preferido:
sudo nano /etc/postfix/main.cf
Localize e ajuste os seguintes parâmetros. Use postconf -e para editar de forma segura sem abrir o arquivo manualmente:
sudo postconf -e "myhostname = mail.exemplo.com.br"
sudo postconf -e "mydomain = exemplo.com.br"
sudo postconf -e "myorigin = \$mydomain"
sudo postconf -e "inet_interfaces = all"
sudo postconf -e "inet_protocols = ipv4"
sudo postconf -e "mydestination = \$myhostname, localhost.\$mydomain, localhost, \$mydomain"
sudo postconf -e "mynetworks = 127.0.0.0/8"
sudo postconf -e "home_mailbox = Maildir/"
sudo postconf -e "smtpd_banner = \$myhostname ESMTP"
Explicação dos parâmetros principais:
- myhostname: FQDN do servidor, usado no banner SMTP e nos cabeçalhos das mensagens
- mydomain: domínio base para construção de endereços locais
- myorigin: domínio que aparece no campo From de e-mails enviados localmente
- inet_interfaces: interfaces de rede em que o Postfix escuta;
allpara aceitar conexões externas - mydestination: lista de domínios para os quais o servidor aceita e-mails como destino final
- mynetworks: redes autorizadas a enviar e-mails sem autenticação — mantenha restrito a
127.0.0.0/8 - home_mailbox: define o formato Maildir para armazenamento de mensagens
Após as alterações, recarregue o Postfix:
sudo systemctl reload postfix
Configurando TLS para criptografar o tráfego SMTP
Habilitar o TLS no Postfix é indispensável para proteger credenciais e conteúdo das mensagens em trânsito. O Rocky Linux 9 suporta TLS 1.2 e 1.3 nativamente com OpenSSL 3.x.
Assumindo que você já possui um certificado Let's Encrypt em /etc/letsencrypt/live/mail.exemplo.com.br/, configure as diretivas TLS:
sudo postconf -e "smtpd_tls_cert_file = /etc/letsencrypt/live/mail.exemplo.com.br/fullchain.pem"
sudo postconf -e "smtpd_tls_key_file = /etc/letsencrypt/live/mail.exemplo.com.br/privkey.pem"
sudo postconf -e "smtpd_use_tls = yes"
sudo postconf -e "smtpd_tls_security_level = may"
sudo postconf -e "smtpd_tls_loglevel = 1"
sudo postconf -e "smtp_tls_security_level = may"
sudo postconf -e "smtp_tls_loglevel = 1"
sudo postconf -e "smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1"
Para forçar TLS no envio para outros servidores (quando suportado), use smtp_tls_security_level = encrypt. Use may para compatibilidade máxima.
Reinicie o Postfix para aplicar as configurações de TLS:
sudo systemctl restart postfix
Verifique se o TLS está ativo na porta 25:
openssl s_client -connect mail.exemplo.com.br:25 -starttls smtp
Output esperado (trecho):
SSL handshake has read ... bytes
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
Para configurar o certificado corretamente no seu domínio, consulte também o guia Como Configurar DNS Personalizado para Seu Domínio na AviraHost.
Configurando autenticação SASL para relay seguro
A autenticação SASL (Simple Authentication and Security Layer) permite que clientes de e-mail enviem mensagens pelo servidor sem abrir um open relay. No Rocky Linux 9, o Postfix integra com o Cyrus SASL.
- Instale o pacote Cyrus SASL:
sudo dnf install cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5 -y
- Habilite e inicie o serviço saslauthd:
sudo systemctl enable saslauthd --now
- Configure o Postfix para usar SASL:
sudo postconf -e "smtpd_sasl_auth_enable = yes"
sudo postconf -e "smtpd_sasl_security_options = noanonymous"
sudo postconf -e "smtpd_sasl_local_domain = \$myhostname"
sudo postconf -e "broken_sasl_auth_clients = yes"
- Adicione as restrições de relay no
main.cf:
sudo postconf -e "smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination"
sudo postconf -e "smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination"
- Crie o arquivo de configuração SASL para o Postfix:
sudo mkdir -p /etc/postfix/sasl
sudo nano /etc/postfix/sasl/smtpd.conf
Adicione o conteúdo:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
- Reinicie o Postfix:
sudo systemctl restart postfix
Configurando o firewall e liberando portas SMTP
O firewalld é o gerenciador de firewall padrão no Rocky Linux 9 e precisa ser configurado para permitir tráfego nas portas SMTP. Por padrão, a porta 25 (SMTP), 587 (submission) e 465 (SMTPS) devem ser liberadas conforme o uso.
sudo firewall-cmd --permanent --add-service=smtp
sudo firewall-cmd --permanent --add-port=587/tcp
sudo firewall-cmd --permanent --add-port=465/tcp
sudo firewall-cmd --reload
Output esperado:
success
success
success
success
Verifique as regras ativas:
sudo firewall-cmd --list-all
Output esperado (trecho):
services: cockpit dhcpv6-client smtp ssh
ports: 465/tcp 587/tcp
Para habilitar a porta 587 (submission) no Postfix, edite o arquivo /etc/postfix/master.cf e descomente a linha correspondente:
sudo nano /etc/postfix/master.cf
Localize e descomente:
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
sudo systemctl restart postfix
Configurando registros DNS: SPF, MX e verificação de entrega
Sem os registros DNS corretos, mesmo um Postfix bem configurado terá e-mails rejeitados ou marcados como spam. O registro SPF autoriza o servidor a enviar e-mails pelo domínio.
No painel DNS do seu domínio, adicione os seguintes registros:
- Registro MX:
exemplo.com.br. IN MX 10 mail.exemplo.com.br. - Registro A:
mail.exemplo.com.br. IN A [IP_DO_SERVIDOR] - Registro SPF (TXT):
exemplo.com.br. IN TXT "v=spf1 mx a ip4:[IP_DO_SERVIDOR] ~all" - Registro PTR (rDNS): configure no painel do provedor de VPS para que o IP resolva para
mail.exemplo.com.br
Verifique o registro MX após propagação:
dig MX exemplo.com.br +short
Output esperado:
10 mail.exemplo.com.br.
Verifique o SPF:
dig TXT exemplo.com.br +short
Output esperado:
"v=spf1 mx a ip4:xxx.xxx.xxx.xxx ~all"
Testando o envio de e-mails e monitorando logs
Com o servidor configurado, o próximo passo do checklist é testar o envio de e-mails e monitorar o log principal do Postfix para identificar erros.
- Envie um e-mail de teste pela linha de comando:
echo "Corpo do e-mail de teste" | mail -s "Teste Postfix Rocky Linux 9" [email protected]
- Monitore o log em tempo real:
sudo tail -f /var/log/maillog
Output esperado (envio bem-sucedido):
postfix/smtp[XXXX]: XXXXXXXX: to=, relay=mail.exemplo.com[IP]:25,
delay=1.2, delays=0.1/0/0.5/0.6, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued)
- Verifique a fila de mensagens pendentes:
sudo mailq
Output esperado (fila vazia):
Mail queue is empty
- Teste a conexão SMTP manualmente com telnet:
telnet localhost 25
Output esperado:
Trying 127.0.0.1...
Connected to localhost.
220 mail.exemplo.com.br ESMTP Postfix
Se o status no log for deferred ou bounced, o log indicará a causa exata — como rejeição por relay, falha de DNS reverso ou bloqueio de porta 25 pelo provedor.
Problemas comuns e como resolver
Sintoma: e-mails ficam na fila com status "deferred" e erro "Connection refused"
Causa: a porta 25 está bloqueada pelo provedor de VPS ou pelo firewalld local. Muitos provedores bloqueiam a porta 25 por padrão para evitar spam.
Solução: verifique se a porta 25 está aberta com sudo firewall-cmd --list-ports e telnet smtp.gmail.com 25. Se o provedor bloquear a porta 25 externamente, use a porta 587 (submission) com autenticação SASL ou solicite a liberação ao suporte do provedor.
Sintoma: erro "Relay access denied" ao tentar enviar e-mail
Causa: o endereço de destino não está em mydestination e o cliente não está autenticado via SASL nem listado em mynetworks. O Postfix rejeita o relay por segurança.
Solução: confirme que smtpd_relay_restrictions contém permit_sasl_authenticated e que o cliente está enviando com autenticação habilitada. Para envios locais de aplicações, adicione o IP do servidor em mynetworks: sudo postconf -e "mynetworks = 127.0.0.0/8, [IP_DA_APP]/32".
Sintoma: e-mails chegam na caixa de spam do destinatário
Causa: ausência de registros SPF, DKIM ou DMARC, ou o IP do servidor está em uma lista de bloqueio (blacklist). Servidores sem rDNS configurado também são penalizados.
Solução: configure o registro SPF no DNS do domínio, implemente DKIM com o pacote opendkim e verifique se o IP está em blacklists usando ferramentas como MXToolbox. Configure o rDNS (PTR) no painel do provedor de VPS para que o IP resolva para o FQDN do servidor de e-mail.
Sintoma: Postfix não inicia — erro "fatal: parameter inet_interfaces: no local interface found for ::1"
Causa: o parâmetro inet_protocols está configurado para all (IPv4 e IPv6), mas o IPv6 não está habilitado na interface de rede do servidor.
Solução: force o uso apenas de IPv4: sudo postconf -e "inet_protocols = ipv4" e reinicie o serviço com sudo systemctl restart postfix.
Sintoma: erro "SASL authentication failed" nos logs
Causa: o serviço saslauthd não está em execução ou as credenciais do usuário estão incorretas. Também pode ocorrer se o socket do saslauthd não estiver acessível pelo Postfix.
Solução: verifique o status com sudo systemctl status saslauthd. Certifique-se de que o Postfix tem acesso ao socket: sudo usermod -aG sasl postfix e reinicie ambos os serviços.
Perguntas frequentes sobre Postfix no Rocky Linux 9
O Postfix no Rocky Linux 9 usa systemd para gerenciar o serviço?
Sim. No Rocky Linux 9, o Postfix é gerenciado pelo systemd. Para iniciar, parar ou verificar o status, use os comandos systemctl start postfix, systemctl stop postfix e systemctl status postfix. O serviço também pode ser habilitado para iniciar automaticamente com systemctl enable postfix, garantindo que o MTA suba junto com o sistema após reinicializações.
Como testar se o Postfix está enviando e-mails corretamente no Rocky Linux 9?
Execute echo "Teste" | mail -s "Assunto" [email protected] e verifique o log em /var/log/maillog com tail -f /var/log/maillog. Se a mensagem aparecer com status=sent, o envio foi bem-sucedido. Caso contrário, o log indicará o erro específico, como rejeição por relay ou falha de autenticação, permitindo diagnóstico preciso sem ferramentas externas.
Qual a diferença entre myhostname e mydomain no Postfix?
myhostname define o nome FQDN do servidor de e-mail, como mail.exemplo.com.br, e é usado no banner SMTP apresentado a outros servidores durante a conexão. mydomain define o domínio base, como exemplo.com.br, e é usado para construir endereços de e-mail locais e o valor de myorigin. O Postfix usa ambos em conjunto para identificar corretamente a origem das mensagens e garantir que os cabeçalhos estejam corretos.
Como configurar o Postfix para usar TLS e criptografar o envio de e-mails?
Adicione as diretivas smtpd_tls_cert_file, smtpd_tls_key_file e smtpd_use_tls = yes no arquivo /etc/postfix/main.cf apontando para o certificado TLS do servidor. Para forçar TLS no envio para outros servidores, defina smtp_tls_security_level = may ou encrypt conforme o nível de segurança desejado. Reinicie o Postfix após as alterações com systemctl restart postfix e valide com openssl s_client.
O Postfix bloqueia relay de e-mails por padrão no Rocky Linux 9?
Sim. Por padrão, o Postfix no Rocky Linux 9 rejeita relay para domínios não listados em mydestination ou relay_domains, protegendo o servidor contra uso como open relay. Para permitir relay autenticado, configure o SASL com smtpd_sasl_auth_enable = yes e restrinja com permit_sasl_authenticated nas políticas de relay definidas em smtpd_relay_restrictions.
Conclusão
Seguir este checklist garante que o Postfix no Rocky Linux 9 esteja configurado de forma segura, funcional e preparado para produção. Os pontos mais críticos são:
- Defina corretamente myhostname, mydomain e mynetworks para evitar problemas de identidade e relay aberto — revise esses parâmetros sempre que trocar o hostname do servidor
- Habilite TLS e SASL antes de expor o servidor à internet — sem criptografia e autenticação, o servidor é vulnerável a interceptação e abuso
- Configure SPF, rDNS e monitore /var/log/maillog regularmente — registros DNS corretos e monitoramento ativo são a diferença entre e-mails entregues na caixa de entrada e marcados como spam
Leia também
- Guia para configurar Postfix com autenticação SASL no Ubuntu 22.04
- Checklist para configurar servidor de email seguro no Ubuntu 22.04
- Checklist para Configurar e Testar Limite de Tempo de Sessão no SSH em VPS Linux e Servidor Dedicado
Precisa de ajuda com Postfix e e-mail no servidor Linux?
Configurar um servidor de e-mail com Postfix envolve múltiplas camadas — DNS, TLS, autenticação e firewall. Um VPS com suporte técnico especializado pode acelerar esse processo e reduzir erros de configuração.
Conheça os planos de VPS Linux da AviraHost e configure seu servidor de e-mail com segurança