2010-03-23 20 views
6

Konakları değiştiriyorum ve eski sunucumdaki maildir hesaplarını yeni sunucumdaki mbox'a dönüştürmem gerekiyor.Posta kutusuna dönüştürebilirsiniz

Bunu yapmanın en iyi yolu hakkında bir fikrin var mı? < “$ i” >> ../mbox;done

FORMAIL yapmak Ama bunu anlamak gerçekten yok; */yeni/* cur i için

:

bunu buldum. Temel bir linux bilgim var ve sunucuma ssh yoluyla root erişimi var.

Maildir klasörünün çoğuna sahip aşağıdaki içeriği:


yeni
tmp
dovecot.index.log
dovecot-uidlist
dovecot.index
dovecot.index
sokak köpeği .log.2
dovecot.index.cache
dovecot-keywords
abonelikleri


ı bütün bunlar gerek yoksa ben dovecot dosyaları göz ardı edebilirsiniz?

Her türlü öneri çok takdir edilecektir.

C IMAP üzerinden iki sunucuda (veya geçici olarak ayarlayabilir) erişiminiz varsa, bir imapsync aracını, örneğin kullanarak düşünebilirsiniz

+0

Bu Bu http://serverfault.com –

+0

[Posta Dizini dönüşüm komut için MBOX] (https://gist.github.com/pklaus/962247) – davidcondrey

cevap

4

:

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

o kazandı ederse Çalışmayın, güvercin dosyalarını görmezden gelebilmeniz gerekir, ancak hangi mesajların okunduğu ve mesajlar üzerinde ayarlanan herhangi bir bayrak gibi bilgileri kaybetme olasılığından sakının. (Imapsync yöntemi, tüm bu şeyleri koruyacaktır.)

21

Bir maildir hesabını posta sunucusu hesabına dönüştürmeden bir posta kutusu hesabına dönüştürmesi gerekirse, kişi python posta kutusu kitaplığını kullanabilir. Dönüştürmek için tek bir maildir klasörü varsa, bu küçük (10 satır + yorum) python betiği here bulunan bir kullanabilirsiniz. Eğer bir alt klasör varsa, iki format arasında farklı olan alt klasör yapısını araştırmanız gerekir.

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

olmalıdır: Bu, aşağıdaki komut verir kusursuz çalışan bir yöntem. Teşekkürler ! –

+0

Bir linux bölümünden bir windows dizinine bir maildir dizini taşınırken oluşabilecek dosya sistemi kodlama sorunları ile başa çıkmak için bir Python 3 sürümü oluşturdum. Buradan indirin: https://github.com/bluebird75/maildir2mbox –

+0

Bu benim için mükemmel çalıştı. Güvercin e-postalarını thunderbird'e içe aktarma. – Gambo

İlgili konular