Importar e-mails do cache IMAP do Claws [closed]

1

Estou tentando importar uma conta IMAP composta de muitas pastas do cache interno do Claws Mail. Infelizmente, as garras não conseguem exportar todas as pastas selecionando a conta raiz.

Ao verificar a pasta cache interna do Claws, cada mensagem é um arquivo de texto simples com o seguinte nome:

base_path/My Account/Folder ABC/1
base_path/My Account/Folder ABC/2
base_path/My Account/Folder ABC/3
base_path/My Account/Folder ABC/4

base_path/My Account/Folder DEF/1
base_path/My Account/Folder DEF/2
base_path/My Account/Folder DEF/3

base_path/My Account/Folder X/etc...

Eu tentei importar essa estrutura com um leitor de e-mail diferente, como o KMail e o Balsa, mas cada importação falhou. Eu gostaria que todos esses e-mails fossem facilmente acessados e legíveis.

Qual ferramenta no Linux eu posso usar para importar essa estrutura?

    
por calandoa 20.10.2013 / 12:04

1 resposta

2

Como é um arquivo por mensagem, contendo apenas os dados originais no formato RFC 822, é fácil converter para o layout do Maildir ++ apenas renomeando os arquivos. Depois, deve ser legível por pelo menos Balsa e Mutt, assim como a maioria dos servidores IMAP (se você pode fazer upload de arquivos diretamente).

#!/usr/bin/env bash

inputroot=~/.claws-mail/imapcache

output=~/claws.maildir

find "$inputroot/" -mindepth 2 -type d | while read -r srcdir; do
    # Maildir++ uses <dir>/.a.b.c/ for subfolder hierarchy;
    # the "INBOX" itself is just <dir>/, having <dir>/{cur,new,tmp}/, but it
    # is not used during this conversion, which puts all mail in subfolders.
    folder=${srcdir#$inputroot}
    folder=/${folder#/}
    folder=${folder//./_}
    folder=${folder//"/"/.}
    dstdir=$output/$folder
    find "$srcdir" -maxdepth 1 -type f -not -name '.*' |
    while read -r srcfile; do
        if [ ! -d "$dstdir/cur" ]; then
            echo "creating: $dstdir"
            mkdir -p "$dstdir/cur" "$dstdir/new" "$dstdir/tmp"
        fi
        # in cur/, filenames are <unique>:2,<flags> (S for "seen")
        dstname="claws.${srcfile##*/}.$(stat -c %Y "$srcfile"):2,S"
        cp -a "$srcfile" "$dstdir/cur/$dstname"
    done
done
    
por 20.10.2013 / 15:53