Corrigindo itens "sujos" do KMail

Este problema está diretamente relacionado ao bug #436550 do Akonadi, que foi relatado em abril de 2021. Ele resulta dos itens "sujos" ocasionalmente encontrados pelo akonadictl fsck.

~ $ akonadictl fsck 2
>&1 | grep ^Found
Found 5 external files.
Found 5 external parts.
Found no unreferenced external files.
Found 0 parts to be moved to external files
Found 0 parts to be moved to database
Found 6 collections without RID.
Found 0 items without RID.
Found 750 dirty items.

O indicador "sujo" em um item na tabela pimitemtable (uma das tabelas no banco de dados Akonadi) é usado para controlar certos aspectos do processamento assíncrono. Ele é definido como verdadeiro quando há operações pendentes para uma determinada mensagem de e-mail. Na maioria das vezes, o indicador "sujo" é limpo um ou dois segundos depois, quando a operação pendente é concluída.

Ocasionalmente, por razões não totalmente claras, o indicador "sujo" pode ser definido em dezenas ou até centenas de mensagens de uma só vez, como ilustrado acima. Quando isso acontece, o mecanismo de limpeza automática trava e não consegue se reparar automaticamente. A principal razão para um item "sujo" nessa circunstância é que o campo "remoteid" não está definido corretamente, impossibilitando a recuperação de uma mensagem "suja" no KMail. A mensagem ainda existe no disco. Mas o KMail não consegue encontrá-la.

Deve haver uma maneira melhor de corrigir esse problema. Se você pensar em uma maneira melhor, por favor, informe os autores para que esta documentação possa ser aprimorada. O procedimento a seguir corrigirá pelo menos os erros do banco de dados. Mas ele exige bastante trabalho.

  1. Saia do KMail e pare o servidor Akonadi com um comando de terminal: akonadictl stop .

  2. Faça uma cópia de segurança de todas as suas mensagens de e-mail. Você pode usar o Exportador de dados PIM para isso. Ou você pode usar o Ark para criar um arquivo compactado ou o Dolphin para fazer uma segunda cópia de ~/.local/share/local-mail/ em outro local do seu disco rígido. Se você for aventureiro, pode até renomear o diretório das suas pastas locais para algo como local-mail-save. Mas é mais seguro garantir que você tenha uma cópia de segurança das suas mensagens antes de prosseguir.

  3. Você também deve fazer uma cópia de segurança de todos os filtros que criou e certificar-se de que sabe como restaurar quaisquer entradas personalizadas nas pastas Enviados, Rascunhos ou Modelos associadas às suas identidades do KMail. A próxima etapa removerá todas as suas pastas de e-mail personalizadas e você precisará corrigir alguns problemas depois que o Akonadi reconstruir suas tabelas de banco de dados.

  4. Agora, exclua todas as pastas dentro do diretório local-mail, ou renomeie esse diretório para algo como local-mail-save. Em seguida, inicie o programa KMail. Isso forçará o Akonadi a apagar todas as entradas da tabela do banco de dados associadas às mensagens de e-mail. Você verá os nomes das suas pastas antigas brevemente, mas eles desaparecerão quando o Akonadi terminar de excluir todos os itens "sujos" (e todos os limpos também).

  5. Saia do KMail e pare o servidor Akonadi conforme explicado na etapa 1, então restaure a cópia de backup de suas mensagens (criada na etapa 2) para a pasta ~/.local/share/local-mail/.

  6. Reinicie o KMail e force o Akonadi a ressincronizar o banco de dados. A maneira mais fácil de fazer isso é ArquivoVerificar e-mail (Ctrl+L). O Akonadi sincroniza automaticamente todas as pastas ao buscar e-mails. Isso levará alguns minutos para ser concluído, dependendo da quantidade de mensagens salvas em suas pastas do KMail. Mas, ao término do processo, todos os itens "sujos" terão desaparecido.

  7. Por fim, você precisará restaurar as regras de filtro de e-mail salvas na etapa 3 e verificar se todos os itens de pastas personalizadas (Pasta de enviados, etc.) para suas identidades estão configurados da maneira desejada. Você também precisará redefinir todas as propriedades de pastas personalizadas que configurou e provavelmente terá várias notificações falsas de "Mensagens não lidas" para lidar. Mas suas tabelas de banco de dados do Akonadi estarão limpas e funcionando perfeitamente novamente!