Convert Maildir to mbox

I am changing hosts and I need to convert my maildir accounts on my old server to mbox on my new server.

Any ideas on the best way to do this?

I found this:

for I'm in the new / * cur / *; do formail <"$ i" → ../mbox; done

But I don’t get it. I have basic linux knowledge and I have root access to my server via ssh.

most of the Maildir folder has the following contents:


cur
new
Tmp
dovecot.index.log
dovecote-uidlist
dovecot.index
dovecot.index.log.2
dovecot.index.cache
Dovecot keywords
subscriptions


Do I need all this or can I ignore dovecot files?

Any advice is appreciated.

FROM

+6
linux email ssh mbox maildir
source share
2 answers

If you have access to both servers via imap (or you can temporarily organize it), you may need to use the imapsync tool, for example:

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

If this does not work, you should be able to ignore the dovecot files, but be careful that you are likely to lose information, such as the messages you read, and any flags set in the messages. (The imapsync method will save all these things.)

+4
source share

If you need to convert your maildir account to a mailbox account without installing mail servers, you can use the python mailbox library. If you have one maildir folder for conversion, you can use this small (10 lines + comments) python script found here . If you have a subfolder, you need to study the structure of the subfolder, which differs between the two formats. This gives the following 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 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') 
+21
source share

All Articles