gpt4 book ai didi

linux - 将 Maildir 转换为 mbox

转载 作者:IT王子 更新时间:2023-10-29 00:38:22 26 4
gpt4 key购买 nike

我正在更换主机,我需要将旧服务器上的 maildir 帐户转换为新服务器上的 mbox。

关于执行此操作的最佳方法有什么想法吗?

我发现了这个:

for i in new/* cur/*;do formail <”$i” >> ../mbox;done

但是我不是很懂。我对 Linux 有基本的了解,并且可以通过 ssh 以根用户身份访问我的服务器。

大多数 Maildir 文件夹都有以下内容:


当前

临时工
dovecot.index.log
dovecot-uidlist
dovecot.index
dovecot.index.log.2
dovecot.index.cache
鸽舍关键字
订阅


我需要所有这些还是可以忽略 dovecot 文件?

如有任何建议,我们将不胜感激。

C

最佳答案

如果需要在不设置mailservers的情况下将maildir账户转换为邮箱账户,可以使用python的邮箱库。如果只有一个 maildir 文件夹要转换,可以使用找到的这个小(10 行+注释)python 脚本 here .如果有子文件夹,则需要探索子文件夹结构,这在两种格式之间是不同的。这给出了以下脚本:

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

关于linux - 将 Maildir 转换为 mbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2501182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com