Resolvendo conflitos de quota de e-mail e erros de SMTPUTF8 em ambiente Exim/Dovecot
Voltar para blog

Resolvendo conflitos de quota de e-mail e erros de SMTPUTF8 em ambiente Exim/Dovecot

07/06/2026 · 6 min · E-mail

Resolvendo conflitos de quota de e-mail e erros de SMTPUTF8 em ambiente Exim/Dovecot#

Durante migrações de e-mail entre painéis de controle (como cPanel para Plesk ou vice-versa), dois problemas aparecem com grande frequência: discrepâncias entre o uso real de disco das caixas postais e o limite exibido no painel administrativo, e falhas de entrega com o erro SMTPUTF8 used when not advertised.

Tratando ambos os problemas em conjunto, restabelecemos a estabilidade operacional do servidor SMTP (MTA) e das quotas locais do Dovecot.


1) Diagnóstico inicial e verificação de versões#

Antes de alterar qualquer arquivo de configuração, é recomendável obter as versões dos principais pacotes envolvidos para mapear compatibilidades de sintaxe:

# Verificar a versão do Exim
exim -V

# Verificar a versão do Dovecot
doveadm --version

# Obter a versão do cPanel/WHM instalada
cat /usr/local/cpanel/version

2) Conflito de quota inconsistente#

Sintomas comuns:

A. Medição física via shell (maildir)#

Verifique o tamanho físico real ocupado pela mailbox diretamente no disco do servidor:

# Exibir o tamanho de todas as caixas de um domínio
du -h --max-depth=1 /home/usuario/mail/domain.com/ | sort -h

B. Consultar quota declarada no Dovecot#

Consulte as métricas ativas na memória do Dovecot para a conta afetada:

# Obter limites de quota do usuário específico
doveadm quota get -u [email protected]

Se o valor retornado pelo du e o reportado pelo doveadm quota get apresentarem grande divergência, o arquivo de cache maildirsize está desatualizado ou corrompido.

C. Verificar se a configuração de quota está ativa no Dovecot#

Certifique-se de que o plugin de quota está carregado e verifique as regras ativas de limite no Dovecot. Caso precise inspecionar ou ajustar regras personalizadas pós-migração, verifique as diretivas de quota_rule nos arquivos de configuração do Dovecot (tipicamente localizados em /etc/dovecot/conf.d/90-quota.conf):

# Validar se o plugin de quota está habilitado no mail_plugins
doveconf -n | grep -i "mail_plugins"

# Consultar limites de quota globais e regras de tamanho
doveconf quota_rule

3) Procedimento de correção de quota (runbook)#

Passo a: realizar o backup completo dos arquivos maildirsize#

# Criar diretório seguro para o backup
BACKUP_DIR="/root/maildirsize-backup-$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"

# Encontrar e copiar os arquivos maildirsize mantendo a árvore de pastas para backup
find /home/usuario/mail/domain.com/ -name "maildirsize" -exec cp --parents {} "$BACKUP_DIR/" \;

# Alternativa: Criar um arquivo compactado tar.gz com todos os arquivos maildirsize
find /home/usuario/mail/domain.com/ -name "maildirsize" -exec tar czf "$BACKUP_DIR/maildirsize-backup.tar.gz" {} +

echo "Backup completo de quotas salvo em: $BACKUP_DIR"

Passo b: remover os arquivos de quotas obsoletos#

Remova os arquivos maildirsize desatualizados para forçar o Dovecot a gerar novos índices limpos:

find /home/usuario/mail/domain.com/ -name "maildirsize" -exec rm -f {} \;

Passo c: recalcular a quota no Dovecot#

Comande o Dovecot para recalcular o uso de disco com base na varredura física real das pastas:

# Recalcular quota de uma caixa de e-mail específica
doveadm quota recalc -u [email protected]

# Recalcular quota para todas as contas de um domínio em lote usando globbing seguro (evita ls)
for dir in /home/usuario/mail/domain.com/*/; do
  mailbox="$(basename "$dir")"
  doveadm quota recalc -u "[email protected]"
done

Passo d: sincronizar o cache do painel (cPanel)#

Se o servidor utiliza cPanel, atualize o cache interno do painel de controle para sincronizar as visualizações na interface administrativa:

/scripts/update_db_cache

Passo e: verificação pós-recálculo#

Valide se as caixas postais agora mostram os valores idênticos entre o disco e as queries do Dovecot, e realize um teste prático de envio:

# Comparar valores da consulta com uso real de disco
doveadm quota get -u [email protected]
du -sh /home/usuario/mail/domain.com/contato/

# Auditar logs do Dovecot buscando alertas de quota (syslog tradicional)
tail -n 50 /var/log/maillog | grep -i "quota"

# Alternativa para sistemas sob systemd
journalctl -u dovecot --since "1 hour ago" | grep -i "quota"

# Testar o envio de um e-mail de teste de quota
echo "Teste de quota de email" | mail -s "Teste de Quota" [email protected]

4) Falha de entrega SMTPUTF8#

O Erro: SMTPUTF8 used when not advertised

Causa: Esse erro ocorre quando o cliente de e-mail envia um cabeçalho contendo caracteres especiais UTF-8 sem que o servidor SMTP de destino (MTA) anuncie a extensão SMTPUTF8 (RFC 6531) no handshake inicial (EHLO). Como o destino é antigo ou não suporta UTF-8 no envelope, a transação é rejeitada na origem.

A. Diagnóstico da fila do Exim#

Monitore e analise as mensagens retidas na fila do Exim decorrentes de falhas de SMTPUTF8:

# Buscar erros de SMTPUTF8 nos logs principais do Exim
grep -i "smtputf8" /var/log/exim_mainlog | tail -n 50

# Alternativa usando journalctl se exim_mainlog não for mantido fisicamente
journalctl -u exim --since "2 hours ago" | grep -i "smtputf8"

# Alternativa caso o caminho físico varie (ex: Debian/Ubuntu)
grep -i "smtputf8" /var/log/exim/mainlog | tail -n 20

# Listar todas as mensagens na fila do Exim
exim -bp
Compreendendo a Saída de exim -bp:#

A listagem exibe as mensagens no formato: 12h 1.8K 1abcde-0001ab-ab <[email protected]> [email protected]

Para contar e filtrar mensagens antigas presas na fila:

# Contar total de mensagens na fila
exim -bp | wc -l

# Filtrar mensagens na fila há mais de 24 horas
exim -bp | awk '$1 ~ /d$/ {print}' | head -n 20

B. Consultar a configuração SMTPUTF8 no Exim#

# Verificar se o Exim está anunciando a diretiva smtputf8_advertise_hosts
exim -bP smtputf8_advertise_hosts

# Verificar se a linha existe no arquivo físico de configuração
grep -i "smtputf8" /etc/exim.conf

Nota: No cPanel/WHM, você também pode checar a configuração via API:

whmapi1 listeximconfig | grep -i smtputf8

5) Resolução do erro SMTPUTF8 no Exim#

Se o seu servidor de e-mail precisa enviar mensagens contendo envelopes ou cabeçalhos UTF-8 para servidores remotos legados que não anunciam a extensão, você deve configurar o Exim para desabilitar o anúncio forçado de suporte SMTPUTF8, permitindo fallback dinâmico.

Acesse WHM » Exim Configuration Manager » Advanced Editor, procure por smtputf8_advertise_hosts e defina o valor como vazio (ou remova a sinalização de IP).

Após a alteração, valide a sintaxe do arquivo e reinicie o Exim:

# Reiniciar o serviço do Exim
systemctl restart exim

Limpar fila de e-mails presos#

Para remover de forma forçada mensagens paradas devido a falhas recorrentes de SMTPUTF8:

# 1. Inspecionar cabeçalho de uma mensagem específica antes de apagar
exim -Mvh ID_DA_MENSAGEM

# 2. Listar mensagens de SMTPUTF8 e visualizar seus cabeçalhos com segurança
exim -bp | grep -i "smtputf8" | awk '{print $3}' | while read -r msgid; do
  echo "=== MSG ID: $msgid ==="
  exim -Mvh "$msgid" | head -15
  echo -e "-------------------------\n"
done

# 3. Remover mensagens da fila contendo o erro SMTPUTF8 (após validação)
exim -bp | grep -i "smtputf8" | awk '{print $3}' | xargs -r exim -Mrm

# 4. Forçar a entrega seletiva apenas para o domínio problemático (evita sobrecarga)
exim -qff -R @dominio-destino.com

# Alternativa: Forçar a entrega global com cautela
# Nota: `-qff` (flush frozen) tenta entregar inclusive mensagens congeladas (frozen),
# enquanto `-qf` (flush normal) tenta apenas mensagens ativas. Em ambientes instáveis,
# prefira `-qf` ou `-qff -R @dominio` para limitar o escopo da tentativa.
exim -qff

SOP: checklist de migração de e-mail (quota + SMTPUTF8)#

Abaixo está o fluxo operacional para auditoria e estabilização de e-mails em migrações:

Pré-migração#

Durante a migração#

Pós-migração#

Validação e aceite#


Script de auditoria de quota e fila de e-mail#

Utilize o script audit-quota.sh para varrer periodicamente as caixas de e-mail e reportar inconsistências ou acúmulos na fila:

#!/bin/bash
# audit-quota.sh - Auditoria e triagem de quotas e fila SMTP
# Uso: ./audit-quota.sh

set -euo pipefail

echo "=========================================================="
echo " INICIANDO AUDITORIA DE QUOTAS E FILA DO EXIM"
echo "=========================================================="

# 1. Obter versões
echo -e "\n[1] Versões dos Serviços:"
exim -V | head -n 1
doveadm --version 2>/dev/null || echo "Dovecot: $(dovecot --version)"

# 2. Consultar status da fila do Exim
echo -e "\n[2] Status da Fila Exim:"
QUEUE_COUNT=$(exim -bp | grep -c '^[0-9]' || true)
echo "    Mensagens pendentes na fila: $QUEUE_COUNT"
if [ "$QUEUE_COUNT" -gt 0 ]; then
    echo "    Últimas 5 mensagens da fila:"
    exim -bp | head -n 10
fi

# 3. Verificar arquivos maildirsize antigos (indicam falta de sincronismo)
echo -e "\n[3] maildirsize Sem Modificações Há Mais de 30 Dias:"
find /home/*/mail -name "maildirsize" -mtime +30 2>/dev/null | head -n 15 || echo "    Nenhum arquivo maildirsize antigo encontrado."

# 4. Checar erros de quota nos logs do Dovecot
echo -e "\n[4] Logs Recentes de Erro de Quota (Dovecot):"
grep -i "quota" /var/log/maillog 2>/dev/null | tail -n 5 || echo "    Nenhum log de quota encontrado no syslog."

# 5. Checar erros de SMTPUTF8 no Exim
echo -e "\n[5] Erros Recentes de SMTPUTF8 no Exim:"
grep -i "smtputf8" /var/log/exim_mainlog 2>/dev/null | tail -n 5 || echo "    Nenhum log de erro SMTPUTF8 encontrado."

# 6. Verificar configuração de anúncio de suporte SMTPUTF8
echo -e "\n[6] Configuração de smtputf8_advertise_hosts no Exim:"
exim -bP smtputf8_advertise_hosts 2>/dev/null || echo "    Diretiva não encontrada na configuração ativa do Exim."

echo -e "\n=========================================================="
echo " AUDITORIA CONCLUÍDA"
echo "=========================================================="

Considerações práticas#

Erros de quota e SMTPUTF8 pós-migração são causados por índices de arquivo inválidos (maildirsize) e falta de compatibilidade no anúncio de recursos internacionais em MTAs legados. Ao realizar backups dos arquivos de quotas antes de limpá-los, recalcular os limites via Dovecot CLI e configurar o parâmetro de compatibilidade de hosts no Exim, normalizamos o tráfego de e-mail com segurança e exatidão.

Este artigo foi útil?

Deixe uma reação rápida para apoiar o conteúdo:

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários