Domanda

Im cambiare padroni di casa e ho bisogno di convertire i miei conti maildir sul mio vecchio server per mbox sul mio nuovo server.

Tutte le idee sul modo migliore per fare questo?

Ho trovato questo:

for i in nuova / * cur / *; fare formail <”$ i” >> ../ mbox; fatto

Ma io veramente non capisco. Ho una conoscenza di base di Linux e ho accesso root al mio server tramite ssh.

La maggior parte della cartella Maildir ha il seguente contenuto:


cur
nuova
tmp
dovecot.index.log
colombaia-uidlist
dovecot.index
dovecot.index.log.2
dovecot.index.cache
piccioni di parole chiave
abbonamenti


Ho bisogno tutto questo o posso ignorare i file colombaia?

Qualche consiglio sarebbe molto apprezzato.

C

È stato utile?

Soluzione

Se si ha accesso a entrambi i server tramite IMAP (o può temporaneamente organizzare), si potrebbe desiderare di considerare l'utilizzo di uno strumento di imapsync, ad esempio:

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

Se questo non funziona, si dovrebbe essere in grado di ignorare i file colombaia, ma attenzione che è probabile perdere le informazioni simili, che vengono letti i messaggi e le eventuali flag impostati sui messaggi. (Il metodo imapsync conserverebbe tutte quelle cose.)

Altri suggerimenti

Se si ha la necessità di convertire un account maildir in un conto cassetta postale senza server di posta di impostazione, si può utilizzare la libreria casella di posta di pitone. Se uno ha una singola cartella maildir per convertire, si può usare questo piccolo (10 righe + commenti) script python trovati qui . Se uno ha sottocartella, si ha la necessità di esplorare la struttura delle sottocartelle, che è diverso tra i due formati. Questo dà il seguente 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')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top