Hospedagem Segura — página inicial

Linux e SSH

Como verificar a fila de e-mails do Exim pelo SSH e limpar com segurança

exim -bpc conta, exim -bp lista, exiqgrep filtra, exim -Mvh e -Mvb mostram a mensagem e exim -Mrm remove. Veja cada comando rodando num Exim de verdade, como achar a conta que disparou spam, por que a fila trava e o que muda no cPanel.

  • Por equipe técnica da Hospedagem Segura
  • Atualizado em 10/10/2026
  • 8 min de leitura

Texto do artigo

Neste artigo
  1. Contar e listar a fila do Exim: exim -bpc e exim -bp
  2. Resumo da fila por domínio e por remetente
  3. Ver o conteúdo de uma mensagem: -Mvh, -Mvb e -Mvl
  4. Por que as mensagens ficam presas na fila
  5. Remover, congelar e reenviar mensagens com segurança
  6. No cPanel: mesmos comandos, outros caminhos
  7. Perguntas frequentes

Para verificar a fila de e-mails do Exim pelo SSH, entre como root e rode exim -bpc para saber quantas mensagens estão paradas e exim -bp para listar cada uma, com idade, tamanho, ID, remetente e destinatários. Para filtrar, use o exiqgrep; para abrir uma mensagem, exim -Mvh (cabeçalho), exim -Mvb (corpo) e exim -Mvl (histórico de entrega); para remover, exim -Mrm.

Os comandos são os mesmos num servidor cPanel, onde o programa também se chama exim, e no Debian ou no Ubuntu, onde o pacote é o exim4 e o comando exim é um atalho para ele. Tudo abaixo foi rodado de verdade num Debian 13 com Exim 4.98.2, com mensagens de exemplo presas na fila porque o contêiner estava sem rede, a mesma situação de um servidor que não consegue entregar.

Contar e listar a fila do Exim: exim -bpc e exim -bp

O exim -bpc devolve só o total. O exim -bp lista a fila em ordem de chegada. Em fila grande, use exim -bpr, que não ordena e responde mais rápido, e mande para o head ou o less:

Saída de exim -bpc com 18 mensagens e de exim -bp listando idade, tamanho, ID, remetente e destinatário de cada mensagem
exim -bpc conta; exim -bp mostra quem enviou para quem

Cada mensagem ocupa duas ou mais linhas:

  • Na primeira, a idade na fila (4m, 2h, 3d), o tamanho, o ID da mensagem e o remetente entre os sinais de menor e maior.
  • Nas seguintes, os destinatários. Quem já recebeu aparece com D na frente.
  • Remetente <> é um aviso de não entrega (bounce) gerado pelo próprio servidor.
  • A palavra frozen, entre três asteriscos de cada lado, marca uma mensagem congelada, que o Exim parou de tentar entregar.

O ID mudou de formato no Exim 4.97: passou de 16 para 23 caracteres, como 1xFNjJ-000000001Cw-42zz. Servidores com Exim mais antigo mostram IDs curtos; os comandos são os mesmos.

Resumo da fila por domínio e por remetente

Com centenas de mensagens, ler a lista não adianta. O exiqsumm agrupa os destinos por domínio, e uma linha de awk agrupa por remetente. No exemplo, fica evidente de onde veio a rajada:

Saída do exiqsumm com a fila agrupada por domínio de destino, contagem de mensagens por remetente e filtros do exiqgrep
14 das 18 mensagens são do mesmo remetente: sinal de conta comprometida
exim -bp | exiqsumm
exim -bp | awk '/^ *[0-9]+[mhd]/{print $4}' | sort | uniq -c | sort -rn | head

O exiqgrep filtra a fila e é a base para qualquer limpeza segura. As opções mais usadas, segundo a documentação do Exim:

  • -f remetente e -r destinatário: aceitam expressão regular e não diferenciam maiúsculas.
  • -o segundos e -y segundos: mensagens mais velhas ou mais novas que o tempo dado.
  • -z só as congeladas; -x só as não congeladas.
  • -i mostra só os IDs; -c mostra só a contagem; -b mostra uma linha por mensagem.
exiqgrep -f promo@exemplo.com.br -c
exiqgrep -r '@example\.net$' -i
exiqgrep -o 86400 -i
exiqgrep -f '^<>$' -i
O último lista os avisos de não entrega (remetente vazio). O -o 86400 pega o que está na fila há mais de um dia.

Ver o conteúdo de uma mensagem: -Mvh, -Mvb e -Mvl

Antes de apagar, abra uma amostra. O -Mvh mostra o arquivo de cabeçalho da fila: usuário que enviou, remetente, destinatários e os cabeçalhos do e-mail. O -Mvb mostra o corpo e o -Mvl, o histórico de tentativas de entrega dessa mensagem:

Saída de exim -Mvh com o cabeçalho de uma mensagem na fila, exim -Mvb com o corpo e exim -Mvl com a tentativa de entrega adiada
Cabeçalho, corpo e histórico da mesma mensagem

No cabeçalho, procure a linha Received: from: num servidor de hospedagem, ela mostra o usuário do sistema que gerou a mensagem, o que já aponta a conta. Se o PHP estiver com mail.add_x_header ligado, o cabeçalho X-PHP-Originating-Script traz o arquivo que chamou a função mail(), muitas vezes um formulário de contato abusado ou um arquivo malicioso enviado ao site. Para ver a mensagem completa, como o destinatário receberia, use exim -Mvc.

Por que as mensagens ficam presas na fila

A fila não deveria acumular. Quando cresce, o motivo aparece no histórico da mensagem (-Mvl) ou no log principal do Exim. As causas mais comuns:

  • O servidor de destino recusa ou não responde, e o Exim adia e tenta de novo depois (linhas com == no log).
  • Falha de DNS: o domínio de destino não resolve, como no nosso teste ("host lookup did not complete").
  • Porta 25 de saída bloqueada: muitos provedores de VPS bloqueiam por padrão, e as mensagens ficam adiadas com tempo esgotado.
  • Rajada de spam de uma conta comprometida ou de um formulário sem proteção.
  • Avisos de não entrega para remetentes falsos, que não têm para onde voltar e acabam congelados.

Para achar quem mais enviou, conte as entradas de recebimento (<=) no log por remetente. O exigrep junta todas as linhas de uma mensagem:

Contagem de mensagens recebidas por remetente no log do Exim, exigrep com o histórico de uma mensagem e remoção do aviso de não entrega
O log confirma o remetente da rajada e mostra cada tentativa de entrega
grep ' <= ' /var/log/exim_mainlog | awk '{print $5}' | sort | uniq -c | sort -rn | head
exigrep 1xFNjJ-000000001Ck-3kLL /var/log/exim_mainlog
No cPanel, o log é /var/log/exim_mainlog. No Debian e no Ubuntu, /var/log/exim4/mainlog (usado no teste).

Remover, congelar e reenviar mensagens com segurança

Depois de identificar o remetente, remova só as mensagens dele. O -Mrm apaga sem gerar aviso de não entrega, e não há como recuperar:

Remoção com exiqgrep e xargs exim -Mrm das 14 mensagens de um remetente, seguida de exim -bpc com 4 mensagens restantes
Só as mensagens do remetente comprometido saíram da fila
exiqgrep -i -f promo@exemplo.com.br | xargs exim -Mrm
exiqgrep -i -r promo@exemplo.com.br | xargs exim -Mrm
exiqgrep -z -i | xargs exim -Mrm
Remetente da rajada, avisos de não entrega endereçados a ele e todas as congeladas, nessa ordem.

Repare que os avisos de não entrega para o remetente comprometido não saem no primeiro comando, porque o remetente deles é <>; o segundo comando, filtrando pelo destinatário, resolve. Se aparecer a mensagem de que um e-mail está travado (locked), é porque o Exim está entregando aquela mensagem naquele momento.

Para segurar uma mensagem sem apagar, congele e descongele:

# exim -Mf 1xFNjN-000000001E9-0U2o
Message 1xFNjN-000000001E9-0U2o is now frozen
# exiqgrep -z
 5m  1.7K 1xFNjN-000000001E9-0U2o <> *** frozen ***
	  promo@exemplo.com.br
# exim -Mt 1xFNjN-000000001E9-0U2o
Message 1xFNjN-000000001E9-0U2o is no longer frozen
Saída real do teste.

Para tentar entregar agora, use exim -M <ID> para uma mensagem ou exim -qf para a fila toda (ignorando o intervalo entre tentativas); o exim -qff inclui as congeladas. Corrija a causa antes: forçar a entrega de spam só piora a reputação do IP. O comando que apaga a fila inteira, exiqgrep -i | xargs exim -Mrm, leva junto e-mails legítimos e não tem volta.

Atenção

limpar a fila sem fechar a origem não resolve. Troque a senha da conta de e-mail ou do site comprometido, remova o arquivo malicioso e só então limpe. Senão, a fila enche de novo em minutos.

No cPanel: mesmos comandos, outros caminhos

No cPanel, o comando também é exim, e a própria documentação da cPanel usa exim -bpc, exim -Mrm e exiqgrep -f ... | xargs exim -Mrm, que exigem acesso root. O que muda:

  • Log principal: /var/log/exim_mainlog (também existem exim_rejectlog e exim_paniclog).
  • Reiniciar o Exim: /usr/local/cpanel/scripts/restartsrv_exim --restart.
  • Pela tela: o WHM tem o Mail Queue Manager, que lista, entrega, apaga e descongela mensagens.
  • Em hospedagem compartilhada, sem root, quem mexe na fila é o provedor.

Mantenha o Exim atualizado. O site oficial do projeto lista a 4.100.1, uma versão de segurança de setembro de 2026, como a atual. No Debian e no Ubuntu, as correções chegam pelo pacote exim4; no cPanel, pelas atualizações do próprio painel.

Acompanhar fila, reputação de IP, SPF, DKIM e DMARC faz parte de manter e-mail funcionando num servidor próprio. No servidor dedicado com cPanel, a licença oficial vem na proposta e a administração pode ficar com a equipe; na VPS com cPanel, você mantém o root e cuida do servidor.

Perguntas frequentes

Como ver quantos e-mails estão na fila do Exim?

Rode exim -bpc como root: o comando devolve só o número de mensagens na fila. Para listar cada uma, com idade, tamanho, ID, remetente e destinatários, use exim -bp, ou exim -bpr em filas grandes, que responde mais rápido por não ordenar.

Como apagar todos os e-mails de um remetente da fila do Exim?

Use exiqgrep -i -f remetente@exemplo.com.br | xargs exim -Mrm. O exiqgrep lista só os IDs das mensagens daquele remetente e o exim -Mrm remove cada uma, sem gerar aviso de não entrega. Rode antes o mesmo exiqgrep com -c para conferir quantas mensagens serão apagadas.

O que é uma mensagem frozen no Exim?

É uma mensagem congelada: o Exim parou de tentar entregá-la, em geral um aviso de não entrega que não tem para onde voltar. Liste as congeladas com exiqgrep -z, descongele uma com exim -Mt ID ou remova todas com exiqgrep -z -i | xargs exim -Mrm.

Os comandos do Exim são os mesmos no cPanel?

São. No cPanel o comando é exim e a documentação oficial da cPanel usa exim -bpc, exim -Mrm e exiqgrep para gerenciar a fila. O que muda é o caminho do log, /var/log/exim_mainlog, e o reinício do serviço, feito com /usr/local/cpanel/scripts/restartsrv_exim.

Leia também

E-mail no seu servidor cPanel

Servidor dedicado ou VPS com cPanel/WHM e licença oficial, com Exim, webmail e acesso root. No dedicado, a administração pode ficar com a equipe, sob proposta.