环境:EMOS-1.3.0/1.4/1.5
目的:
always_bcc的指定账号收到包含了所有进出服务器的邮件,数量是相当多的,如果放在同一个目录,使用会变得相当困难,本脚本就是要把数量众多的邮件进行定期归档管理。
先发效果图(在thunderbird下IMAP显示):
脚本内容:- #!/bin/bash
- #
- # Description: Archive yesterday email
- # Create subfolder (use date as the name)
- # Move yesterday email to the created folder
- #
- # Schedule to run at 00:01
- #
- YDATE=`date -d "1 day ago" +%Y%m%d`
- OLDDATE=`date -d "90 days ago" +%Y%m%d`
- # Email Setting
- FOLDER="cur new"
- OWNER="emailadmin"
- MAILPATH="/home/domains/yourdomain/backup/Maildir"
- IMAPLIST="${MAILPATH}/courierimapsubscribed"
- MAILDIRMAKE="/usr/lib/courier-imap/bin/maildirmake"
- # Create date mail folder
- ${MAILDIRMAKE} -f ${YDATE} ${MAILPATH}
- # Update the imap list
- echo "INBOX.${YDATE}" >> ${IMAPLIST}
- # Find all the yesterday email and move the the target folder
- for f in ${FOLDER}; do
- find ${MAILPATH}/${f} -type f -mtime +1 -exec mv {} ${MAILPATH}/.${YDATE}/new \;
- done
- # Change folder ownership
- chown ${OWNER}:${OWNER} -R ${MAILPATH}/.${YDATE}
- # Remove old to free space
- rm -rf ${MAILPATH}/.${OLDDATE}
- # Update the IMAP subscribed list
- cat ${IMAPLIST} | grep -v "${OLDDATE}" > tmplist
- # Presesrve the ownership of ${IMAPLIST}
- /bin/cp -p tmplist ${IMAPLIST}
- # Finish
- exit 0;
复制代码 安排一个脚本执行计划,例如:每月1号的凌晨1点执行脚本,则包含了以下功能:
1、执行脚本后,将在Maildir下面生成一个以昨天日期为名的隐藏目录。
2、将时间戳在执行脚本1小时之前的所有邮件移动到新建的目录。
3、只保留90天以内的邮件,90天之前的会自动删除
备注:第一次执行的话会把所有1小时前的所有邮件移动目录中,之后就按照你安排的计划为周期移动周期内的邮件。
因为空间够多,所以我平时用的是把删除那段代码注释掉了,保留了所有的邮件。
以上计划周期,保留天数等都可以根据自己的实际需要进行设定。
补充:
想查看特定用户发出/收到哪些邮件,请在thunderbird的搜索框(如下图)中选定搜索类型,并输入搜索关键词,就可自动列出所有该用户发出/收到的邮件列表。
如果想恢复查找到的这些邮件给指定用户,首先要在thunderbird中设定该用户的IMAP账号,然后如上方法查找需要的邮件,选择需要恢复的邮件后右键单击-->复制到-->该用户账号-->收件箱-->复制到此处.....就可以看到thunderbird的下面状态栏中在复制的信息了。
[ 本帖最后由 jgh2008 于 2009-11-26 15:00 编辑 ] |