Dovecot: remove as caixas de entrada não utilizadas

2

Usando o Dovecot, me deparei com um problema bastante preocupante quando se trata de limpeza de caixas de entrada. Aqui está minha configuração:

  • O Dovecot armazena seus usuários / caixas de correio em um back-end do MySQL.
  • O postfix lida com transmissões de e-mail e depende do Dovecot para autenticação.
  • As caixas de entrada são armazenadas em /var/mail/domain/user .

Completamente a configuração básica. Agora imagine o seguinte cenário:

  1. Eu crio um usuário em meu banco de dados (digamos [email protected] ) e começo a enviar e receber e-mails. Sem problemas, tudo corre bem.
  2. Eu não preciso mais do meu usuário, apenas o excluo do banco de dados, sem mais usuário.

Mas aqui está o problema ... Neste momento, /var/mail/mydomain.tld/johndoe ) ainda existe. Agora imagine:

  • Aparece outro John Doe e ele quer uma caixa de entrada. Eu adiciono [email protected] ao banco de dados, ótimo, funciona!

Agora, o engraçado é que o anterior John Doe não excluiu seus e-mails antes de sair, e o novo John Doe obteve acesso ao conteúdo anterior da caixa de correio (como os endereços são os mesmos, ele recebeu o mesmo local da caixa de entrada). Vamos torcer para que John Doe número 1 não tenha credenciais, informações de cartão de crédito ou algo semelhante em sua caixa de entrada ...

Então aqui está a minha pergunta: existe uma maneira apropriada de excluir caixas de entrada ao excluir um usuário do Dovecot? No meu exemplo, eu gostaria que /var/mail/mydomain.tld/johndoe fosse excluído quando o primeiro John Doe desaparecesse ( passo 2, no reinício do serviço talvez?). Agora, eu poderia fazer isso programaticamente usando meu aplicativo frontend (um aplicativo PHP que preenche o backend do MySQL), mas isso criaria uma confusão com permissões (permitir que o usuário da web acesse caixas de correio, não, obrigado!)

    
por John WH Smith 09.03.2014 / 03:51

1 resposta

2

Em nossa configuração, usamos postgres como backend para armazenar user information. Nós definimos o account_status para DELETED no banco de dados e temos um cron que faz um backup de toda a conta e os remove do sistema de arquivos. Esse problema é discutido também nas listas de discussão do dovecot, e a solução sugerida foi usar rm

rm -rf 'doveadm user -f home $username'
    
por 09.03.2014 / 05:56

Tags