Como converter arquivos de e-mail mbox, como encontrados no diretório Thunderbird, para o Maildir?

0

Várias reflexões sobre este tópico podem ser encontradas na Internet. Nenhum (que é facilmente encontrado) responde à pergunta, especialmente para aqueles que não estão familiarizados com os dois formatos em detalhes.

O artigo relevante no wiki da Mozilla anota em seu primeiro parágrafo: “A implementação de maildir do Thunderbird permite um único nome de arquivo único por email (EML) NO ENTANTO, note que este não é um maildir completo no sentido de que a maioria das pessoas, particularmente usuários de linux ou administradores de email, saiba como maildir. ”Então, presumivelmente, o conversor de ações do Thunderbird não oferece a solução adequada.

O Dovecot recomenda dsync , mas é presumivelmente desenvolvido especificamente para o dovecot. Eu quero sair usando o Thunderbird, mas eu não pretendo usar o Dovecot agora, com seu wiki mencionando alguns “Maildir ++”. Dovecot também recomenda (ibid.) mb2md.pl com algumas amostras de Dovecot. mb2md parece ser o recomendado em geral.

No entanto, existem duas implementações de mb2md : um script sh + Python e um script Perl . A primeira é a implementação original, e sua página diz literalmente o seguinte sobre a versão Perl: “se você encontrar esse problema específico [aparentemente absurdamente trivial relacionado ao ambiente] com o meu script, experimente [a implementação Perl]”, e nada mais. Não está claro se esses dois scripts operam da mesma maneira ou até mesmo suportam a mesma sintaxe. (Breve inspeção sugere que não; por que usar o mesmo nome, então?) Versão do Python é declaradamente de 2006, que faz com que seja mais de 10 anos a partir de hoje. Também acontece que a distribuição que eu uso (Gentoo) não parece ter mb2md em seu repositório. Eu poderia instalar o Dovecot e usar seu conversor, mas isso não parece certo.

Mesmo que o assunto possa ser trivial (mbox não é nada além de concatenação de eml's, certo?), tudo isso é alarmante: para um formato de mais de 10 anos (Maildir), amplamente considerado superior ao mbox, aparentemente não é um mecanismo de migração padrão. Eu não quero converter cegamente, apenas para descobrir mais tarde que alguns dados foram perdidos, como o mb2md page avisa, ou que eu não posso adicionar mais mensagens para o novo armazenamento Maildir sem perder consistência, como mencionado em < href="http://isync.sourceforge.net/mbsync.html"> página do manual do mbsync (procure a frase “esquema nativo é mais rápido”).

Para o registro, pretendo usar o mbsync com o novo armazenamento do Maildir. Espero que a resposta não dependa disso.

  1. O conversor sh + Python mb2md com 10 anos de idade funcionará tão bem com o mboxen moderno quanto com o de 2006?
  2. O diretório do Thunderbird contém os subdiretórios Mail , ImapMail , News e Feeds , que, por sua vez, contêm outros arquivos. Os arquivos INBOX são os únicos arquivos mbox ou posso perder alguns outros?
  3. Devo converter cada arquivo mbox com mb2md separadamente e preciso conectá-los manualmente ou agrupá-los no armazenamento do Maildir?
  4. No passado, o Thunderbird oferecia pastas de "compactação", o que quer que isso significasse, e o usuário disse que sim. Isso afeta o processo de conversão?
  5. O que devo levar em conta ao escolher entre diferentes mb2md versões? Suponha, por uma questão de completude, que as tags, criptografia PGP e assinaturas em vários formulários foram muito utilizadas no Thunderbird.
por Akater 19.01.2017 / 20:38

3 respostas

0

A resposta do wbob é útil e detalhada. No entanto, eu tinha usado uma solução diferente antes do wbob sugerir a conversão dovecot. Além disso, acabei com pouco armazenamento. Eu tenho que aceitar minha própria resposta porque é isso que se acostumou depois de tudo.

Eu usei um script Python simples usando a biblioteca mailbox . (Graças ao canal notmuch IRC no freenode.)

#!/usr/bin/python3
import mailbox
import sys
import os
mbox_filename = sys.argv[1]
maildir_root_dir_name = sys.argv[2]
mbox = mailbox.mbox(mbox_filename, create=False)
mailbox_name = os.path.basename(mbox_filename)
maildir_dir_name = "/".join((maildir_root_dir_name, mailbox_name))
os.mkdir(maildir_dir_name, mode=0o750)
mdir = mailbox.Maildir(maildir_dir_name, create=True)
os.mkdir("/".join((maildir_dir_name, "cur")), mode=0o750)
os.mkdir("/".join((maildir_dir_name, "new")), mode=0o750)
os.mkdir("/".join((maildir_dir_name, "tmp")), mode=0o750)
count = 0
for x in mbox:
    print(x.get_from())
    count += 1
    if count % 1000 == 0:
        print(count)
    mdir.add(x)

Algumas mensagens foram quebradas; o script parou com erro e um número de linha, então eu tive que usar o emacs (com vlf para abrir arquivos grandes, acredito) para corrigir as mensagens problemáticas no arquivo mbox.

A questão merece uma resposta mais elaborada, já que é bastante problemático realizar a tarefa para a maioria dos usuários. Espero que eu expanda isso no futuro.

    
por 25.07.2018 / 00:54
1

Para os usuários do Thunderbird, a versão 60 trouxe o mbox bidirecional experimental para o suporte de conversão do Maildir. Consulte o meta ticket para questões em aberto. Pessoalmente, posso recomendar o método dsync dovecot.

Tendo recentemente convertido pastas largish do Thunderbird para o Maildir e avaliado seus links mencionados, não posso recomendar nenhum dos scripts auxiliares. Houve um script 'From:' split one perdido e a contagem de mensagens pré / pós-migração não coincidiu, outros problemas foram codificação de texto ou timestamps com outros scripts de conversão encontrados no github.

Em vez disso, dsync deu resultados rápidos (1-2 min em 25k mensagens) e consistentes, consulte o Migration / MailFormat Página do Wiki: dsync -Dv mirror mbox:~/.thunderbird/<profile/popMail/Account>:INBOX=Inbox . Conforme observado, configure o mail_location=maildir:~/Maildir de antemão. Comece com uma pasta vazia e depois faça a pasta de contas para o Thunderbird com Maildir com alguma limpeza manual. {cur, new, tmp} no basedir tem que ir para "Inbox" e a pasta .dot-prefix pode ser removida. Ter um segundo perfil habilitado para o Maildir dará instruções sobre o que o Thunderbird espera.

    
por 24.02.2018 / 23:05
0

Embora esta seja uma questão de programação, a resposta prática para obter dados exportados do Thunderbird é usar o addon alternativo "alternative import / export" e você pode exportar para o formato eml entre outros

    
por 26.09.2018 / 19:14

Tags