segunda-feira, 11 de agosto de 2008

Recuperando mensagem apagada no thunderbird misteriosamente

Na verdade o que vou mostrar aqui é um caso um tanto quando específico meu, mas que traz algumas coisas que podem ajudar em outros cenários.

Um dia desses estava eu fazendo minhas pesquisas para implementação em um novo servidor de email, quando me falam que alguns usuários estavam perdendo suas mensagem armazenadas no Thunderbird, como trabalho com o armazenamentos das mensagens em rede, lá vem aquelas preocupações...será um vírus?, será que os arquivos estão se corrompendo na rede?, ou será que apagaram as mensagens e nem perceberam, ou ainda um dos vários problemas que são causados por algum código obscuro do windows e não sabemos...

Uma Curiosidade é que era de pastas específicas e não todas (hum, específicas é?).

Enfim, como qualquer um com um pouco de sorte, vamos recuperar as mensagens dos backups para fins imediatos. Após recuperadas as mesmas chega a hora de descobrimos o porque desse extermínio de mensagens.

Antes disso, um bom teste para agilizar as recuperações de mensagens, o Thunderbird trabalha com as caixas em formato mbox, ou seja, um arquivo contem todas as mensagens, então se olhar no seu diretório de armazenamento verá alguns arquivo entre eles o Inbox que é a caixa de entrada do thunderbird, trabalhando com o linux podemos usar um leitor/editor de texto para vermos seu conteúdo, e lá estarão as mensagens.
Muito bom mas e o que isso tem haver com as mensagens sumidas? calma...
Com as mensagem sumidas dos usuários vamos ver o Inbox de cada um deles, e observando tamanho e conteúdo vemos que as mensagens não estavam realmente lá... Hum, sumiram de vez... mas elas não sumiriam assim, a menos que alguns passos sejam efetuados...falarei disso mais adiante...
Então a principio o arquivo inbox criado com o sumiço do antigo (é caso não encontre o arquivo o thunderbird cria um novo em branco) com as mensagens que chegaram e o antigo com as mensagens antigas não podem ocupar o mesmo lugar, para isso ou se renomeia o arquivo inbox com outro nome e se copia as mensagens através do próprio thunderbird...ou o melhor caso com nosso amigo linux, utilizasse o comando "cat" para concatenar o conteúdo do velho arquivo com o novo.
ficando algo como:

$ cat Inbox_do_backup >> Inbox

onde o Inbox_do_backup é o arquivo que temos de backup antes de sumirem e Inbox é o novo que foi criado pelo thunderbird.
Claro que antes de qualquer coisa do tipo existem 3 coisas a se fazer:

1 - backup do arquivo Inbox que foi criado;
2 - ter certeza que fez o backup do arquivo Inbox criado e ter a cópia segura do backup anterior;
3 - por fim ter o thunderbird fechado, afinal ja nos basta algumas mensagens sumidas.

Bom, feito isso temos as mensagens restauradas e tudo está bem... mas o que causou isso afinal...
O que temos para acontecer isso são na verdade 2 fatores distintos, em um deles temos a nossa suspeita de virus, na verdade não exatamente um virus, mas um email com link suspeito que o antivírus do servidor identificou e como tratamento para esses casos mandou o arquivo para quarentena. Quarentena? ótimo mas e o resto das mensagens? bom aí está um pequeno contratempo do thunderbird, ele trabalha com mbox (mailbox) e isso faz com que todas as mensagens estejam no mesmo arquivo, o que faz com que o antivírus mova o arquivo para o local destino, causando a criação de um arquivo novo pelo thunderbird no local de armazenamento das mensagens.

Bom, temos a causa do sumiço, mas então podemos voltar as mensagens do local de quarentena com o comando anterior e assim deletamos a mensagem problemática...
Aí entra o segundo fator...
O thunderbird trabalha de uma maneira diferente com suas mensagens, no caso, ele não elimina as mensagens propriamente como queremos, o que ele faz a principio é enviar uma copia da mensagem que foi selecionada para exclusão para a pasta Trash (que também corresponde a um arquivo) e na pasta Inbox sumir com ela alterando uma parâmetro de cabeçalho incluso no email quando recebido. Sendo assim mesmo que você não visualize a mensagem na sua pasta, o email está lá (ele também continuará lá mesmo deletando a mensagem com shift+del que teoricamente apagaria a mensagem de vez).
Sendo assim nós retornaríamos as mensagem, e pouco tempo depois o antivírus se encarregaria de sumir com o arquivo de novo...afinal a mensagem esta lá... (se editar o arquivo Inbox e procurar pela mensagem você a achará lá, altere o campo "X-Mozilla-Status" que contém uma numeração para um numero como "0003" e quando olhar pelo thunderbird verá a mensagem lá novamente). Muito bem então ele não apaga as mensagens o que fazer?, apagar ela via editor de texto editando o arquivo? não, isso é muito trabalhoso, pegue algum email com anexo e verá a quantidade de linhas que ele pode gerar...
a resposta desse problema é tão fácil quanto nosso comando "cat", assim que recuperarmos as mensagens, exclua o email suspeito de causar todo esse transtorno (utilize shift+del para não termos que apagar da lixeira também), depois disso pelo próprio thunderbird vá no menu, arquivo e selecione compactar pastas. Esse compactar pastas não vai compactar exatamente seus arquivos, mas sim remover as mensagens que foram excluídas e se mantém ocultas dentro dos seus arquivos de email, eliminando assim nosso problema de virus em um arquivo que não aparece.

O texto aqui ficou grande, mas fazer isso é bem simples, assim que fizer vai ver.
Como se trata do meu primeiro post em um blog próprio, não sei se estão bom ou não, conforme for aprendendo a lidar com blogs e as dicas que forem deixando vou melhorando isso aqui. ^^

Fica aí uma dica para a equipe do thunderbird quem sabe disponibilizar uma forma de fazer o mesmo trabalhar com maildir, assim cada mensagem é um arquivo separado e não teríamos esses problemas se mensagem sumindo.

Um comentário:

Unknown disse...

Olá,

Tenho um problema pareceido com este, onde existiam as mensagens da pasta "RH" e agora só restaram 3. Toda mensagem selecionada, não era mostrado o conteúdo na aprte inferiro como acontece com as outras pastas.
Fui ao diretorio raiz e a pasta "RH" sumiu. Existe apenas a pasta "RH.msf" que contém a "estrutura da pasta".
Poderia me dar uam luz?