Frage

Im Hosts zu ändern, und ich brauche meine maildir Konten auf meinem alten Server zu mbox auf meinen neuen Server zu konvertieren.

Irgendwelche Ideen auf dem besten Weg, dies zu tun?

Ich fand diese:

für i in neue / * Aktuell / *; do formail <“i $“ >> ../ mbox-; getan

Aber ich verstehe nicht wirklich. Ich habe eine Grundkenntnisse über Linux, und ich habe Root-Zugriff auf meinen Server über ssh.

die meisten der Maildir Ordner mit dem folgenden Inhalt haben:


Aktuell
neue
tmp
dovecot.index.log
dovecot-uidlist
dovecot.index
dovecot.index.log.2
dovecot.index.cache
dovecot-Schlüsselwörter Abonnements


Muss ich all das brauchen oder kann ich ignorieren die Dovecot-Dateien?

Jede Beratung wäre sehr dankbar.

C

War es hilfreich?

Lösung

Wenn Sie Zugriff auf beiden Servern über imap (oder vorübergehend arrangieren), könnten Sie ein imapsync Werkzeug betrachten wollen, zB:

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

Wenn das nicht funktionieren, sollten Sie in der Lage sein, die Dovecot-Dateien zu ignorieren, aber Vorsicht, dass Sie wahrscheinlich verlieren Informationen, wie die Nachrichten gelesen werden und alle Flaggen auf den Nachrichten festgelegt. (Die imapsync Methode würde bewahren, all diese Dinge.)

Andere Tipps

Wenn man braucht ein maildir Konto in ein Postfachkonto ohne Einstellung mail server zu konvertieren, kann man die Mailbox Bibliothek von Python verwenden. Wenn man einen einzelnen maildir-Ordner zu konvertieren hat, kann man diesen kleinen (10 Zeilen + Kommentare) Python-Skript gefunden hier . Wenn ein Unterverzeichnis aufweist, zu einem Bedarf an die Unterordnerstruktur erkunden, die sie zwischen den beiden Formaten unterscheiden. Das gibt das folgende Skript:

#!/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')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top