Pergunta

Estou alterando os hosts e preciso converter minhas contas do MailDIR no meu servidor antigo para o MBOX no meu novo servidor.

Alguma idéia da melhor maneira de fazer isso?

Eu achei isto:

para i em novo/* cur/*; do formail <”$ i” >> ../mbox;done

Mas eu realmente não entendo. Eu tenho um conhecimento básico do Linux e tenho acesso raiz ao meu servidor via SSH.

A maior parte da pasta Maildir tem o seguinte conteúdo:


cur
novo
TMP
Dovecot.index.log
Dovecot-uidlist
Dovecot.index
Dovecot.index.log.2
Dovecot.index.cache
Dovecot-Keywords
assinaturas


Preciso de tudo isso ou posso ignorar os arquivos dovecot?

Qualquer conselho seria muito apreciado.

C

Foi útil?

Solução

Se você tiver acesso a ambos os servidores via IMAP (ou pode organizá -lo temporariamente), considere usar uma ferramenta IMAPSYNC, por exemplo:

http://freshmeat.net/projects/imapsync/

Se isso não funcionar, você poderá ignorar os arquivos dovecot, mas tenha cuidado que provavelmente perderá informações como quais mensagens são lidas e quaisquer sinalizadores definidos nas mensagens. (O método imapsync preservaria todas essas coisas.)

Outras dicas

Se for necessário converter uma conta do MailDIR em uma conta de caixa de correio sem definir o MailServers, poderá usar a Biblioteca de Caixa de Correio do Python. Se alguém tiver uma única pasta Maildir para converter, pode -se usar este script python pequeno (10 linhas+comentários) encontrado aqui. Se alguém tiver subpasta, precisará explorar a estrutura da subpasta, que é diferente entre os dois formatos. Isso fornece o seguinte script:

#!/usr/bin/env python 
# -*- coding: utf-8 -*-
"""
Frédéric Grosshans, 19 January 2012
Nathan R. Yergler, 6 June 2010

This file does not contain sufficient creative expression to invoke
assertion of copyright. No warranty is expressed or implied; use at
your own risk.

---

Uses Python's included mailbox library to convert mail archives from
maildir [http://en.wikipedia.org/wiki/Maildir] to 
mbox [http://en.wikipedia.org/wiki/Mbox] format, icluding subfolder.

See http://docs.python.org/library/mailbox.html#mailbox.Mailbox for 
full documentation on this library.

---

To run, save as md2mb.py and run:

$ python md2mb.py [maildir_path] [mbox_filename]

[maildir_path] should be the the path to the actual maildir (containing new, 
cur, tmp, and the subfolders, which are hidden directories with names like 
.subfolde.subsubfolder.subsubsbfolder);

[mbox_filename] will be newly created, as well as a [mbox_filename].sbd the 
directory.
"""

import mailbox
import sys
import email
import os

def maildir2mailbox(maildirname, mboxfilename):
    """
    slightly adapted from maildir2mbox.py, 
    Nathan R. Yergler, 6 June 2010
    http://yergler.net/blog/2010/06/06/batteries-included-or-maildir-to-mbox-again/


    """
    # open the existing maildir and the target mbox file
    maildir = mailbox.Maildir(maildirname, email.message_from_file)
    mbox = mailbox.mbox(mboxfilename)

    # lock the mbox
    mbox.lock()

    # iterate over messages in the maildir and add to the mbox
    for msg in maildir:
        mbox.add(msg)

    # close and unlock
    mbox.close()
    maildir.close()

#Creates the main mailbox
dirname=sys.argv[-2]
mboxname=sys.argv[-1]
print(dirname +' -> ' +mboxname)
mboxdirname=mboxname+'.sbd'
maildir2mailbox(dirname,mboxname)
if not os.path.exists(mboxdirname): os.makedirs(mboxdirname)

listofdirs=[dn for dn in os.walk(dirname).next()[1] if dn not in ['new', 'cur', 'tmp']]
for curfold in listofdirs:
    curlist=[mboxname]+curfold.split('.')
    curpath=os.path.join(*[dn+'.sbd' for dn in curlist if dn])
    if not os.path.exists(curpath): os.makedirs(curpath)
    print('| ' +curfold +' -> '+curpath[:-4])
    maildir2mailbox(os.path.join(dirname,curfold),curpath[:-4])

print('Done')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top