Solucionar falhas do Postfix não enviando emails no Debian 12

Por Equipe Técnica AviraHost · 14 min de leitura · Atualizado em · Postfix, email, Debian 12, SMTP, AviraHost · 0

Postfix não enviando emails no Debian 12 é um problema que ocorre por diversas causas: porta 25 bloqueada pelo provedor, configuração incorreta do main.cf, fila travada, ausência de registros SPF/DKIM ou erro de DNS reverso. Identifique a causa exata nos logs e corrija cada ponto sistematicamente. Veja abaixo como diagnosticar e resolver cada cenário.

Pré-requisitos

  • Acesso root ou sudo ao servidor Debian 12 (Bookworm)
  • Postfix instalado (versão 3.7.x, padrão do Debian 12)
  • Acesso SSH ao servidor — consulte como acessar servidores VPS Linux da AviraHost se necessário
  • Domínio com zona DNS gerenciável para configurar SPF e DNS reverso
  • Utilitários telnet, netcat e mailutils instalados

Diagnóstico inicial: verificar logs e status do Postfix no Debian 12

O primeiro passo para solucionar o Postfix não enviando emails é confirmar se o serviço está ativo e inspecionar os logs de entrega. O arquivo principal de log no Debian 12 é /var/log/mail.log.

  1. Verifique o status do serviço:
systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/lib/systemd/system/postfix.service; enabled)
     Active: active (running) since Mon 2024-01-15 10:00:00 UTC
  1. Inspecione os últimos eventos do log de email:
tail -n 50 /var/log/mail.log

Procure por linhas contendo status=deferred, status=bounced ou connect to com erros de conexão. Cada linha indica o ID da mensagem, o destinatário e o motivo exato da falha.

  1. Verifique a fila de mensagens presas:
postqueue -p
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
A1B2C3D4E5F     512 Mon Jan 15 10:05:00  [email protected]
(connect to gmail-smtp-in.l.google.com[142.250.x.x]:25: Connection timed out)
                                         [email protected]

Se a fila estiver vazia e os emails não chegam, o problema pode ser de autenticação ou bloqueio silencioso. Se houver mensagens presas, o motivo entre parênteses indica a causa.

  1. Monitore o log em tempo real enquanto testa o envio:
tail -f /var/log/mail.log

Verificar se a porta 25 está bloqueada pelo provedor

O bloqueio da porta 25 de saída é a causa mais comum de falha de entrega em servidores VPS. Provedores de hospedagem frequentemente bloqueiam essa porta para evitar spam, sem aviso explícito.

Teste a conectividade de saída na porta 25 a partir do próprio servidor:

nc -zv smtp.gmail.com 25
nc: connect to smtp.gmail.com port 25 (tcp) failed: Connection timed out

Se o resultado for Connection timed out ou Connection refused, a porta 25 está bloqueada. Teste também com telnet:

telnet smtp.gmail.com 25

Se a porta 25 estiver bloqueada, você tem duas alternativas:

  • Usar porta 587 com STARTTLS: configure o Postfix para usar um relay SMTP autenticado (como Gmail, SendGrid ou Mailgun) na porta 587
  • Usar porta 465 com SSL/TLS: alternativa para provedores que suportam SMTPS
  • Solicitar desbloqueio ao provedor: abra um chamado justificando o uso legítimo do servidor de email

Para configurar um relay SMTP externo via porta 587, edite o /etc/postfix/main.cf:

relayhost = [smtp.seurelaysmtp.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Crie o arquivo de credenciais:

echo "[smtp.seurelaysmtp.com]:587 [email protected]:SUASENHA" > /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Recarregue o Postfix:

systemctl reload postfix

Corrigir o arquivo main.cf: parâmetros essenciais do Postfix

Configurações incorretas no /etc/postfix/main.cf causam rejeição de mensagens, loop de entrega ou falha silenciosa. Revise os parâmetros fundamentais:

nano /etc/postfix/main.cf

Verifique e ajuste os seguintes parâmetros:

# Nome do servidor de email (deve corresponder ao DNS reverso)
myhostname = mail.seudominio.com

# Domínio de origem das mensagens
myorigin = /etc/mailname

# Domínios para os quais o Postfix aceita email localmente
mydestination = $myhostname, seudominio.com, localhost.seudominio.com, localhost

# Redes confiáveis (apenas localhost por padrão — mais seguro)
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

# Interface de escuta
inet_interfaces = all

# Protocolos aceitos
inet_protocols = ipv4

# Restrições de relay
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

Após editar, verifique a sintaxe antes de recarregar:

postfix check
# Sem saída = configuração válida
systemctl reload postfix

Confirme que o arquivo /etc/mailname contém o domínio correto:

cat /etc/mailname
seudominio.com

Se o conteúdo estiver incorreto, edite diretamente:

echo "seudominio.com" > /etc/mailname

Configurar SPF, DNS reverso e DKIM para evitar rejeição

Mesmo com o Postfix funcionando corretamente, emails podem ser rejeitados pelo servidor de destino por ausência de autenticação. Os registros de autenticação de email são verificados antes da entrega.

DNS Reverso (PTR): o IP do servidor deve ter um registro PTR que aponte para o hostname configurado no myhostname. Verifique:

dig -x SEU_IP_DO_SERVIDOR +short
mail.seudominio.com.

Se o resultado não corresponder ao myhostname, solicite ao provedor a configuração do DNS reverso. Consulte como configurar DNS personalizado para seu domínio na AviraHost para orientações sobre gerenciamento de zona DNS.

Registro SPF: adicione um registro TXT na zona DNS do domínio:

v=spf1 ip4:SEU_IP_DO_SERVIDOR ~all

Verifique se o SPF está publicado:

dig TXT seudominio.com +short
"v=spf1 ip4:203.0.113.10 ~all"

DKIM com OpenDKIM: instale e configure o OpenDKIM para assinar mensagens:

apt install opendkim opendkim-tools -y
mkdir -p /etc/opendkim/keys/seudominio.com
opendkim-genkey -b 2048 -d seudominio.com -D /etc/opendkim/keys/seudominio.com -s mail -v

Publique o conteúdo de /etc/opendkim/keys/seudominio.com/mail.txt como registro TXT no DNS com o nome mail._domainkey.seudominio.com.

Configure o /etc/opendkim.conf e integre ao Postfix adicionando ao main.cf:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Testar o envio de email pelo terminal no Debian 12

Após ajustar as configurações, valide o funcionamento do servidor de email com um teste direto pelo terminal. Instale o pacote mailutils se ainda não estiver presente:

apt install mailutils -y

Envie um email de teste:

echo "Corpo do email de teste" | mail -s "Teste Postfix Debian 12" [email protected]

Monitore o log imediatamente após o envio:

tail -n 20 /var/log/mail.log
Jan 15 10:30:01 servidor postfix/smtp[12345]: A1B2C3D4E5F: to=, relay=gmail-smtp-in.l.google.com[142.250.x.x]:25, delay=1.2, delays=0.1/0/0.5/0.6, dsn=2.0.0, status=sent (250 2.0.0 OK)

A linha status=sent confirma entrega bem-sucedida. Se aparecer status=deferred, o log mostrará o motivo exato entre parênteses. Se aparecer status=bounced, o servidor de destino rejeitou a mensagem com um código de erro específico.

Para forçar o reenvio imediato de todas as mensagens em fila:

postqueue -f

Atenção: o comando a seguir remove permanentemente todas as mensagens diferidas da fila. Use apenas se tiver certeza de que as mensagens não devem ser reenviadas.

postsuper -d ALL deferred

Para remover uma mensagem específica pelo ID:

postsuper -d A1B2C3D4E5F

Problemas comuns e como resolver

Sintoma: emails chegam à pasta de spam ou são rejeitados com código 550

Causa: ausência de registros SPF, DKIM ou DMARC, ou o IP do servidor está em uma lista de bloqueio (blacklist). Servidores de destino como Gmail e Outlook verificam esses registros antes de aceitar mensagens.
Solução: verifique se o IP está em blacklists usando ferramentas como MXToolbox. Publique os registros SPF e DKIM conforme descrito na seção anterior. Adicione também um registro DMARC: v=DMARC1; p=none; rua=mailto:[email protected]. Se o IP estiver em blacklist, solicite remoção diretamente no site da lista correspondente.

Sintoma: erro "relay access denied" ao tentar enviar email

Causa: o Postfix está recusando retransmitir mensagens porque o cliente não está autenticado ou o IP de origem não está no parâmetro mynetworks. Isso ocorre quando uma aplicação tenta usar o Postfix como relay sem autenticação SASL configurada.
Solução: verifique o parâmetro mynetworks no /etc/postfix/main.cf e adicione o IP da aplicação se necessário. Para aplicações locais, 127.0.0.0/8 já deve cobrir. Se a aplicação está em outro servidor, configure autenticação SASL ou adicione o IP específico ao mynetworks. Nunca adicione blocos de IP amplos sem necessidade.

Sintoma: Postfix inicia mas não escuta na porta 25

Causa: o parâmetro inet_interfaces pode estar configurado como loopback-only, limitando o Postfix a aceitar conexões apenas do localhost. Isso é comum em instalações padrão do Debian 12.
Solução: edite o /etc/postfix/main.cf e altere inet_interfaces = loopback-only para inet_interfaces = all. Verifique com ss -tlnp | grep :25 após recarregar o serviço. O output deve mostrar 0.0.0.0:25 em vez de 127.0.0.1:25.

Sintoma: erro "Connection timed out" ao tentar entregar para servidores externos

Causa: além do bloqueio da porta 25 pelo provedor, pode haver um problema de resolução DNS no servidor. O Postfix precisa resolver os registros MX dos domínios de destino para entregar mensagens.
Solução: teste a resolução DNS com dig MX gmail.com. Se falhar, verifique o arquivo /etc/resolv.conf e confirme que os servidores DNS estão acessíveis. Configure servidores DNS confiáveis como 8.8.8.8 e 1.1.1.1 se necessário. Verifique também se o firewall local não está bloqueando saída na porta 53.

Sintoma: emails enviados mas não recebidos pelo destinatário (sem bounce)

Causa: o log mostra status=sent, mas o destinatário não recebe. Isso indica que o servidor de destino aceitou a mensagem mas a descartou silenciosamente (spam silencioso) ou a entregou em pasta de lixo eletrônico.
Solução: verifique a pasta de spam do destinatário. Confirme que o From: do email usa um endereço do domínio com SPF válido. Teste com ferramentas como mail-tester.com para obter uma pontuação de reputação do email. Considere implementar DKIM e DMARC para aumentar a confiabilidade das mensagens.

Perguntas frequentes sobre Postfix não enviando emails

Por que o Postfix não envia emails mesmo com o serviço ativo?

O serviço ativo não garante entrega: a porta 25 pode estar bloqueada pelo provedor, o registro SPF pode estar ausente ou incorreto, ou a fila pode estar travada por um erro de DNS reverso. Execute postqueue -p para ver mensagens presas e mailq para inspecionar o motivo do atraso. O log em /var/log/mail.log sempre contém a causa exata da falha de entrega.

Como verificar se a porta 25 está bloqueada no Debian 12?

Execute nc -zv smtp.gmail.com 25 ou telnet smtp.gmail.com 25 a partir do servidor. Se a conexão falhar imediatamente com timeout, a porta 25 de saída está bloqueada pelo provedor de hospedagem. Nesse caso, use a porta 587 com STARTTLS ou 465 com SSL/TLS configurando um relay SMTP externo como alternativa viável.

O que significa o erro "relay access denied" no Postfix?

Esse erro indica que o Postfix está recusando retransmitir mensagens para domínios externos porque o cliente não está autenticado ou o IP de origem não está na lista de redes confiáveis. Verifique os parâmetros mynetworks e smtpd_relay_restrictions no arquivo /etc/postfix/main.cf. Para aplicações locais, certifique-se de que o IP 127.0.0.1 está incluído no bloco mynetworks.

Como forçar o Postfix a reenviar emails presos na fila?

Execute postqueue -f para tentar reenviar todas as mensagens em fila imediatamente. Para remover mensagens específicas, use postsuper -d ID_DA_MENSAGEM. Para limpar toda a fila de diferidos, execute postsuper -d ALL deferred — use este último comando com cautela, pois as mensagens removidas não poderão ser recuperadas.

Como testar se o Postfix está enviando corretamente pelo terminal?

Use o comando echo "Teste" | mail -s "Assunto teste" [email protected] e em seguida verifique o log com tail -f /var/log/mail.log. Uma entrega bem-sucedida mostrará a linha status=sent no log. Se aparecer status=deferred ou status=bounced, o log indicará a causa exata com o código de erro retornado pelo servidor de destino.

Conclusão

  • Comece sempre pelos logs: tail -f /var/log/mail.log e postqueue -p revelam a causa exata em segundos — não tente corrigir às cegas.
  • Valide porta 25 e autenticação: confirme que a porta 25 não está bloqueada pelo provedor e que SPF, DKIM e DNS reverso estão configurados corretamente para garantir entregabilidade.
  • Teste após cada alteração: use postfix check antes de recarregar e envie um email de teste monitorando o log em tempo real para confirmar que cada ajuste surtiu efeito.

Leia também

Precisa de ajuda com Postfix e email no servidor?

Configurar um servidor de email confiável exige atenção a múltiplas camadas: configuração do Postfix, registros DNS, reputação de IP e autenticação. Um VPS com suporte técnico especializado pode simplificar esse processo significativamente.

Conheça os planos de VPS da AviraHost com suporte para configuração de email


Esta resposta foi útil?