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

标题: MDaemon与OA集成,技术实现原理 [打印本页]

作者: ntosss    时间: 2008-10-16 16:58
标题: MDaemon与OA集成,技术实现原理
我从04年开始做MDaemon和oa集成,开始是使用asp,05年改.net,这里是我集成的思路方式。

我的做法是,第一次进入邮件系统时使用javascript模拟提交动作登录,将登录时间写入Cookies,登录后进入收件箱,使用javascript脚本将地址栏的SESSION值传给.net,.net将地址栏的SESSION值与当前时间(覆盖登录时间,为得到最后一次访问邮件系统的时间)写入Cookies,Cookies是加密的,读取、写入的过程都由.net进行加密解密。

第二次再进入时就不再需要做登录了,通过.net做一个检查,从Cookies内获得上次访问时间是否操作20分钟,如果超过再重复第一步javascript模拟提交动作登录,未超过的话从Cookies内读取SESSION值,直接跳转(如:WorldClient.dll?Session=BDNQQGV&View=List&NoKeepAlive=Yes),即可直接到达收件箱。

模拟提交登录的过程用户是感觉不到的,完全在后台完成,这么做主要是防止明文传递密码,登录过程即完成了。

剩下的是获取最新的邮件数量,这个是比较头痛的问题,我找遍MDaemon文档与他的在线讨论区都没有得到解答,本想从他的用户目录中的基本配置文件或的新邮件数,但他的加密格式我不知道是什么,毕竟我不是搞解密的,最后放弃从用户目录配置文件获得新邮件数,最后使用一个比较简单的方法,也是不得已而为之,写了一个IMAP服务,放在服务器,定时获取用户新邮件数,然后写入sql,OA定时AJAX刷新页面显示有多少新邮件。

关于用户集成,我使用的是SQL,所以都是直接操作SQL来完成,没有什么技术难度,只要搞清楚每个字段是干嘛用的就可以了。

本文是我集成的一些思路,同道人士多多交流,进一步完善oa集成。

写一个题外话,看到Exchange Server讨论区帖量,我知道使用Exchange Server的人还是很多的,再加上我使用windows mobile手机,想搞push mail,一直有冲动想换掉邮件系统,但OWA得界面实在无法与我们的OA集成,正考虑是否找时间重写他的OWA实现与OA界面集成,要不只能等MDaemon的SyncML完善,移动、电信手机上网费用下调了。

[ 本帖最后由 ntosss 于 2008-10-16 17:14 编辑 ]
作者: armyfeng    时间: 2008-10-16 20:03
好思路,javascript模拟登录实现这个办法非常好,模拟登录也主要为了获取登录SESSION的值,但是javascript模拟提交的username和password应该还是明文,只是不在url里显示,直接通过javascript做提交动作;
获取最新的邮件数量我的思路:我想是在邮件服务器端用Com写一个邮件列表页面(asp、aspx),接受url,结合IMDUser、IMDUserInfo、MDListClass这些类完成新邮件的读取,输出document.write格式,在有OA调用,但苦于com没用详细的文档,只能是自己不断尝试来实现
作者: lwz_08    时间: 2008-10-16 21:07
一、获取邮件这步做的有些罗嗦,我之前写了个list页面,你可以去看看
二、模拟登录也是明文验证,之前我也说过,这个除非官方提供认证接口,否则无法从根本上解决
作者: ntosss    时间: 2008-10-17 08:43
像Lwz_08说的,除非官方提供认证接口,否则无法从根本上解决,javascript模拟登录也是折中的一个办法,不让密码在URL传递。登录页控件是隐藏的,动态从后台读取用户名、密码,javascript执行提交动作,完成页面就跳转走了,这个过程非常快,基本察觉不到这个页的存在,也是相对的安全解决方案吧。

关于从list页获取新邮件数量,我初初也是这么考虑的,因为邮件系统我只是做最最基本的收发,其他的功能一律屏蔽掉了,包括通讯录都重写了,其他的功能都在OA中实现,方便集成,如果从list页获取新邮件数,需要保持一个长连接进程在邮件系统,造成邮件系统进程耗费,如果人一多可想而知,所以我才写了一个IMAP服务在服务器端定时获取,这个获取速度是非常快的,IMAP连接获取后写入SQL直接就关闭进程,减少邮件服务器的压力。

注:我的OA与邮件服务器端是分别在两台服务器上的,减轻各自服务的压力与异常时好处理。同时也带来了开发上的难度。

[ 本帖最后由 ntosss 于 2008-10-17 08:58 编辑 ]
作者: lwz_08    时间: 2008-10-17 10:39
获取新邮件的这步倒不是说必须保持一个长连接,而是session来传递的

我这边最棘手问题在于MD的密码保存是明文的,而OA密码又是加密的,最终形成了两套帐户和密码
很郁闷...




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