📌 10 de Abril, 2016
Dovecot: Apagar Email Antigo
Informática · ISP / Redes · Linux
Durante a manutenção de um servidor de email Linux (Dovecot + Postfix) perguntaram-me se poderia apagar todo o email com mais de dois anos. Neste guia explico como o fazer recorrendo à ferramenta de gestão do Dovecot.
A sintaxe da ferramenta doveadm
para esta tarefa é:
doveadm expunge -u [email-do-utilizador] mailbox [pasta-imap] SENTBEFORE [data]
Pastas e Separador IMAP
Antes de apagar email precisamos de saber três coisas: se o servidor usa algum prefixo do IMAP (uma pasta pai onde estão todas as outras) e qual é, que pastas existem e qual o separador hierárquico. Mais informação aqui. Descobrimos listando as pastas de um utilizador (ex. test-user@server.dev
):
user@xpto:~# doveadm mailbox list -u test-user@server.dev INBOX INBOX.Faturas INBOX.Drafts INBOX.Archive INBOX.Trash INBOX.Sent
Cada linha da resposta é uma pasta com o caminho completo, temos várias pastas Faturas
, Drafts
, Archive
, Trash
e Sent
. O INBOX
é, neste caso, o prefixo. O separador hierárquico é um ponto .
.
Para apagar todo o email anterior a 1 de Janeiro de 2014
do utilizador test-user@server.dev
nas pastas INBOX
, Send
e Trash
, executamos:
doveadm expunge -u test-user@server.dev mailbox INBOX SENTBEFORE 1-Jan-2014 doveadm expunge -u test-user@server.dev mailbox INBOX.Sent SENTBEFORE 1-Jan-2014 doveadm expunge -u test-user@server.dev mailbox INBOX.Trash SENTBEFORE 1-Jan-2014
Por fim devemos sempre limpar a storage do utilizador com:
doveadm purge -u test-user@server.dev
E para todos os utilizadores?
Para apagar todo o email antigo de todos os utilizadores substituímos -u test-user@server.dev
por -A
:
doveadm expunge -A mailbox INBOX SENTBEFORE 1-Jan-2014 doveadm expunge -A mailbox INBOX.Sent SENTBEFORE 1-Jan-2014 doveadm expunge -A mailbox INBOX.Trash SENTBEFORE 1-Jan-2014 doveadm purge -A
E para todas as pastas?
doveadm expunge -u test-user@server.dev mailbox '*' SENTBEFORE 1-Jan-2014 doveadm purge -u test-user@server.dev
Claro que isto é desaconselhado porque muitos utilizadores têm pastas especiais para emails antigos importantes.
E todos os utilizadores e todas as pastas?
doveadm expunge -A mailbox '*' SENTBEFORE 1-Jan-2014 doveadm purge -A
Servidores WHM/cPanel
Em servidores WHM/cPanel os comandos apagam os emails mas não atualiza as estatísticas da dimensão da pasta maildir
. Corrigimos com:
/scripts/generate_maildirsize --allaccounts --confirm --verbose
Que irá recalcular o tamanho das pastas de email para todos os utilizadores.