16 min de leitura · Guia técnico
Logs do Postfix são registros detalhados de todas as operações de envio, recebimento e rejeição de mensagens processadas pelo servidor de email. Para localizar, visualizar e analisar os logs do Postfix no Linux, siga estes passos:
- Localize o arquivo de log correto para sua distribuição (
/var/log/mail.logno Ubuntu/Debian ou/var/log/maillogno Rocky Linux 9) - Use
tail -fpara monitorar logs em tempo real durante testes de entrega - Identifique o Queue ID de uma mensagem e rastreie seu ciclo de vida completo
- Filtre por endereço de email com
greppara isolar problemas específicos - Interprete os status de entrega:
sent,bounced,deferrederejected - Use
mailqepostqueuepara inspecionar mensagens presas na fila
Pré-requisitos para analisar logs do Postfix
- Postfix instalado e em execução (versão 3.x ou superior, presente no Ubuntu 22.04, Debian 12 e Rocky Linux 9)
- Acesso root ou usuário com permissão
sudoao servidor - Acesso SSH ao servidor Linux — veja o guia Acessando servidores VPS Linux da AviraHost se precisar configurar o acesso
- Serviço
rsyslogoujournaldativo para gravação dos logs - Conhecimento básico de linha de comando Linux (grep, tail, less)
Onde ficam os logs do Postfix no Linux
O local dos logs do Postfix varia conforme a distribuição Linux utilizada. Entender essa diferença evita horas de busca desnecessária quando algo dá errado no servidor de email.
No Ubuntu 22.04 LTS, Ubuntu 24.04 LTS e Debian 12, o Postfix registra todas as atividades no arquivo centralizado de email:
/var/log/mail.log
No Rocky Linux 9 e AlmaLinux 9 (derivados do RHEL), o arquivo padrão é diferente:
/var/log/maillog
Em sistemas que utilizam systemd como init (praticamente todos os Linux modernos), os logs também ficam disponíveis no journal do systemd, independentemente do arquivo de texto:
journalctl -u postfix
Para verificar qual arquivo está sendo usado no seu sistema, execute:
postconf -d syslog_facility
syslog_facility = mail
Isso confirma que o Postfix usa a facility mail do syslog. O rsyslog então direciona esses registros para o arquivo correto conforme a configuração em /etc/rsyslog.conf ou em arquivos dentro de /etc/rsyslog.d/.
Para confirmar que o arquivo de log existe e está sendo atualizado:
ls -lh /var/log/mail.log
-rw-r----- 1 syslog adm 2,4M jan 15 14:32 /var/log/mail.log
Se o arquivo não existir, verifique se o rsyslog está ativo:
systemctl status rsyslog
Como visualizar os logs do Postfix em tempo real
Monitorar o fluxo de mensagens em tempo real é a forma mais eficiente de diagnosticar problemas de entrega de email no momento em que ocorrem.
Para acompanhar os logs do Postfix ao vivo no Ubuntu ou Debian:
tail -f /var/log/mail.log
No Rocky Linux 9 ou AlmaLinux 9:
tail -f /var/log/maillog
Via journalctl (funciona em qualquer distribuição com systemd):
journalctl -u postfix -f
Ao enviar um email de teste enquanto o tail -f está rodando, você verá algo semelhante a:
Jan 15 14:35:22 servidor postfix/pickup[1234]: A1B2C3D4E5F6: uid=1000 from=<[email protected]>
Jan 15 14:35:22 servidor postfix/cleanup[1235]: A1B2C3D4E5F6: message-id=<[email protected]>
Jan 15 14:35:22 servidor postfix/qmgr[1236]: A1B2C3D4E5F6: from=<[email protected]>, size=512, nrcpt=1 (queue active)
Jan 15 14:35:23 servidor postfix/smtp[1237]: A1B2C3D4E5F6: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[142.250.27.27]:25, delay=0.8, delays=0.1/0.0/0.5/0.2, dsn=2.0.0, status=sent (250 2.0.0 OK)
Para ver as últimas 100 linhas do log sem modo ao vivo:
tail -n 100 /var/log/mail.log
Para navegar pelo arquivo completo com paginação:
less /var/log/mail.log
Dentro do less, use /termo para buscar e n para ir para a próxima ocorrência.
Como interpretar as entradas de log do Postfix
Cada linha do log do Postfix segue uma estrutura padronizada que, uma vez compreendida, permite identificar rapidamente o status de qualquer mensagem no servidor de email.
A anatomia de uma linha de log típica é:
Jan 15 14:35:23 servidor postfix/smtp[1237]: A1B2C3D4E5F6: to=<[email protected]>, relay=..., delay=0.8, status=sent (250 2.0.0 OK)
- Jan 15 14:35:23 — data e hora do evento
- servidor — hostname do servidor
- postfix/smtp[1237] — componente do Postfix responsável (smtp, smtpd, qmgr, cleanup, pickup)
- A1B2C3D4E5F6 — Queue ID, identificador único da mensagem na fila
- to= — endereço do destinatário
- relay= — servidor de destino utilizado para entrega
- delay= — tempo total de processamento em segundos
- status= — resultado final da tentativa de entrega
Os status de entrega mais importantes são:
- status=sent — mensagem entregue com sucesso ao servidor de destino
- status=bounced — rejeição permanente (erro 5xx); o email não será reenviado
- status=deferred — falha temporária (erro 4xx); o Postfix tentará reenviar automaticamente
- status=expired — mensagem ficou na fila por tempo demais e foi descartada
Os componentes do Postfix que aparecem nos logs têm funções distintas:
- postfix/smtpd — recebe conexões SMTP de entrada
- postfix/smtp — envia mensagens para servidores externos
- postfix/qmgr — gerencia a fila de mensagens
- postfix/cleanup — processa e normaliza mensagens recebidas
- postfix/pickup — coleta mensagens do diretório de spool local
- postfix/bounce — gera notificações de falha de entrega
Como filtrar e rastrear mensagens específicas nos logs
Filtrar registros de email por endereço ou por Queue ID é a técnica mais poderosa para rastrear o ciclo de vida completo de uma mensagem no Postfix.
Para buscar todas as entradas relacionadas a um endereço de email específico:
grep '[email protected]' /var/log/mail.log
Para buscar apenas emails enviados para um destinatário:
grep 'to=<[email protected]>' /var/log/mail.log
Para buscar apenas emails originados de um remetente:
grep 'from=<[email protected]>' /var/log/mail.log
Para rastrear uma mensagem pelo Queue ID (substitua A1B2C3D4E5F6 pelo ID real):
grep 'A1B2C3D4E5F6' /var/log/mail.log
Isso mostrará todas as etapas de processamento daquela mensagem específica, do recebimento à entrega ou rejeição.
Para filtrar apenas mensagens com falha de entrega permanente:
grep 'status=bounced' /var/log/mail.log
Para filtrar mensagens adiadas (deferred) nas últimas 24 horas:
grep 'status=deferred' /var/log/mail.log | grep "$(date '+%b %e')"
Para contar quantas mensagens foram enviadas com sucesso hoje:
grep "$(date '+%b %e')" /var/log/mail.log | grep 'status=sent' | wc -l
Para buscar em logs rotacionados (arquivos comprimidos):
zgrep '[email protected]' /var/log/mail.log.*.gz
Se você está configurando um servidor de email do zero, consulte o guia Passo a passo para configurar servidor de e-mail no VPS Linux para entender a arquitetura completa antes de analisar os logs.
Como inspecionar e gerenciar a fila de emails do Postfix
A fila de mensagens do Postfix é onde ficam os emails aguardando entrega. Inspecioná-la é essencial quando os logs mostram mensagens com status=deferred ou quando usuários reclamam de emails não entregues.
Para listar todas as mensagens na fila:
mailq
Ou equivalentemente:
postqueue -p
O output mostrará algo como:
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
A1B2C3D4E5F6 512 Wed Jan 15 14:30:00 [email protected]
(connect to destino.com[192.168.1.1]:25: Connection refused)
[email protected]
-- 1 Kbytes in 1 Request.
Para ver o conteúdo completo de uma mensagem na fila pelo Queue ID:
postcat -q A1B2C3D4E5F6
Para forçar nova tentativa de entrega de todas as mensagens na fila imediatamente:
postqueue -f
Para remover uma mensagem específica da fila:
Atenção: o comando abaixo remove permanentemente a mensagem da fila. Não há como desfazer esta ação.
postsuper -d A1B2C3D4E5F6
Para remover todas as mensagens da fila de uma vez:
Atenção: este comando apaga todas as mensagens pendentes de entrega. Use apenas se tiver certeza absoluta.
postsuper -d ALL
Para mover mensagens da fila ativa para a fila de espera (hold):
postsuper -h ALL deferred
Análise avançada de logs com pflogsumm
O pflogsumm é uma ferramenta de análise de logs do Postfix que gera relatórios estatísticos detalhados, sendo especialmente útil para administradores que precisam de uma visão consolidada do tráfego de email.
Para instalar o pflogsumm no Ubuntu 22.04 ou Debian 12:
apt install pflogsumm -y
No Rocky Linux 9 ou AlmaLinux 9:
dnf install postfix-perl-scripts -y
Para gerar um relatório do dia atual:
pflogsumm /var/log/mail.log
Para gerar um relatório apenas das últimas 24 horas:
pflogsumm -d today /var/log/mail.log
Para gerar um relatório do dia anterior:
pflogsumm -d yesterday /var/log/mail.log
O relatório gerado inclui:
- Total de mensagens recebidas, entregues, rejeitadas e com bounce
- Top remetentes e destinatários por volume
- Hosts com mais rejeições
- Erros mais frequentes e suas contagens
- Tempo médio de entrega
Para enviar o relatório diário por email automaticamente via cron:
0 6 * * * pflogsumm -d yesterday /var/log/mail.log | mail -s "Relatório Postfix $(date '+%d/%m/%Y')" [email protected]
Problemas comuns e como resolver
Sintoma: arquivo /var/log/mail.log não existe ou está vazio
Causa: O rsyslog não está instalado, não está em execução, ou não está configurado para capturar a facility mail. Isso é comum em instalações mínimas de servidor.
Solução: Verifique e reinicie o rsyslog com systemctl status rsyslog. Se não estiver instalado, execute apt install rsyslog -y no Ubuntu/Debian. Confirme que o arquivo /etc/rsyslog.d/50-default.conf contém a linha mail.* -/var/log/mail.log. Após ajustar, reinicie com systemctl restart rsyslog e envie um email de teste para verificar.
Sintoma: logs mostram "status=deferred" repetidamente para o mesmo destinatário
Causa: Falha temporária de conexão com o servidor de destino. Pode ser bloqueio de porta 25 pelo provedor de internet, problema de DNS reverso (PTR) não configurado, ou o servidor de destino está temporariamente indisponível.
Solução: Verifique se a porta 25 está acessível com telnet gmail-smtp-in.l.google.com 25. Confirme que o registro PTR do IP do servidor está configurado corretamente com dig -x SEU_IP_DO_SERVIDOR. Se a porta 25 estiver bloqueada pelo provedor, considere usar um relay SMTP como alternativa. Verifique também se o IP do servidor está em alguma blacklist.
Sintoma: logs mostram "NOQUEUE: reject" com código 554
Causa: O Postfix está rejeitando mensagens antes mesmo de aceitar na fila. Geralmente indica que o remetente está em uma lista de bloqueio (RBL), que o SPF falhou, ou que as restrições de smtpd_recipient_restrictions estão bloqueando a mensagem.
Solução: Analise a mensagem completa de rejeição no log para identificar a causa exata. Para rejeições por RBL, verifique se o IP do remetente está em blacklists com ferramentas como MXToolbox. Para falhas de SPF, revise os registros DNS do domínio remetente. Execute grep 'NOQUEUE' /var/log/mail.log | tail -20 para ver os padrões de rejeição mais recentes.
Sintoma: logs do Postfix não aparecem no journalctl
Causa: Em algumas configurações, o Postfix usa apenas o syslog tradicional e não envia logs diretamente ao journal do systemd. Isso é comum quando o rsyslog está configurado sem o módulo de encaminhamento para o journal.
Solução: Verifique se o serviço está ativo com systemctl is-active postfix. Para forçar o Postfix a usar o journal, adicione syslog_name = postfix no /etc/postfix/main.cf e reinicie com systemctl restart postfix. Alternativamente, use sempre tail -f /var/log/mail.log como método primário de monitoramento.
Sintoma: mensagens ficam presas na fila com "Connection timed out"
Causa: O servidor não consegue estabelecer conexão TCP na porta 25 com o servidor de destino. Isso pode ser causado por firewall bloqueando saída na porta 25, problema de roteamento de rede, ou o servidor de destino estar offline.
Solução: Teste a conectividade diretamente com nc -zv gmail-smtp-in.l.google.com 25. Verifique as regras de firewall com iptables -L OUTPUT -n ou nft list ruleset. Se o VPS for de um provedor que bloqueia a porta 25 por padrão, será necessário solicitar a liberação ou configurar um relay SMTP autenticado via porta 587.
Perguntas frequentes sobre logs do Postfix
Onde ficam os logs do Postfix no Linux?
No Ubuntu e Debian, os logs do Postfix ficam em /var/log/mail.log. No Rocky Linux 9 e AlmaLinux 9, o arquivo principal é /var/log/maillog. Em sistemas com systemd, você também pode consultar os logs via journalctl -u postfix. A localização exata depende da configuração do rsyslog no sistema, mas esses são os caminhos padrão para cada família de distribuições.
Como ver em tempo real os logs do Postfix?
Execute tail -f /var/log/mail.log no Ubuntu/Debian ou tail -f /var/log/maillog no Rocky Linux para acompanhar os logs em tempo real. Cada linha nova aparece conforme o Postfix processa mensagens, permitindo diagnóstico imediato de falhas de entrega. Você também pode usar journalctl -u postfix -f em qualquer distribuição com systemd para o mesmo efeito.
O que significa 'status=bounced' no log do Postfix?
O status=bounced indica que o email foi rejeitado permanentemente pelo servidor de destino, geralmente por endereço inexistente (erro 550) ou domínio inválido. O Postfix gera uma notificação de falha (NDR) para o remetente e remove a mensagem da fila. Diferente do status=deferred, o bounce é definitivo e o Postfix não tentará reenviar a mensagem automaticamente.
Como filtrar logs do Postfix por endereço de email?
Use grep com o endereço desejado: grep '[email protected]' /var/log/mail.log. Para rastrear uma mensagem específica pelo ID, primeiro localize o Queue ID com grep e depois filtre por ele: grep 'QUEUEID' /var/log/mail.log para ver todo o ciclo de vida da mensagem. Combine com zgrep para pesquisar também em logs rotacionados e comprimidos.
Como verificar a fila de emails parados no Postfix?
Execute mailq ou postqueue -p para listar todas as mensagens na fila de entrega. Para ver detalhes de uma mensagem específica, use postcat -q QUEUEID. Para forçar nova tentativa de entrega de todas as mensagens na fila, execute postqueue -f. Se precisar remover uma mensagem específica da fila, use postsuper -d QUEUEID.
Conclusão
- Localize o arquivo correto para sua distro:
/var/log/mail.logno Ubuntu/Debian e/var/log/maillogno Rocky Linux 9 — usejournalctl -u postfixcomo alternativa universal em sistemas com systemd - Domine o rastreamento por Queue ID: todo problema de entrega pode ser diagnosticado filtrando o log pelo identificador único da mensagem com
grep 'QUEUEID' /var/log/mail.loge interpretando os statussent,bouncededeferred - Automatize a análise com pflogsumm: configure um relatório diário via cron para monitorar proativamente o volume de bounces, rejeições e mensagens adiadas antes que problemas afetem os usuários
Leia também
- Entenda o Postfix travando após upgrade no AlmaLinux 9
- Solucionar falhas do Postfix não enviando emails no Debian 12
- Como mover Postfix para novo servidor sem perder configurações
Precisa de ajuda com seu servidor de email?
Configurar e manter um servidor Postfix em produção exige atenção constante aos logs, configuração correta de DNS (SPF, DKIM, DMARC) e um ambiente de VPS estável com IP limpo. A AviraHost oferece servidores VPS Linux com suporte técnico especializado para quem precisa de infraestrutura confiável para hospedar serviços de email.