邮件服务器-邮件系统-邮件技术论坛(BBS)

标题: 倾情向大家奉献,我自己做的MD邮件备份软件。 [打印本页]

作者: 大碗豆浆    时间: 2006-11-10 02:37
标题: 倾情向大家奉献,我自己做的MD邮件备份软件。
写在前面
这个东西搞了很久,俺不是程序员。水平底。只做稳定点的备份软件。目前使用的这种方案。使用了国产软件WINWEBMAIL的组件。它本身就是一款邮件服务器,内置了丰富的COM+接口。最终做成的这套尚算稳定的软件不仅简单,可以说是简陋。它或者根本不能称作软件了,只能说是个工具。你也可以根据自己的需要修改它。但是请不要把这个说明文件删掉。这样当有朋友遇到问题时,大家也可以互相交流。有一个收费的MD备份软件叫 Archive Server For MDaemon。功能界面当然比我强多了。但基本备份原理是一样的。我这个就叫做 MDaemon Archive Tools For Free 吧。
软件流程:
设置MD的存档设置后,所有出入站的邮件都会放置在一个用户目录下。我们使用一个运行在服务器端的程序定期的检查这个目录。当这个目录里的邮件超过一百封时,就把它重命名剪切到WINWEBMAIL管理员的用户目录下,之所以要一百封,是因为这样会尽量少的占用系统资源。每次备份最多不超过10秒钟,即使系统因为复制文件有些慢。也是可以接受的,重命名是因为WINWEBMAIL的系统对邮件名有它自己的一套方案。这两套邮件系统的邮件源文件都是遵循标准的格式,只是后缀名不同。所以只要文件名符合WINWEBMAIL的标准。就可以在WINWEBMAIL的编程接口里访问了。剪切过去后。程序会按你设置的备份间隔定期的用XMLHTTP调用一个网页,间隔的时间建议为5分钟。该网页利用WINWEBMAIL的组件遍历管理员目录下所有的邮件,得到发件人,收件人,抄送,主题,发送时间,正文,是否有附件等这些信息。再根据用户事先的定义来判断这些邮件是否符合备份的条件,如条件符合,则将这些信息存入数据库。再把些文件移动到存档目录里。如不符合,就直接删除文件。当用户在查找页面里根据上述条件找到对应的邮件时,可以在线查看邮件内容。(不能查看附件)也可以选择把此邮件复制一份到某个MD用户的目录下。这样该用户就可以用客户端下载了。邮件的信息将保持不变。
安装方法:
1.准备工作。以我的安装情况,是有两台机。一台是已有的邮件服务器A,且负责运行邮件备份程序和检索还原的网站。另一台是备份机B。负责存储数据库和邮件文档。首先你需要确定你的情况。再根据你的情况做出一些准备工作。重要的是邮件存储空间的准备。按一般的经验看。有200个用户的服务器一般月邮件量在一般不超过四万封。约14GB(未压缩)。所以如果你要存储一年的邮件。加上数据库。至少也要准备200GB的空间。
当这些准备好后。请先在备份机上安装MS SQL 2005 SERVER,之所以要2005,其实2000也可以,不过2005的性能 更好一些。然后新建一个名为ArchiveMail的数据库。然后打开查询分析器。登陆后打开本目录下的create.sql脚本。并选择执行以创建数据表。然后在A机的ODBC数据源里创建一个文件DSN。可以访问B机的SQL,文件名为archivemail.dsn (注意你的连接方式最好是用一个专用的登陆,SA也可以。然后检查ODBC目录下的这个文件。用记事本打开,在UID下面加一行pwd=……你的密码。不然默认连接向导是不会为你存储密码的。)
然后在B机上创建一个共享目录。注意设置A机上的某用户的访问权限为完全访问。注意,不要映射网络驱动器。然后把本目录下的web文件夹复制到这个共享目录下。请把A机访问B机这个共享目录的地址记录下来备用。如:\\192.168.1.100\archive\  后面的archive是你的共享名。这个名字是随意的。
2.完成上述动作后。请在A机的MD上设置存档,把所有的用户邮件放置到某个用户的目录下。用户名可以是backup,或是archive。记得不要限制这个邮箱空间,以免邮箱满了无法存档。设置完成后将A机上的MD服务停掉,然后先安装jmail4.3。这个是用来发通知邮件给管理员的。安装完成后请安装winwebmail 3.7,可以在www.winwebmail.com上下载。安装目录最好选择和刚才设置的MD邮件备份用户邮箱相同的分区。因为同分区移动文件的速度很快。
安装完后运行开始菜单里的主程序,然后点击在系统栏的图标,在菜单上选择系统设置,然后在弹出的窗口中选择端口,把SMTP和POP3的勾去掉。这样它就不会和MD发生冲突了。然后在用户管理的地方把默认用户admin的邮件空间设置得大一些。可以设置成2GB。再为这个唯一的用户设置一个结实的密码。虽然我们不会用到这个密码。再是服务器上多了一个服务。总是要注意安全的吧。接着把事件查看菜单中的自动删除日志的功能启用,时间为一天。这是为了不必要的浪费空间。最后把安装目录下的web子目录的内容全部删除。当然,如果你不想删除也可以剪切到其它地方以备以后研究。
接着请在A机上安装IIS。默认网站的端口号为6681切记,把脚本超时的时间尽量设置得大一点。再把启用父目录的勾打上。然后在默认网站下创建一个虚拟目录。目录名为archive。目标为\\192.168.1.100\archive\web\  即你是共享目录下的那个网站。访问用户那里请选择你刚才你设置的有权限访问此目录的用户。并填好密码。注意后面的地方要选择可以运行脚本,并有写入权限。最好是为这目录建立一个程序池。这样就快一些。为了安全的考虑建议只在内部使用这个网站。对外不要开放这个6681的端口,因为一般性的维护在内部做都足够了。
3.配置web目录下的conn.asp。确认FILE DSN是你配置的那一个。启动MD服务,在A机上运行archive.exe 如果一切准备都正常程序将正常打开。否则请检查前面准备工作。在界面上请输入按提示要求的内容。注意如果是目录类的参数。请务必在后面以\结束。
设置IIS来宾帐户的访问权限,确认它可以访问MD用户邮件目录,以及winwebmail安装目录下的mail目录。访问权限是完全。
4.确认web目录下的check.asp这个文件的路径为 http://localhost:6681/archive/check.asp
点开始备份程序开始运行,状态处显示为下次检查备份时间的倒计时秒数。
查找还原的功能可以在http://localhost:6681/archive/index.asp后看到。

备份部分基本完成。查找网站还有少许欠缺。主要考虑到是数据库的结构还未到十分完美的地步。如果频繁更改结构。很多工作都要白做。待运行一段时间后看用户反应再完善网站功能。

作者:大碗豆浆  QQ:9949363 E-mail:david_lgg@163.com

[ 本帖最后由 大碗豆浆 于 2006-11-18 20:21 编辑 ]
作者: 大碗豆浆    时间: 2006-11-10 06:47
标题: 希望看贴的朋友能回贴,不枉我这一个月来为这个天天搞到两三点。哈哈

作者: dennishan    时间: 2006-11-10 08:18
帮你顶一下,不过冒昧问一个问题,把邮件备份到数据库的优势是什么?便于检索?速度快?
如果这样,不如备份到微软的PST文件,是不是可以达到同样的效果?。
作者: 大碗豆浆    时间: 2006-11-10 08:34
标题: 回复 #3 dennishan 的帖子
如果你有300个员工,你是打算每天帮他们备份一次PST吗。这里面要有多少重复的邮件。得有多少空间才能够存。要多少技术员去做。要耽误多少人工作。如果人家恶意的删除邮件,或是在PST上加密码。你又得花多少时间去恢复。

如果要查关于一个关健字在所有员工邮件里出现的情况。你打算怎么查?用OUTLOOK分别打开PST查?如果某员工接手另一员工的工作。你可以很方便的为他复制PST文件,但是有一个20人的团队要接手另一个团队的项目。你还打算把这个原团队这一年里备份过的所有PST都拷给他们吗?

用数据库。你只要一个命令。这些邮件就会显示。或是很方便的转到某用户的邮箱下面了。
作者: wxhsh    时间: 2006-11-10 08:48
标题: re
感谢楼主提供,辛苦了,我先消化一下,不过我也就2百多帐户,估计用不着这个,不过值得研究一下。
作者: 大碗豆浆    时间: 2006-11-10 09:30
标题: 回复 #5 wxhsh 的帖子
两百个用户也不算少了.主要还是要看邮件量.如果一个月邮件量有3-4万封.一年有几十万封.这两三年下来的邮件.要查或是恢复某个用户的邮件没有数据库的话还真不是件容易的事.

早上又想了一下3楼的问题.可能三楼是用OUTLOOK或是什么工具把存档目录里的邮件下载到本地.存到PST里.如果邮件量不大.我想这个方法倒是挺好的.但是邮件量大的话就难说了.PST文件由于自身的问题当文件一大时性能就明显下降.给我感觉超过4GB的PST就下降得很厉害了.我试验过P4 3G 1GB内存的主机最多能打开20个这样的文件.要查找或是恢复某个用户的邮件.就更耗时了.一旦OUTLOOK意外关掉,重新打开时等待你的将是漫长的PST扫描恢复.

另外在管理上还有一个微妙的原因.当涉及到商业泄秘调查的时候,邮件是首当其冲的.不可否认,你可能很了解你的老板,并且他很信任你.但是出于效率,他可能宁愿有个便捷的方式自己去查这些内容.很可能的情况是.他不想让你知道他要调查的对象和内容.所以.有这样一个界面就更重要了.说这么多.其实都是来自于生活中的经验.其实我更愿意和大家请教技术的东西而不想提这些破事.
作者: stdmis    时间: 2006-11-10 09:58
感謝分享。
作者: 有色的狼    时间: 2006-11-10 10:41
该死的,终于过了一个小时了
支持下豆浆的劳动成果
作者: U-Mail    时间: 2006-11-10 11:02
辛苦,,,,最好还是找个Archive Server For MDaemon的序号
作者: 大碗豆浆    时间: 2006-11-10 11:14
标题: 回复 #9 U-Mail 的帖子
难找.
作者: lwz_08    时间: 2006-11-10 11:16
感謝分享。
作者: goxia    时间: 2006-11-10 12:20
强烈支持,回头测试测试。
作者: 大碗豆浆    时间: 2006-11-10 14:29
标题: 回复 #12 goxia 的帖子
今天在服务器上使用的时候发现一些小问题.已修正.下午六点前上传上来.
作者: flamedragon    时间: 2006-11-10 14:46
支持一下!
作者: 大碗豆浆    时间: 2006-11-18 20:24
标题: 更新了一些小BUG.

作者: goodluck821    时间: 2006-11-18 20:34
不错,但我是搞成了SQL管理拉就是对人员有个备份就足够了
作者: 大碗豆浆    时间: 2006-11-18 20:59
标题: 是不能用还是难用,还是担心有木马,咋没有回音?

作者: ntos    时间: 2006-11-20 00:08
看了,感觉有点复杂,找时间测试一下,我还有一个问题想请你帮忙,下面是我多年来想解决的问题,希望能给点帮助,如果解决,我同样也像楼主免费共享出来给大家。

http://www.cnblogs.com/bookworm/archive/2006/10/17/531154.html
==============================================
使用MDaemon邮件服务器的朋友应该不少,我也使用了几年,与办公系统整合等都没有问题,但有一个问题一直困扰着我,我查遍了MDaemon老巢都未找到如何获得用户有多少封未读(新)邮件的方法,MDUSERCOMLib.dll所以提供的方法我都试过了,看了MDaemon论坛提示只能通过imap.mrk来获得。

所以我想写一个应用服务在服务器,定时去读取分析每个用户的imap.mrk文件,获得他的新邮件数,再写到SQL中,但我怎么查也查不到他的编码方式,我在CSDN发个贴无人能解,希望有解码高手或是知道别的方式获得新邮件方法的朋友帮个忙,谢谢。
==================================
作者: 钉子    时间: 2006-11-20 14:40
谢谢大碗豆浆 无私奉献这个东东。
作者: jkfh    时间: 2006-11-22 08:59
标题: 勤奋地工作着
看来平时的工作中也是遇到这样那样的工作,所以,您 的 付出值得我们尊敬。
作者: 大碗豆浆    时间: 2006-11-24 10:13
标题: 回复 #18 ntos 的帖子
我没有遇到过你这个问题.我也没注意到这个文件的作用.不过我会试试的.
作者: 大碗豆浆    时间: 2006-11-24 10:18
标题: 回复 #18 ntos 的帖子
也顺便问问你.你是用什么方法备份数据的.
作者: 大碗豆浆    时间: 2006-11-24 10:32
标题: 回复 #18 ntos 的帖子
我看了一下,文件是二进制的.每一行为一个文件名.以 ;E 结束.但是文件的数据格式没有公开,因此不知道是什么含意.你可以通过测试来找到文件的变化部分.以此来推断它记录是否已读的信息是存在那个位置的.

只能为你做到这些了.这需要大量测试工作.
作者: asionliang    时间: 2006-11-24 21:05
大碗豆浆做开发的? 很厉害啊~~
作者: 大碗豆浆    时间: 2006-11-25 15:50
标题: 回复 #25 asionliang 的帖子
都是逼出来的。没见我前面写的吗。做这个前我只会ASP,为了弄这个才学的VB。
作者: asionliang    时间: 2006-11-25 16:02
是啊。做网管真累,什么都要懂~!
作者: topper    时间: 2006-11-25 17:32
标题: 支持!
下载下来测测看
作者: 大碗豆浆    时间: 2006-11-26 09:42
标题: 用过MD API的举手。为啥所有用户不管是不是管理员GetIsAdmin函数返回的全是True。

作者: ntos    时间: 2006-11-28 17:30
原帖由 大碗豆浆 于 2006-11-24 10:32 发表
我看了一下,文件是二进制的.每一行为一个文件名.以 ;E 结束.但是文件的数据格式没有公开,因此不知道是什么含意.你可以通过测试来找到文件的变化部分.以此来推断它记录是否已读的信息是存在那个位置的.

只能为 ...


谢谢大碗豆浆,可能是我那里出错,我用C#读取这个文件都是不完整,只能读取一半,后半段读不出来,我再找时间试试。
作者: fivea    时间: 2006-11-29 11:34
标题: ,不过值得研究一下。
,不过值得研究一下。
作者: caoccf    时间: 2007-4-29 15:40
顶,好办法,有机会一定要用用的,但是现在都没有MD的破解版,都只有两年的使用期限,苦呀!
作者: tdk    时间: 2007-4-30 14:59
支持!但是我也有不明白的问题。
我刚接触邮局,我不知道为什么要备份这些历史邮件?
而且还要保留那么长时间?
邮件不是用户接收了就删除吗?短期备份我可以理解,但是长期保留为了什么呢?
他毕竟只是联系过程,而不是(或者说不能替代)正是的合同、文书等档案资料阿。
作者: yjjsyhm    时间: 2007-5-19 14:56
好东西,要顶
作者: cdl320    时间: 2007-5-29 09:28
标题: 怎样传到网络空间中阿,
你好!我想问一下,怎样才能把邮件系统传到空间中,谢谢高手回复
作者: northboy    时间: 2007-10-24 08:55
感谢大碗豆浆!无论用不用的上都支持你!
作者: mm0668    时间: 2007-10-24 10:08
不错..建议收藏加精...

暂时用不到..先留着..改天一定有用
作者: zhouyouzhong    时间: 2007-10-24 12:28
好东西吧.先下载下来慢慢研究
作者: fivea    时间: 2007-11-7 14:36
标题: 天天搞到两三点
天天搞到两三点
作者: VIKRON    时间: 2007-11-8 13:09
标题: 回复 1楼 的帖子
支持哈
作者: gasaliliufeng    时间: 2007-11-13 10:38
标题: 强烈支持!帮你顶!
很高兴看到这么好的东东!
作者: yon    时间: 2007-12-8 17:47
用的上. 我先看看好用不.
作者: david_zh    时间: 2008-8-29 08:42
去持原创,顶起!
作者: watal    时间: 2008-10-29 16:54
不错,作为MDAEMON的用了五年的老用户,我想说一句,做的不错。我等一下也测试一下,请告诉我你用MDAEMON的版本
作者: qingyezi    时间: 2009-4-9 14:30
非常感谢,正需要,下载测试一下。
作者: lqcbj    时间: 2009-4-10 09:56
很不错嘛!辛苦了 ! 我用的还是9.09版本啊
什么时候能弄个10.05中文版的破解多好啊 !
作者: unico    时间: 2009-4-13 11:17
备份到数据库,绝对是一个好想法。这种软件,我也想做。
作者: qingyezi    时间: 2009-4-15 17:18
测试到达运行archive.exe时,提示错误如下:
系统错误,未安装必须的软件:General error : Invalid file dsn

但我检查了,file dsn并没有错啊。
作者: qingyezi    时间: 2009-4-16 16:32
测试跟踪: 以上问题解决,能运行起来了,但查询不到任何邮件,继续排查中。
作者: knox    时间: 2009-4-29 11:33
MD本身自带的备份邮件的。。。只要设置一下就OK了。。。




欢迎光临 邮件服务器-邮件系统-邮件技术论坛(BBS) (http://bbs.5dmail.cn/) Powered by Discuz! X3.2