Esgotamento de disco por e-mails antigos é um incidente recorrente em servidores de hospedagem. A causa nem sempre é volume novo: muitas vezes a automação de limpeza parou silenciosamente.
No caso analisado, scripts de manutenção foram removidos ou movidos em migrações anteriores. O resultado foi o acúmulo contínuo de arquivos em lixeiras, além de logs descontrolados e contas específicas atingindo limites físicos rapidamente. A correção imediata foi restaurar rotinas de limpeza por cron no servidor e implantar políticas proativas.
1) Diagnóstico de espaço em disco e cota#
Antes de iniciar qualquer expurgo de e-mails, o administrador deve mapear com precisão onde estão localizados os gargalos de armazenamento da partição do sistema.
1.1 verificação de espaço geral#
Para auditar o consumo de blocos no ponto de montagem principal que abriga os arquivos de e-mail dos usuários em home:
df -h /home
Identifique as 10 contas de e-mail mais volumosas no filesystem:
du -sh /home/*/mail/ | sort -rh | head -10
Para listar as contas que já consomem volumes superiores a 1GB:
du -sh /home/*/mail/ | awk '$1 ~ /G/ {print}'
1.2 verificação de quotas do Dovecot e cPanel#
Para auditar se as limitações lógicas estão sendo enforcadas corretamente em nível de sistema operacional e servidor de correio:
- Checar Quota Ativa do Usuário:
doveadm quota get -u [email protected]
- Consultar Limites Físicos de Quota no Filesystem:
repquota -a | grep usuario
- Ajuste de Quotas via GUI ou CLI do cPanel:
As quotas podem ser redefinidas individualmente por domínio no WHM acessando WHM > Modify an Account > Quota para evitar que um único usuário monopolize os blocos da partição.
1.3 verificação de outros focos de consumo no disco#
Não restrinja o diagnóstico apenas aos diretórios do Maildir. Verifique resíduos e arquivos órfãos grandes acumulados no servidor:
- Auditoria de Logs Volumosos em
log:
find /var/log -name "*.log" -size +100M -exec ls -lh {} \;
- Limpeza de Arquivos Temporários Antigos em
tmp:
find /tmp -type f -mtime +7 -exec rm -f {} \;
- Localização de Backups Antigos não Rotacionados:
find /backup -name "*.tar.gz" -mtime +30 -exec rm -f {} \;
2) Triagem e verificação da saúde do Dovecot e cPanel#
Para garantir que os comandos do validador de correio funcionem, certifique-se de que os daemons de identidade e os utilitários do painel estejam operando de forma estável.
2.1 verificação de status e versão do Dovecot#
Para auditar a saúde do Dovecot via SSH:
# Consultar status do daemon
systemctl status dovecot
# Verificar a versão instalada
doveadm --version
# Exibir configurações ativas (excluindo os padrões)
doveconf -n | head -20
# Filtrar o log de correio por erros do Dovecot
tail -50 /var/log/maillog | grep -iE "error|dovecot"
2.2 verificação de versão e ferramentas do cPanel#
Valide a consistência das ferramentas administrativas do painel:
# Consultar versão ativa do painel cPanel
cat /usr/local/cpanel/version
# Verificar status de atualizações pendentes do sistema
/scripts/upcp --status
Nota de uso: Garanta que a ferramenta visual de gerenciamento esteja ativa acessando WHM > Email > Email Disk Usage na interface web do administrador.
3) Protocolo de segurança e backups preventivos#
Qualquer script de limpeza em lote ou expurgo de base de mensagens deve ser precedido por uma rotina estrita de segurança para evitar exclusão acidental de correspondências comerciais críticas.
3.1 backup preventivo de contas de e-mail#
Execute o backup físico recursivo compactado de diretórios de e-mail das contas de usuários do sistema antes de aplicar as queries:
- Backup Geral de Todas as Contas do Diretório Mail:
for user in $(ls /home/); do
if [ -d "/home/$user/mail" ]; then
tar czf /root/mail-backup-$user-$(date +%Y%m%d).tar.gz /home/$user/mail/
fi
done
- Backup Cirúrgico Via doveadm para Conta Específica:
doveadm backup -u [email protected] -f maildir:/root/backup/
4) Limpeza nativa no cPanel com Dovecot queries#
O Email Disk Usage do cPanel aceita consultas customizadas baseadas na sintaxe nativa de busca do Dovecot para purgar mensagens com granularidade.
4.1 limpeza por tempo#
savedbefore 30d
Remove mensagens cujo timestamp de gravação no diretório (save date) é anterior a 30 dias.
4.2 limpeza por remetente#
from "[email protected]"
Filtragem cirúrgica para purgar alertas redundantes de sistemas de monitoramento e logs automáticos.
4.3 lixeira e spam com filtro inteligente#
Na pasta Trash (Lixeira) ou Junk (Spam), use:
all
Para apagar incondicionalmente todo o conteúdo da pasta selecionada. Ou aplique filtros combinados de conservação:
seen savedbefore 15d
Apaga apenas correspondências que já foram visualizadas (seen) e que estão retidas há mais de 15 dias, evitando o expurgo acidental de correspondências descartadas recentemente.
5) Limpeza avançada e automatizada#
5.1 CLI avançada via doveadm#
As operações aplicadas no painel gráfico podem ser orquestradas remotamente em lote por meio da linha de comando:
doveadm purge: Consolida o espaço físico em disco removendo mensagens já marcadas com a flag de deleção.doveadm expunge: Expurgará mensagens combinando queries específicas:
doveadm expunge -u [email protected] mailbox INBOX savedbefore 30d
5.2 automação via cron job#
Para automatizar a limpeza preventiva de mensagens antigas em lote de todas as contas do servidor cPanel, crie o script central em cleanup-emails.sh:
cat > /usr/local/bin/cleanup-emails.sh << 'EOF'
#!/bin/bash
# Localizar e expurgar mensagens com mais de 30 dias de todas as contas em lote
doveadm -A search savedbefore 30d | while read user mailbox; do
doveadm expunge -u "$user" mailbox "$mailbox" savedbefore 30d
done
EOF
chmod +x /usr/local/bin/cleanup-emails.sh
Agende no cron do root para executar diariamente às 3:00 da manhã:
echo "0 3 * * * /usr/local/bin/cleanup-emails.sh" | crontab -
Confirme o agendamento ativo:
crontab -l
5.3 validação e pós-limpeza#
Após a execução programática ou manual dos comandos de expurgo, valide se o armazenamento foi devidamente recuperado:
- Comparar espaço em disco antes/depois:
df -h /home
- Reavaliar tamanho dos diretórios físicos:
du -sh /home/*/mail/
- Contar mensagens remanescentes da query de expurgo:
doveadm search -u [email protected] INBOX "savedbefore 30d" | wc -l
- Validar logs de transações em
maillog:
tail -50 /var/log/maillog | grep -iE "error|fail"
5.4 monitoramento proativo#
Para alertar preventivamente a equipe de suporte sobre contas de e-mail que estão expandindo rapidamente antes de atingirem o limite da partição, instancie o script check-email-disk.sh:
cat > /usr/local/bin/check-email-disk.sh << 'EOF'
#!/bin/bash
# Contar quantas contas possuem Maildirs maiores que 1GB
USAGE=$(du -sh /home/*/mail/ 2>/dev/null | awk '$1 ~ /G/ {count++} END {print count+0}')
THRESHOLD=5
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "ALERTA: Detectadas $USAGE contas de e-mail consumindo mais de 1GB no cPanel." | \
mail -s "Email Disk Alert" [email protected]
fi
EOF
chmod +x /usr/local/bin/check-email-disk.sh
Agende a varredura preventiva diária às 6:00 da manhã:
echo "0 6 * * * /usr/local/bin/check-email-disk.sh" | crontab -
6) Governança: políticas de retenção de e-mails#
A automação de limpeza deve seguir regras e políticas de retenção corporativas acordadas previamente com o setor jurídico e de compliance:
Matriz de retenção recomendada por tipo de caixa#
| Departamento / Finalidade | Tempo de Retenção (Inbox) | Tempo de Retenção (Trash) | Tempo de Retenção (Spam) | Frequência de Execução |
|---|---|---|---|---|
| Suporte Técnico (Tickets) | 90 dias | 30 dias | 7 dias | Diária (Spam) / Semanal (Trash) |
| Financeiro e Faturamento | 365 dias | 90 dias | 30 dias | Semanal (Spam) / Mensal (Trash) |
| Geral / Caixas Pessoais | 60 dias | 15 dias | 7 dias | Diária (Spam) / Semanal (Trash) |
7) Checklist de limpeza e matriz de riscos#
Checklist operacional de limpeza de e-mails#
- [ ] Fase 1: Diagnóstico Inicial
- [ ] Verificar espaço livre da partição em
/home. - [ ] Mapear as contas Maildir com maior consumo do servidor.
- [ ] Validar status, versão e log do Dovecot.
- [ ] Verificar a integridade das cotas ativas no cPanel.
- [ ] Fase 2: Medidas de Segurança
- [ ] Realizar backup completo (
tarcompactado) dos diretórios Mail das contas críticas. - [ ] Testar a leitura e descompactação do backup gerado.
- [ ] Fase 3: Execução de Expurgo
- [ ] Limpar caixas Spam antigas (
savedbefore 30d). - [ ] Limpar lixeiras de descarte (
Trashcom filtro de idade15d). - [ ] Excluir e-mails por remetente ou anexos gigantes (
larger 10M). - [ ] Fase 4: Validação Sintática
- [ ] Auditar espaço livre pós-limpeza.
- [ ] Validar se as contas afetadas enviam e recebem e-mails perfeitamente.
- [ ] Verificar logs por erros de expurgo no Dovecot.
- [ ] Fase 5: Automação e Monitoramento
- [ ] Instalar o script
cleanup-emails.shno crontab. - [ ] Ativar alerta preventivo de disco em
check-email-disk.sh.
Matriz de riscos de armazenamento de e-mails#
| Ameaça / Risco de Operação | Severidade | Impacto Estimado | Ação de Mitigação Técnica |
|---|---|---|---|
| Exclusão de E-mails Válidos | Crítica | Perda permanente de correspondências corporativas críticas. | Backups preventivos físicos antes de rodar as queries e aplicação de testes de visualização prévia. |
| Esgotamento de Disco (Full) | Alta | Queda total de todos os serviços de correio do cPanel (MTA, IMAP, POP3). | Monitoramento proativo via cron diário, cotas de disco e purga automatizada. |
| Erros de Permissões Maildir | Média | Usuários não conseguem apagar e-mails via Webmail/Outlook. | Varredura com chown recursivo para usuario:mail pós-rsync de backups. |
| Travamento do Dovecot | Média | Interrupção imediata da autenticação e sincronização IMAP. | Validação prévia de sintaxe do doveconf -n antes do restart e logs auditados. |
Gerenciar armazenamento de e-mail no cPanel exige método. Ao aliar o diagnóstico estruturado, backups isolados, execução programática de queries do Dovecot e regras claras de governança, você blinda a infraestrutura contra falhas críticas de indisponibilidade por disco cheio.
Este artigo foi útil?
Deixe uma reação rápida para apoiar o conteúdo:
Este post está licenciado sob CC BY-NC.



Comentários
Participe da discussão abaixo.
0 comentários