2010-03-23 4 views
6

Im change hosts и мне нужно преобразовать мои учетные записи maildir на моем старом сервере в mbox на моем новом сервере.Преобразование Maildir в mbox

Любые идеи относительно наилучшего способа сделать это?

Я нашел это:

для г в новом/* текущ/*, сделать FORMAIL < «$ I» >> ../mbox;done

Но я действительно не понимаю. У меня есть базовые знания Linux, и у меня есть root-доступ к моему серверу через ssh.

большинство из папки Maildir имеют следующее содержание:


CUR
новый
TMP
dovecot.index.log
голубятня-uidlist
dovecot.index
dovecot.index .log.2
dovecot.index.cache
dovecot-keywords
подписки


мне нужно ли все это или я могу игнорировать файлы голубятни?

Любые советы были бы весьма полезными.

C

+0

Это должно быть на http://serverfault.com –

+0

[MBOX в сценариях преобразования Maildir] (https://gist.github.com/pklaus/962247) – davidcondrey

ответ

4

Если у вас есть доступ к обоим серверам через IMAP (или может временно устроить его), вы можете рассмотреть возможность использования инструмента imapsync, например:

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

Если вона Не работайте, вы должны иметь возможность игнорировать файлы dovecot, но будьте осторожны, что вы, скорее всего, потеряете информацию, такую ​​как прочитанные сообщения, и любые флаги, установленные в сообщениях. (Метод imapsync сохранит все эти вещи.)

21

Если вам нужно преобразовать учетную запись maildir в учетную запись почтового ящика без установки почтовых серверов, можно использовать библиотеку почтовых ящиков python. Если у вас есть одна папка maildir для конвертирования, можно использовать этот небольшой (10 строк + комментариев) скрипт python, найденный here. Если у вас есть вложенная папка, нужно изучить структуру подпапки, которая отличается между двумя форматами. Это дает следующий сценарий:

#!/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

Это метод, который работает безупречно. Благодаря ! –

+0

Я создал версию Python 3, чтобы иметь дело с проблемами кодирования файловой системы, которые могут возникнуть при перемещении каталога maildir из раздела Linux в раздел Windows. Загрузите его здесь: https://github.com/bluebird75/maildir2mbox –

+0

Это отлично сработало для меня. Импорт сообщений dovecot в thunderbird. – Gambo

 Смежные вопросы

  • Нет связанных вопросов^_^