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:
- Instale o Postfix e o OpenSSL via DNF
- Gere ou obtenha um certificado TLS (Let's Encrypt ou autoassinado)
- Edite o arquivo
/etc/postfix/main.cfcom os parâmetros TLS - Configure a porta 587 (submission) no
/etc/postfix/master.cf - Ajuste o firewall com firewalld para liberar as portas necessárias
- 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.cfcom os parâmetrossmtpd_tls_cert_file,smtpd_tls_key_fileesmtpd_use_tls=yese 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
- Rocky Linux 9: como configurar Postfix com DKIM corretamente
- Otimizar TLS 1.3 com OpenSSL 3.x no Debian 12
- Entenda UFW ou firewalld para Rocky Linux 9: análise honesta
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