14 min de leitura · Guia técnico
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,netcatemailutilsinstalados
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.
- 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
- 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.
- 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.
- 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.logepostqueue -prevelam 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 checkantes de recarregar e envie um email de teste monitorando o log em tempo real para confirmar que cada ajuste surtiu efeito.
Leia também
- Solucionar falhas de envio de e-mails por bloqueio em listas RBL no VPS Linux e servidor dedicado
- Entenda o que é blacklist de IP: como verificar e remover seu servidor
- Passo a passo para configurar servidor de e-mail no VPS Linux
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