Voltar para blog

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

02/09/2025 · 2 min · Email

Compartilhar

Em migração de e-mail entre painéis, dois problemas aparecem com alta frequência: diferença entre uso real de mailbox e uso exibido no painel, e falha de entrega com SMTPUTF8 used when not advertised.

Neste caso, tratei os dois no mesmo ciclo de manutenção para restaurar previsibilidade operacional do MTA e do armazenamento.

1) Quota inconsistente: diagnóstico técnico antes de mexer

Sintoma:

1.1 Medição real por Maildir

du -h --max-depth=1 /home/usuario/mail/domain.com/ | sort -h

1.2 Conferência de quota no Dovecot

doveadm quota get -u contato@domain.com

Se du e doveadm divergem muito, o cenário costuma ser índice maildirsize obsoleto após restore/migração.

2) Correção da quota (runbook aplicado)

2.1 Backup rápido dos índices de quota

find /home/usuario/mail/domain.com/ -name "maildirsize" -print > /root/maildirsize-backup-list.txt

2.2 Remoção controlada de índices antigos

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

2.3 Recalcular quota por mailbox

doveadm quota recalc -u contato@domain.com

Em lote para domínio:

for m in $(ls /home/usuario/mail/domain.com); do
  doveadm quota recalc -u "$m@domain.com"
done

2.4 Sincronizar cache do painel (cPanel)

/scripts/update_db_cache

2.5 Validação pós-correção

doveadm quota get -u contato@domain.com
du -sh /home/usuario/mail/domain.com/contato/

Critério de aceite: valores convergentes e ausência de erro de quota na UI/MTA.

3) Falha SMTPUTF8: por que ocorre

Erro típico:

SMTPUTF8 used when not advertised

Causa:

3.1 Encontrar ocorrências na fila/log

grep -i "smtputf8" /var/log/exim_mainlog | tail -n 200
exim -bp | head -n 50

4) Ajuste no Exim para compatibilidade operacional

No WHM (Exim Configuration Manager > Advanced Editor), revisar smtputf8_advertise_hosts.

Quando o ambiente exige compatibilidade máxima com destinos legados, manter essa diretiva vazia é uma estratégia válida.

Após ajuste:

exim -bV | head -n 40
systemctl restart exim

4.1 Limpeza de fila afetada por tentativas antigas

exim -bp | grep -i "smtputf8" | awk '{print $3}' | xargs -r exim -Mrm

Se quiser reinsistir entregas antes de remover:

exim -qff

5) Auditoria de impacto pós-migração (admin users em WordPress)

Como parte do saneamento do ambiente migrado, rodei auditoria de contas admin em massa para eliminar risco de credenciais antigas indevidas.

#!/bin/bash

OUTPUT="relatorio_admins.csv"
echo "Dominio,User,Email,Role" > "$OUTPUT"

for user in $(ls /var/cpanel/users/); do
  PUBLIC_HTML="/home/$user/public_html"

  if [ -d "$PUBLIC_HTML" ] && [ -f "$PUBLIC_HTML/wp-config.php" ]; then
    DOMINIO=$(grep "^DNS=" /var/cpanel/users/"$user" | cut -d= -f2)
    sudo -u "$user" -i -- \
      wp user list --role=administrator --format=csv --path="$PUBLIC_HTML" \
      >> "$OUTPUT"
  fi
done

6) Checklist final de validação

  1. du coerente com doveadm quota get.
  2. sem erro de quota no painel.
  3. sem SMTPUTF8 used when not advertised em novos envios.
  4. fila Exim sem acumular mensagens pelo mesmo motivo.
  5. envio externo para domínios legados funcionando.

Quota e SMTPUTF8 são problemas diferentes, mas em migração costumam aparecer juntos. Corrigindo índice Maildir, recalculando Dovecot e ajustando anúncio do Exim, o serviço volta a operar com estabilidade.

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.