Convertir Maildir à mbox
Question
Im changer les hôtes et je dois convertir mes comptes maildir sur mon ancien serveur mbox sur mon nouveau serveur.
Toutes les idées sur la meilleure façon de le faire?
Je trouve ceci:
pour i dans la nouvelle / * cabot / *; faire formail < » i $ » >> ../ Mbox, fait
Mais je ne comprends pas vraiment. J'ai une connaissance de base de linux et j'ai accès root à mon serveur via ssh.
La plupart du dossier Maildir le contenu suivant:
cabot
nouveau
tmp
dovecot.index.log
colombier-uidlist
dovecot.index
dovecot.index.log.2
dovecot.index.cache
colombier-keywords
abonnements
Ai-je besoin de tout cela ou puis-je ignorer les fichiers colombier?
Tout conseil serait grandement apprécié.
C
La solution
Si vous avez accès aux deux serveurs via imap (ou peut organiser temporairement), vous voudrez peut-être envisager d'utiliser un outil de imapsync, par exemple:
http://freshmeat.net/projects/imapsync/
Si cela ne fonctionne pas, vous devriez être en mesure d'ignorer les fichiers colombier, mais méfiez-vous que vous perdrez probablement des informations telles que les messages sont lus et les drapeaux fixés sur les messages. (La méthode imapsync conserverait toutes ces choses.)
Autres conseils
Si l'on a besoin de convertir un compte maildir dans un compte de boîte aux lettres sans mailservers de réglage, on peut utiliser la bibliothèque de boîte aux lettres de python. Si on a un seul dossier maildir pour convertir, on peut utiliser ce petit script python (10 lignes + commentaires) trouvé ici . Si l'on a sous-dossier, il faut explorer la structure du sous-dossier, ce qui est différent entre les deux formats. Cela donne le script suivant:
#!/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')