返回列表 回复 发帖

[原创] EMOS对BACKUP邮件定期归档脚本

环境:EMOS-1.3.0/1.4/1.5
目的:
     always_bcc的指定账号收到包含了所有进出服务器的邮件,数量是相当多的,如果放在同一个目录,使用会变得相当困难,本脚本就是要把数量众多的邮件进行定期归档管理。

先发效果图(在thunderbird下IMAP显示):

脚本内容:
  1. #!/bin/bash
  2. #
  3. # Description: Archive yesterday email
  4. #     Create subfolder (use date as the name)
  5. #     Move yesterday email to the created folder
  6. #
  7. # Schedule to run at 00:01
  8. #

  9. YDATE=`date -d "1 day ago" +%Y%m%d`
  10. OLDDATE=`date -d "90 days ago" +%Y%m%d`

  11. # Email Setting
  12. FOLDER="cur new"
  13. OWNER="emailadmin"
  14. MAILPATH="/home/domains/yourdomain/backup/Maildir"
  15. IMAPLIST="${MAILPATH}/courierimapsubscribed"
  16. MAILDIRMAKE="/usr/lib/courier-imap/bin/maildirmake"

  17. # Create date mail folder
  18. ${MAILDIRMAKE} -f ${YDATE} ${MAILPATH}

  19. # Update the imap list
  20. echo "INBOX.${YDATE}" >> ${IMAPLIST}

  21. # Find all the yesterday email and move the the target folder
  22. for f in ${FOLDER}; do
  23.     find ${MAILPATH}/${f} -type f -mtime +1 -exec mv {} ${MAILPATH}/.${YDATE}/new \;
  24. done

  25. # Change folder ownership
  26. chown ${OWNER}:${OWNER} -R ${MAILPATH}/.${YDATE}

  27. # Remove old to free space
  28. rm -rf ${MAILPATH}/.${OLDDATE}

  29. # Update the IMAP subscribed list
  30. cat ${IMAPLIST} | grep -v "${OLDDATE}" > tmplist
  31. # Presesrve the ownership of ${IMAPLIST}
  32. /bin/cp -p tmplist ${IMAPLIST}

  33. # Finish
  34. exit 0;
复制代码
安排一个脚本执行计划,例如:每月1号的凌晨1点执行脚本,则包含了以下功能:
1、执行脚本后,将在Maildir下面生成一个以昨天日期为名的隐藏目录。
2、将时间戳在执行脚本1小时之前的所有邮件移动到新建的目录。
3、只保留90天以内的邮件,90天之前的会自动删除

备注:第一次执行的话会把所有1小时前的所有邮件移动目录中,之后就按照你安排的计划为周期移动周期内的邮件。
      因为空间够多,所以我平时用的是把删除那段代码注释掉了,保留了所有的邮件。
      以上计划周期,保留天数等都可以根据自己的实际需要进行设定。

补充:
    想查看特定用户发出/收到哪些邮件,请在thunderbird的搜索框(如下图)中选定搜索类型,并输入搜索关键词,就可自动列出所有该用户发出/收到的邮件列表。

       如果想恢复查找到的这些邮件给指定用户,首先要在thunderbird中设定该用户的IMAP账号,然后如上方法查找需要的邮件,选择需要恢复的邮件后右键单击-->复制到-->该用户账号-->收件箱-->复制到此处.....就可以看到thunderbird的下面状态栏中在复制的信息了。


[ 本帖最后由 jgh2008 于 2009-11-26 15:00 编辑 ]
附件: 您所在的用户组无法下载或查看附件
先顶一下,那如果没有在服务器保存怎么办,比如用pop3的收到outlook了

[ 本帖最后由 edit 于 2009-11-26 12:52 编辑 ]
原帖由 edit 于 2009-11-26 12:24 发表
先顶一下,那如果没有在服务器保存怎么办,比如用pop3的收到outlook了
可以考虑以下方法(临时想的半手动,仅供参考):
以例子来说明:
1、11月初,新建一个目录200911
2、OE,Outlook,Thunderbird等客户端都带有规则的,新建一条规则,所有新邮件都收到200911目录中
3、12月初,新建目录200912,修改规则中的200911为200912即可。
每个周期如上循环。

备注:如果如上使用,建议避开使用收件箱,如果是先收到收件箱,后期再移动到其它目录的话,会比较麻烦。
死顶!!!
http://www.chifeng.name
http://extmail.org
http://postfix.org.cn
-------- chifeng
我顶你个肺
ExtMail邮件开发网
liushaobo@extmail.org
探索高性能的Anti-Spam组合
原帖由 liushaobo 于 2009-11-26 13:16 发表
我顶你个肺
在广东这是一句很严重的粗话,建议小孩子不要学哈
顶了先,再好好看
顶一个, 要是可以做到 某个用户有邮件进入 或者出去的时候就对该用户进行归档.
铁杆EMOS群用户.QQ群号::69453393
路过 顶下
顶、、、、、、
感谢jgh2008老大发布这么好的脚本,往死里顶。
辛苦,帮顶了
感谢楼主,同时顶8楼。
感谢楼主,同时顶8楼。
返回列表