ExtMail服务器社区's Archiver

jgh2008 发表于 2009-11-26 12:11

EMOS对BACKUP邮件定期归档脚本

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

先发效果图(在thunderbird下IMAP显示):
[attach]1728[/attach]
脚本内容:[code]
#!/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;
[/code]安排一个脚本执行计划,例如:每月1号的凌晨1点执行脚本,则包含了以下功能:
1、执行脚本后,将在Maildir下面生成一个以昨天日期为名的隐藏目录。
2、将时间戳在执行脚本1小时之前的所有邮件移动到新建的目录。
3、只保留90天以内的邮件,90天之前的会自动删除

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

补充:
    想查看特定用户发出/收到哪些邮件,请在thunderbird的搜索框(如下图)中选定搜索类型,并输入搜索关键词,就可自动列出所有该用户发出/收到的邮件列表。
[attach]1730[/attach]
       如果想恢复查找到的这些邮件给指定用户,首先要在thunderbird中设定该用户的IMAP账号,然后如上方法查找需要的邮件,选择需要恢复的邮件后右键单击-->复制到-->该用户账号-->收件箱-->复制到此处.....就可以看到thunderbird的下面状态栏中在复制的信息了。
[attach]1728[/attach]

[[i] 本帖最后由 jgh2008 于 2009-11-26 15:00 编辑 [/i]]

edit 发表于 2009-11-26 12:24

先顶一下,那如果没有在服务器保存怎么办,比如用pop3的收到outlook了

[[i] 本帖最后由 edit 于 2009-11-26 12:52 编辑 [/i]]

jgh2008 发表于 2009-11-26 13:05

[quote]原帖由 [i]edit[/i] 于 2009-11-26 12:24 发表 [url=http://www.extmail.org/forum/redirect.php?goto=findpost&pid=69191&ptid=12334][img]http://www.extmail.org/forum/images/common/back.gif[/img][/url]
先顶一下,那如果没有在服务器保存怎么办,比如用pop3的收到outlook了 [/quote]
可以考虑以下方法(临时想的半手动,仅供参考):
以例子来说明:
1、11月初,新建一个目录200911
2、OE,Outlook,Thunderbird等客户端都带有规则的,新建一条规则,所有新邮件都收到200911目录中
3、12月初,新建目录200912,修改规则中的200911为200912即可。
每个周期如上循环。

备注:如果如上使用,建议避开使用收件箱,如果是先收到收件箱,后期再移动到其它目录的话,会比较麻烦。

chifeng 发表于 2009-11-26 13:11

死顶!!!

liushaobo 发表于 2009-11-26 13:16

我顶你个肺:lol

jgh2008 发表于 2009-11-26 13:35

[quote]原帖由 [i]liushaobo[/i] 于 2009-11-26 13:16 发表 [url=http://www.extmail.org/forum/redirect.php?goto=findpost&pid=69199&ptid=12334][img]http://www.extmail.org/forum/images/common/back.gif[/img][/url]
我顶你个肺:lol [/quote]
:@ 在广东这是一句很严重的粗话,建议小孩子不要学哈:@

vema 发表于 2009-11-26 13:36

顶了先,再好好看

dnnljexk 发表于 2009-11-26 13:38

顶一个, 要是可以做到 某个用户有邮件进入 或者出去的时候就对该用户进行归档.

PlaySky 发表于 2009-11-26 13:40

路过 顶下

shenbo7 发表于 2009-11-26 13:41

顶、、、、、、

jinhuali 发表于 2009-11-26 13:49

感谢jgh2008老大发布这么好的脚本,往死里顶。

ysgoto 发表于 2009-11-26 13:51

辛苦,帮顶了

minmig 发表于 2009-11-26 13:55

感谢楼主,同时顶8楼。

minmig 发表于 2009-11-26 13:55

感谢楼主,同时顶8楼。

minmig 发表于 2009-11-26 13:56

感谢楼主,同时顶8楼。

jgh2008 发表于 2009-11-26 14:10

[quote]原帖由 [i]dnnljexk[/i] 于 2009-11-26 13:38 发表 [url=http://www.extmail.org/forum/redirect.php?goto=findpost&pid=69204&ptid=12334][img]http://www.extmail.org/forum/images/common/back.gif[/img][/url]
顶一个, 要是可以做到 某个用户有邮件进入 或者出去的时候就对该用户进行归档. [/quote]
个人觉得不需要这么复杂啊,这样归档相当于再重复建一次所有用户的家目录,如果用户数很多的话,目录也是相当繁多的,我想你的目的就是方便查找特定用户发出或收到哪些邮件,其实这很容易做到,在thunderbird界面上有一个搜索框如下图(有点广告嫌疑,哈哈):
[attach]1729[/attach]
例子:
选择搜索类型“发件人”后,在框中输入"username",这时就会列出所有"username"发出的邮件,同样还有其它搜索类型可以选择,可根据实际需要选择不同的搜索类型,并输入搜索关键词即可。

[[i] 本帖最后由 jgh2008 于 2009-11-26 14:18 编辑 [/i]]

iteeqg 发表于 2009-11-26 14:17

不错的脚本!学习了:victory:

云中帆 发表于 2009-11-26 14:46

不错,支持

yhzhou 发表于 2009-11-26 14:47

强啊,逛顶

260876330 发表于 2009-11-26 16:45

支持,学习了

mouse 发表于 2009-11-26 20:34

厉害啊,看来又有好东西可以用了。

plumlee 发表于 2010-3-2 21:30

狠 好~~~

rhkjyn 发表于 2010-3-7 18:15

辛苦,帮顶了,谢谢啊

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.