#!/usr/bin/python# -*- coding:utf-8 -*-import subprocessimport datetimeimport reimport osimport tarfileimport time# 邮件导出  目录结构说明# /home/coremail/ExportUserDraftBoxEml# --> user@domain目录# ------> eml格式的文件exportEmlDir = '/home/coremail/ExportUserDraftBoxEml'nowDateTime = datetime.datetime.now().strftime("%Y%m%d")loggerFile = '/tmp/exportEmlForDraftBox.log.%s' % nowDateTime# 日志def logger(context):    with open(loggerFile, 'a+') as f:        f.write(context + '\n')        f.flush()        print context# 压缩 生成list标志文件 上传压缩包 上传list文件 删除exportEmlDir目录def compressFile():    compressfilename = 'MAIL_EML_RJZX_%s.tar.gz' % nowDateTime    compressfilefullpath = '/home/coremail/%s'% compressfilename    # print compressfilename    # print compressfilefullpath    logger('[-] compress file %s' % compressfilefullpath)    with tarfile.open(compressfilefullpath, 'w:gz') as tar_f:        tar_f.add(exportEmlDir)    # 生成list标志文件 压缩包名字 和 文件大小    listFile = '/home/coremail/MAIL_EML_RJZX_%s.list' % nowDateTime    with open(listFile, 'w') as f:        f.write('%s: %sKB' % (compressfilename, os.stat(compressfilefullpath).st_size) + '\n')    # 5秒后再删除文件    time.sleep(5)    if os.path.isdir(exportEmlDir):        logger('[-] delete directories file %s' % exportEmlDir)        # shutil.rmtree(exportEmlDir)    if os.path.isfile(compressfilefullpath):        logger('[-] delete tar file %s' % compressfilefullpath)        # os.remove(compressfilefullpath)    print '[+] list file save to %s' % listFile# 列出用户草稿箱的邮件def listUserDraftBoxMail(coremailuser):    msgYesterdayDate = (datetime.datetime.now() + datetime.timedelta(days=-1)).strftime("%Y%m%d")    list_msg = '/home/coremail/bin/userutil --list-msg %s \'fid=2&time=%s\'' % (coremailuser, msgYesterdayDate)    logger(list_msg)    mailListResult = subprocess.Popen(list_msg, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)    for line in mailListResult.stdout.readlines():        # print line        mid = re.search("1tb[a-zA-Z0-9\+\-\*\/]{19}", line)        if mid:            logger(line.strip())            exportUserDraftBoxMail(coremailuser.strip(), mid.group().strip())# 导出用户草稿箱中的邮件def exportUserDraftBoxMail(coremailuser, mid):    userEmlDir = os.path.join(exportEmlDir, coremailuser)    print userEmlDir    if not os.path.isdir(userEmlDir):        logger('[-] create %s directories' % userEmlDir)        os.mkdir(userEmlDir)  # 创建保存用户邮件的目录    # print coremailuser    # print mid    filterMid = re.sub('[\+\-\*\/]', '', mid)    # print filterMid    emlFileName = os.path.join(userEmlDir, filterMid)    dump_msg = '/home/coremail/bin/userutil --dump-msg %s %s>%s.eml' % (coremailuser, mid, emlFileName)    logger(dump_msg)    os.system(dump_msg)# orgID = ['a', 'b', 'c']  # 根据组织id中的用户导出邮件orgUnitId = ['100002345']  # 部门idif __name__ == '__main__':    if not os.path.isdir(exportEmlDir):        os.mkdir(exportEmlDir)  # 创建邮件保存的目录    # listUserDraftBoxMail('admin@leejay.com.cn')    # 查找组织ID中的用户传入方法    for orgline in orgUnitId:        # 列出某个组织下面的所有用户        # select_user = '/home/coremail/bin/userutil --select-user @\'org_id="%s"\'' % orgline        # 列出a组织下,某个部门的所有用户        select_user = '/home/coremail/bin/userutil --call-api "cmd=302&org_id=a&org_unit_id=%s&scope=2"|sed "s/Struct/\\n/g"|awk -F\'un=|,dn=|,dd=\' \'{print $2"@"$3}\'|grep -v "^@"' % orgline        logger(select_user)        userlistRelust = subprocess.Popen(select_user, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)        for userline in userlistRelust.stdout.readlines():            # print userline.strip()            listUserDraftBoxMail(userline.strip())    # 打包压缩    compressFile()    print '[+] user mail save to %s' % exportEmlDir    print '[+] log save to %s' % loggerFile


©著作权归作者所有:来自51CTO博客作者Leejay_Engineer的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 快速掌握 10 个 HTML5 必备技巧
  2. 如何从 0 到 1 构建个性化推荐?
  3. HBase服务|阿里云HBase推出普惠性高可用服务,独家支持用户的自建
  4. Cortana即将停止服务,它为NLP留下了什么?
  5. 推荐系统燃料:数据那些事儿
  6. 「回顾」机器学习与推荐系统实践
  7. 将S3设置为类SFTP服务用于数据上传
  8. HBase方案 | 基于Lindorm的大数据用户画像解决方案
  9. html制作一张课程表和用户注册表单

随机推荐

  1. android   CheckBox 用法
  2. android照相及照片上传
  3. Android第五期 - 更新自己的apk本地与网
  4. 使用程序创建Android桌面快捷方式
  5. android下拉菜单spinner的使用方法
  6. Android Studio compile error : enum co
  7. Graphics composition on android 4.3
  8. android开机启动流程说明
  9. android自定义控件
  10. 电子书下载:Professional Flash Mobile De