Desenvolvimento e bases de dados
Eliminar emails antigos automaticamente no cPanel
O correio costuma ser o que mais espaço acumula num alojamento. Para que não cresça sem controlo, pode apagar automaticamente os emails mais antigos do que um determinado número de dias, por exemplo os que têm mais de 60 dias.
Poderia fazê-lo com uma regra no Outlook ou no Thunderbird, mas isso não serve se o correio for lido no telemóvel ou no webmail, e numa empresa com muitas contas não convém depender de que cada utilizador configure bem as suas regras. Com uma tarefa cron no cPanel, é você quem controla, para todas as contas que quiser.
Os emails são apagados definitivamente: não passam pelo Lixo. Se alguma conta tiver correio que deva ser conservado, guarde-o antes (veja descarregar o correio para o computador) ou deixe-a de fora.
Testar primeiro manualmente
O cPanel tem uma ferramenta para fazer a mesma limpeza uma única vez: em Email > Email Disk Usage (Utilização do disco de email), escolha a conta, a pasta e uma das opções de eliminação, como as mensagens com mais de um ano. Utilize-a se só precisar de libertar espaço pontualmente.
Para automatizar, usamos o mesmo mecanismo a partir da API do cPanel, com o comando uapi. Precisa de acesso SSH para o testar, ou do terminal do cPanel.
Apagar os emails antigos de uma conta
Este comando apaga da caixa de entrada de usuario@ejemplo.com os emails recebidos há mais de 60 dias:
uapi Mailboxes expunge_mailbox_messages account='usuario@ejemplo.com' mailbox='INBOX' query='savedbefore 60d'
-
account: o endereço de email.
-
mailbox: a pasta.
INBOXé a caixa de entrada; as restantes chamam-seINBOX.Sent(Enviados),INBOX.Trash(Lixo),INBOX.spam… Para ver os nomes exatos de uma conta:uapi Mailboxes get_mailbox_status_list account='usuario@ejemplo.com' -
query: que emails são apagados.
savedbefore 60dsão os que chegaram ao servidor há mais de 60 dias. Mude o número para os dias que quer conservar; também aceita semanas, comosavedbefore 8w.
Se a resposta incluir status: 1, a operação foi feita. Confirme no webmail que só desapareceram os emails antigos.
Se também quiser limpar os Enviados ou o Lixo, repita o comando com a respetiva pasta.
Todas as contas de um domínio ou de todo o alojamento
Crie um script que percorra as contas. No gestor de ficheiros ou por SSH, crie o ficheiro /home/usuario_cpanel/purgar-correo.sh (fora de public_html) com este conteúdo:
#!/bin/bash # Dias de correio que são conservados DIAS=60 # Domínio a limpar. Deixe vazio ("") para todas as contas do alojamento DOMINIO="ejemplo.com" for cuenta in $(uapi Email list_pops | awk '/email:/ {print $2}' | grep "@${DOMINIO}"); do uapi Mailboxes expunge_mailbox_messages account="$cuenta" mailbox='INBOX' query="savedbefore ${DIAS}d" >/dev/null done
Substitua usuario_cpanel pelo seu utilizador do cPanel, e DIAS e DOMINIO pelos seus valores. Se alguma conta não deve ser tocada, exclua-a acrescentando | grep -v 'jefe@ejemplo.com' no fim do grep da linha for.
Execute-o uma vez manualmente para confirmar que faz o que espera:
bash /home/usuario_cpanel/purgar-correo.sh
Programar a execução diária
Por fim, crie uma tarefa cron no cPanel que o execute uma vez por dia, de madrugada:
- Common Settings (Definições comuns): Once Per Day (
0 0 * * *). É melhor mudar o minuto e a hora para algo como17 4 * * *, para não coincidir com outras tarefas. - Command (Comando):
/bin/bash /home/usuario_cpanel/purgar-correo.sh >/dev/null 2>&1
A partir desse momento, todos os dias serão apagados os emails que ultrapassem a antiguidade que definiu. O espaço libertado aparece no cPanel quando o cálculo da utilização de disco é atualizado, o que pode demorar algumas horas.
Se não apagar nada
- A conta tem de existir exatamente com esse nome: confirme-o com
uapi Email list_pops. - Reveja o nome da pasta com
get_mailbox_status_list. - Se o correio foi importado de outro servidor (por exemplo, com o imapsync), a data de «guardado» é a da importação, não a do email original. Nesse caso, use
before 60d(data de receção, que o imapsync conserva) ousentbefore 60d(data escrita na própria mensagem).
Também lhe pode ser útil
- Processos persistentes: workers de filas, Horizon e comandos em execução contínua Mantenha em execução workers de filas do Laravel, o Horizon, um Redis persistente ou um comando próp...
- API do cPanel (UAPI): automatizar correio, FTP e redirecionamentos a partir de SSH, cURL ou PHP Use a API do cPanel com o comando uapi por SSH ou com um token a partir de outro servidor. Exemplos...
- Binários e ferramentas disponíveis: FFmpeg, Tesseract, ImageMagick, cURL e mais Consulte os binários disponíveis para vídeo, imagens, PDF, OCR, redes, DNS, controlo de versões e ou...
- Configurar URLs amigáveis e regras de mod_rewrite Ative o mod_rewrite a partir do .htaccess e aplique as regras que cada aplicação fornece para reescr...
Algo não bate certo ou mudou? Diga-nos e revemos.