2010-03-23 19 views
6

Estoy cambiando de host y necesito convertir mis cuentas maildir en mi servidor anterior a mbox en mi nuevo servidor.Convertir Maildir en mbox

¿Alguna idea sobre la mejor manera de hacerlo?

encontré esto:

para i en nuevas/act */*; hacer formail < “$ i” >> ../mbox;done

pero yo no realmente entenderlo. Tengo un conocimiento básico de Linux y tengo acceso de root a mi servidor a través de ssh.

la mayor parte de la carpeta Maildir tener el siguiente contenido:


cur
nueva
tmp
dovecot.index.log
palomar-uidlist
dovecot.index
dovecot.index .log.2
dovecot.index.cache
dovecot-palabras clave
suscripciones


¿Es necesario que todos o puedo ignorar los archivos palomar?

Cualquier consejo sería muy apreciado.

C

+0

Esto debería estar en http://serverfault.com –

+0

[MBOX a los scripts de conversión Maildir] (https://gist.github.com/pklaus/962247) – davidcondrey

Respuesta

4

Si usted tiene acceso a ambos servidores a través de IMAP (o puede organizar temporalmente), es posible que desee considerar el uso de una herramienta imapsync, por ejemplo:

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

Si que ganaron No funciona, debería poder ignorar los archivos de dovecot, pero tenga en cuenta que es probable que pierda información como qué mensajes se leen y cualquier señal establecida en los mensajes. (El método imapsync preservaría todas esas cosas.)

21

Si se necesita convertir una cuenta de maildir en una cuenta de buzón de correo sin establecer servidores de correo, se puede usar la biblioteca de buzones de python. Si uno tiene una sola carpeta maildir para convertir, se puede usar este pequeño script de python (10 líneas + comentarios) encontrado here. Si uno tiene una subcarpeta, se necesita explorar la estructura de la subcarpeta, que es diferente entre los dos formatos. Esto da la siguiente secuencia de comandos:

#!/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') 
+0

Este es el método que funciona sin problemas. Gracias ! –

+0

Creé una versión de Python 3, para hacer frente a los problemas de codificación del sistema de archivos que pueden ocurrir al mover un directorio maildir de una partición de Linux a una partición de Windows. Descárguelo desde aquí: https://github.com/bluebird75/maildir2mbox –

+0

Esto funcionó perfectamente para mí. Importación de correos electrónicos de dovecot en thunderbird. – Gambo