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

Passo a passo para configurar Postfix com TLS no Rocky Linux 9

16 min de leitura  ·  Guia técnico

Configurar o Postfix com TLS no Rocky Linux 9 significa habilitar criptografia nas conexões SMTP do seu servidor de email, protegendo mensagens em trânsito contra interceptação. Para concluir essa configuração, siga estes passos:

  1. Instale o Postfix e o OpenSSL via DNF
  2. Gere ou obtenha um certificado TLS (Let's Encrypt ou autoassinado)
  3. Edite o arquivo /etc/postfix/main.cf com os parâmetros TLS
  4. Configure a porta 587 (submission) no /etc/postfix/master.cf
  5. Ajuste o firewall com firewalld para liberar as portas necessárias
  6. Reinicie o Postfix e valide a negociação TLS com OpenSSL

Pré-requisitos para configurar Postfix com TLS 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 ou superior (disponível nos repositórios padrão do Rocky Linux 9)
  • OpenSSL instalado (geralmente já presente; versão 3.x no Rocky Linux 9)
  • Domínio com DNS configurado apontando para o IP do servidor (necessário para Let's Encrypt)
  • Certbot instalado caso opte por certificado Let's Encrypt
  • Portas 25, 465 e 587 liberadas no firewall e no painel do provedor de VPS
  • Acesso SSH ao servidor — veja como em Acessando servidores VPS Linux da AviraHost

Instalando o Postfix no Rocky Linux 9

O primeiro passo para habilitar o envio seguro de emails é garantir que o Postfix esteja instalado e ativo. No Rocky Linux 9, o gerenciador de pacotes DNF facilita esse processo. Execute os comandos abaixo como root:

dnf install -y postfix openssl
systemctl enable --now postfix

Após a execução, confirme que o serviço está rodando:

systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
     Active: active (running) since ...

Com o Postfix ativo, configure o hostname do servidor no arquivo principal. Isso é essencial para que o banner SMTP seja apresentado corretamente a outros servidores de email:

postconf -e "myhostname = mail.seudominio.com.br"
postconf -e "mydomain = seudominio.com.br"
postconf -e "myorigin = \$mydomain"

Substitua seudominio.com.br pelo domínio real do seu servidor. Ao rodar esses comandos, você verá que o arquivo /etc/postfix/main.cf é atualizado automaticamente pelo utilitário postconf.

Gerando o certificado TLS para o Postfix

A criptografia SMTP depende de um certificado X.509 válido. Existem duas abordagens principais: usar o Let's Encrypt (recomendado para produção) ou gerar um certificado autoassinado com OpenSSL (adequado apenas para testes internos).

Opção 1: Certificado Let's Encrypt com Certbot

Instale o Certbot pelo repositório EPEL e solicite o certificado para o hostname do servidor de email:

dnf install -y epel-release
dnf install -y certbot
certbot certonly --standalone -d mail.seudominio.com.br

O Certbot irá criar os arquivos em /etc/letsencrypt/live/mail.seudominio.com.br/. Os caminhos relevantes são:

  • Certificado: /etc/letsencrypt/live/mail.seudominio.com.br/fullchain.pem
  • Chave privada: /etc/letsencrypt/live/mail.seudominio.com.br/privkey.pem

Atenção: o Certbot usa a porta 80 no modo --standalone. Certifique-se de que nenhum outro serviço esteja ocupando essa porta durante a emissão.

Opção 2: Certificado autoassinado com OpenSSL

Para ambientes de teste ou redes internas, gere um certificado autoassinado válido por 365 dias:

mkdir -p /etc/postfix/ssl
openssl req -new -x509 -days 365 -nodes \
  -out /etc/postfix/ssl/postfix.crt \
  -keyout /etc/postfix/ssl/postfix.key \
  -subj "/C=BR/ST=SP/L=SaoPaulo/O=MinhaEmpresa/CN=mail.seudominio.com.br"
chmod 600 /etc/postfix/ssl/postfix.key

Ao rodar este comando, você verá a geração da chave RSA e do certificado sem interação manual. O parâmetro -nodes remove a necessidade de senha na chave privada, o que é necessário para que o Postfix carregue o certificado automaticamente na inicialização.

Configurando o TLS no arquivo main.cf do Postfix

Com o certificado em mãos, edite o arquivo principal de configuração do Postfix para habilitar o suporte a STARTTLS tanto para conexões recebidas (servidor) quanto para conexões enviadas (cliente). Abra o arquivo:

vi /etc/postfix/main.cf

Adicione ou ajuste os seguintes parâmetros ao final do arquivo (use os caminhos do Let's Encrypt ou do certificado autoassinado, conforme sua escolha):

# TLS para conexões recebidas (smtpd = servidor)
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.seudominio.com.br/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.seudominio.com.br/privkey.pem
smtpd_use_tls = yes
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

# TLS para conexões enviadas (smtp = cliente)
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

O parâmetro smtpd_tls_security_level = may significa que o TLS é oferecido mas não obrigatório, garantindo compatibilidade com servidores mais antigos. Para ambientes onde todos os remetentes suportam TLS, você pode usar encrypt, mas isso pode causar rejeição de emails legítimos.

O bloqueio de protocolos antigos (!SSLv2, !SSLv3, !TLSv1, !TLSv1.1) é uma prática de segurança essencial para evitar vulnerabilidades como POODLE e BEAST.

Habilitando a porta 587 (submission) no master.cf

A porta 587 com STARTTLS é o padrão recomendado pela RFC 8314 para envio autenticado de emails por clientes de email (Outlook, Thunderbird, etc.). Edite o arquivo /etc/postfix/master.cf:

vi /etc/postfix/master.cf

Localize a linha referente ao serviço submission e descomente-a (remova o # do início), deixando-a assim:

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_reject_unlisted_recipient=no
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject

Note que na porta 587 usamos smtpd_tls_security_level=encrypt, tornando o TLS obrigatório para clientes que se conectam nessa porta. Isso garante que credenciais de autenticação SASL nunca trafeguem em texto claro.

Configurando o firewalld para liberar as portas SMTP

O Rocky Linux 9 usa o firewalld como gerenciador de firewall padrão. Libere as portas necessárias para o funcionamento do servidor de email:

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

Verifique se as regras foram aplicadas corretamente:

firewall-cmd --list-all
public (active)
  ...
  services: dhcpv6-client smtp ssh
  ports: 465/tcp 587/tcp

Se o seu provedor de VPS também possui um firewall externo (painel de controle), lembre-se de liberar as mesmas portas por lá. Veja como acessar o painel em Como acessar o painel de gerenciamento dos meus Serviços.

Reiniciando o Postfix e validando a configuração TLS

Antes de reiniciar, valide a sintaxe do arquivo de configuração para evitar que erros derrubem o serviço:

postfix check

Se nenhuma saída for exibida, a configuração está sintaticamente correta. Agora reinicie o Postfix:

systemctl restart postfix

Para confirmar que o STARTTLS está sendo anunciado corretamente, use o OpenSSL para simular uma conexão SMTP:

openssl s_client -starttls smtp -connect localhost:25 -quiet
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
verify return:1
depth=1 C=US, O=Let's Encrypt, CN=R3
verify return:1
depth=0 CN=mail.seudominio.com.br
verify return:1
---
Certificate chain
 0 s:CN = mail.seudominio.com.br
...
250 DSN

Se você ver os detalhes do certificado e o código 250 no final, o TLS está funcionando corretamente. Também verifique os logs do sistema:

tail -f /var/log/maillog | grep -i tls
postfix/smtpd[XXXX]: Anonymous TLS connection established from localhost[127.0.0.1]: TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)

A presença de entradas como TLS connection established confirma que a negociação TLS está ocorrendo com sucesso.

Configurando renovação automática do certificado Let's Encrypt

Certificados Let's Encrypt expiram a cada 90 dias. Configure a renovação automática com um hook que reinicia o Postfix após cada renovação bem-sucedida:

echo '#!/bin/bash
systemctl reload postfix' > /etc/letsencrypt/renewal-hooks/deploy/reload-postfix.sh
chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-postfix.sh

Teste o processo de renovação sem efetivamente renovar o certificado:

certbot renew --dry-run
Congratulations, all simulated renewals succeeded:
  /etc/letsencrypt/live/mail.seudominio.com.br/fullchain.pem (success)

O Certbot já instala automaticamente um timer systemd (certbot-renew.timer) no Rocky Linux 9 quando instalado via EPEL. Confirme que está ativo:

systemctl status certbot-renew.timer

Para saber mais sobre as vantagens de usar SSL/TLS em seus serviços, consulte a Lista Prática: 5 Vantagens de ter SSL gratuito no seu site.

Problemas comuns e como resolver

Sintoma: Postfix não inicia após editar main.cf

Causa: Erro de sintaxe no arquivo /etc/postfix/main.cf ou caminho incorreto para o certificado ou chave privada.
Solução: Execute postfix check para identificar o erro exato. Verifique se os caminhos dos arquivos de certificado existem com ls -la /etc/letsencrypt/live/mail.seudominio.com.br/. Confirme também que o usuário postfix tem permissão de leitura nos arquivos de certificado. Para certificados Let's Encrypt, pode ser necessário ajustar as permissões do diretório: chmod 755 /etc/letsencrypt/live/ /etc/letsencrypt/archive/.

Sintoma: openssl s_client retorna "SSL handshake failure"

Causa: O Postfix não está anunciando STARTTLS, geralmente porque smtpd_use_tls = yes não foi salvo corretamente ou o serviço não foi reiniciado após a edição.
Solução: Confirme o valor atual com postconf smtpd_use_tls. Se retornar no, o arquivo não foi salvo. Edite novamente, salve e execute systemctl restart postfix. Verifique também se o SELinux está bloqueando o acesso aos arquivos de certificado com ausearch -c postfix | tail -20.

Sintoma: SELinux bloqueia o Postfix de ler o certificado

Causa: O Rocky Linux 9 usa SELinux em modo enforcing por padrão. Arquivos de certificado em diretórios não padrão podem ter o contexto de segurança incorreto.
Solução: Restaure o contexto SELinux correto para os arquivos de certificado:

restorecon -Rv /etc/letsencrypt/
# ou para certificados autoassinados:
chcon -t cert_t /etc/postfix/ssl/postfix.crt
chcon -t cert_t /etc/postfix/ssl/postfix.key

Após aplicar, reinicie o Postfix e verifique os logs novamente.

Sintoma: Emails enviados caem em spam mesmo com TLS ativo

Causa: TLS sozinho não garante entregabilidade. A ausência de registros SPF, DKIM e DMARC no DNS faz com que servidores como Gmail e Outlook classifiquem as mensagens como suspeitas.
Solução: Configure um registro SPF no DNS do domínio (v=spf1 ip4:SEU_IP ~all), instale e configure o OpenDKIM para assinar emails, e adicione um registro DMARC. Verifique a reputação do IP do servidor em ferramentas como MXToolbox antes de enviar emails em volume.

Perguntas frequentes sobre Postfix com TLS no Rocky Linux 9

O Postfix no Rocky Linux 9 usa TLS por padrão?

Não. A instalação padrão do Postfix no Rocky Linux 9 não habilita TLS automaticamente. É necessário editar o arquivo /etc/postfix/main.cf para definir os parâmetros smtpd_tls_cert_file, smtpd_tls_key_file e smtpd_use_tls=yes, além de reiniciar o serviço para aplicar as mudanças. Sem essa configuração, todas as conexões SMTP trafegam em texto claro, expondo o conteúdo dos emails a interceptação.

Qual certificado usar para o TLS do Postfix no Rocky Linux 9?

Você pode usar um certificado Let's Encrypt gerado com Certbot ou um certificado autoassinado criado com OpenSSL. Para produção, o Let's Encrypt é recomendado pois é reconhecido por outros servidores de email sem erros de confiança. Certificados autoassinados são adequados apenas para testes internos, pois outros servidores SMTP podem rejeitar ou registrar avisos ao se conectar com um certificado não confiável.

Como verificar se o TLS está ativo no Postfix?

Execute o comando openssl s_client -starttls smtp -connect localhost:25 para testar a negociação TLS diretamente. Se o handshake for concluído com sucesso, você verá os detalhes do certificado e a linha Verify return code: 0 (ok) ou similar. Também é possível checar os logs em /var/log/maillog procurando por entradas TLS connection established, que confirmam que a criptografia está sendo aplicada nas conexões reais.

Qual a diferença entre STARTTLS e SMTPS no Postfix?

STARTTLS opera na porta 25 ou 587 e faz upgrade da conexão para TLS após o início da sessão SMTP em texto claro. SMTPS (porta 465) inicia a conexão já criptografada desde o primeiro byte. Para servidores de envio de clientes (submission), a porta 587 com STARTTLS é o padrão recomendado pela RFC 8314. A porta 465 ainda é suportada por muitos clientes de email e pode ser habilitada no master.cf para compatibilidade.

O Postfix com TLS afeta a entregabilidade dos emails?

Sim, positivamente. Servidores de email modernos como Gmail e Outlook preferem conexões TLS e podem marcar mensagens de servidores sem criptografia como suspeitas. Habilitar TLS no Postfix, combinado com SPF, DKIM e DMARC, melhora significativamente a reputação do servidor e reduz a chance de emails caírem em spam. O TLS também é um fator considerado por ferramentas de análise de reputação de domínio e IP.

Conclusão

  • Habilite TLS imediatamente: edite o main.cf com os parâmetros smtpd_tls_cert_file, smtpd_tls_key_file e smtpd_use_tls=yes e reinicie o Postfix para proteger todas as conexões SMTP do seu servidor Rocky Linux 9.
  • Use Let's Encrypt em produção: configure o Certbot com o hook de renovação automática para garantir que o certificado nunca expire e que o Postfix seja recarregado automaticamente após cada renovação.
  • Combine TLS com SPF, DKIM e DMARC: a criptografia protege o transporte, mas a entregabilidade depende também de registros DNS corretos — configure os três para maximizar a reputação do seu servidor de email.

Leia também

Precisa de ajuda com Postfix e email no seu servidor?

Configurar um servidor de email seguro envolve múltiplas camadas — TLS, autenticação SASL, registros DNS e monitoramento de reputação. Um VPS com suporte técnico especializado pode facilitar esse processo e garantir que seu ambiente de email esteja sempre operacional e seguro.

Conheça os planos de VPS da AviraHost e hospede seu servidor de email com desempenho e segurança

  • 0 Os usuários acharam isso útil
  • Postfix, TLS, Rocky Linux, email, AviraHost, servidor-dedicado, certificado
Esta resposta foi útil?

Artigos Relacionados

Como Configurar Firewall em Servidor VPS Linux: Guia Prático com UFW

Como Configurar Firewall em Servidor VPS Linux: Guia Prático com UFWO firewall é essencial para...

Como Configurar e Usar o Fail2Ban para Proteger seu Servidor VPS Linux

O que é o Fail2Ban? Fail2Ban é uma ferramenta de segurança que monitora logs de serviços (como...

Como Instalar e Configurar o Firewall CSF no VPS Linux para Segurança Avançada

Introdução O CSF (ConfigServer Security & Firewall) é uma solução robusta de firewall para...

Guia Prático para Ativar e Gerenciar o ModSecurity no Apache em VPS Linux e Servidores Dedicados

Introdução O ModSecurity é um firewall de aplicação web (WAF) essencial para proteger servidores...

Checklist Completo para Configurar e Testar o Firewall UFW em VPS Linux e Servidores Dedicados

Introdução O UFW (Uncomplicated Firewall) é uma ferramenta simples e eficiente para gerenciar...