发新话题
打印

金笛邮件系统优缺点

金笛邮件系统优缺点

金笛®电子邮件系统简介

电话:01082356575/76/77 传真:01082356575-6004
北京春笛网络信息技术服务有限公司
中国•北京市海淀区知春路23号
863软件园量子银座903
www.chundi.com
______________________________________________
jindi®mail, 金笛®, jdmail 均指金笛®邮件系统

金笛邮件系统标准版、企业版特色功能

金笛邮件系统标准版、企业版主要是适合20-50万用户的邮件系统,该系统最大的特点是简单、稳定、快速。

很多企业和政府部门的网管经常会碰到邮件发不出去或者接收不到的情况,一旦出现这种问题,管理员通常最忙碌的,尤其是公司领导邮件收发不畅了,IT部门通常承担了很大的压力。

对很多企业事业单位来说,邮件系统虽然不像其他业务系统软件那样受人关注,但是每天却承载了内外部通讯的重要信息,一年要保证365天不间断运行,而现在垃圾邮件、病毒邮件越来越多,要保证邮件系统的长年稳定运行,的确要好好规划一番才行。

首先一点,就是邮件系统要稳定。对于通讯系统来说,稳定压倒一切。衡量一套邮件系统是否优秀,稳定性是最重要的指标之一。很多人都是依赖邮件系统工作的,假如有一套稳定的邮件系统,就意味着“使命必达”,这样的系统是值得信赖的。不稳定的邮件系统,就意味着要电话确认、要重复发送、要解释,会引起很多不必要的麻烦。金笛邮件系统从最早的产品,一直把稳定性看成是产品生存的基础。

一般说来,造成邮件服务器不稳定的因素主要有这么几方面:
1.        邮件系统采用的是早期版本,基本没有反病毒、反垃圾邮件功能,造成邮件服务器负载大,邮件队列大,正常邮件不能及时发送、接收,造成smtp阻塞或者服务挂起;
2.        邮件服务器采用外挂的杀毒模块、反垃圾模块,和邮件服务器软件结合不够紧密,容易造成一些重要邮件误判、误删的现象;
3.        邮件系统前端放置邮件网关等系统,虽然能够过滤垃圾邮件和病毒邮件,但是由于邮件接收或者发送的环节过多,任何一个节点出现故障后导致邮件收发不畅;

金笛邮件系统在稳定性方面,经过多年的潜心研究,采用多种技术手段,在稳定性方面取得很好的效果:
1.        邮件系统内核采用自主研发、自主知识产权的MTA。金笛邮件系统标准版、企业版MTA采用C/C++开发,和操作系统紧密结合,在稳定性和效率方面,取得最佳平衡点。虽然有很多比较成熟的MTA,但金笛邮件采用自主研发邮件通讯底层的技术路线,主要出于长远发展考虑:邮件内核好比是汽车发动机,只有掌握邮件内核,才能将最新的研究成果和技术应用于邮件内核,才会有一颗强健的心,给邮件应用层不断提供彭湃的动力。如果构建在别人的内核之上,邮件系统的扩展等会受到很多制约,邮件系统底层如果不能持续改进、完善,那么这个邮件系统的生命力是有限的,能够实现的功能也是有限的。目前国内有些厂商,采用破解国外imail、mdaemon等邮件系统另外加一套中文的webmail界面低价销售,采用这样的系统,一旦出现问题,国内的厂商不掌握核心技术和核心代码,很难解决,严重者所有的邮件帐户信息和邮件数据将无法挽回。这种损失,有时候不是用钱来衡量的。另外一些厂商基于qmail和postfix开发邮件系统,一般厂商也没有实力改造邮件内核,邮件系统的发展和功能拓展很多依赖于开源社区,各个补丁包之间难以完全兼容,因此依赖于此的邮件系统也很难有长足的发展。
2.        金笛邮件系统在TCP/IP网络层实现smtp client 并发连接限制和发送频率限制。很多邮件系统不稳定,是因为没有此功能,导致通过垃圾邮件字典攻击者瞬间发送大量的垃圾邮件所致。比如netscape message server、exchange、domino mail server 都是这个原因导致服务崩溃。
3.        金笛邮件系统内嵌clamav杀毒引擎、spamassassin反垃圾邮件引擎,都是能够自动升级、自动更新病毒库和垃圾邮件规则库的,另外反垃圾邮件还有智能学习功能,管理员可以通过一批垃圾邮件和非垃圾邮件训练系统对垃圾邮件的识别率。内嵌反病毒反垃圾邮件模块,一方面可以提高效率,另外一方面,对于判定为垃圾邮件的邮件,金笛邮件系统自动投递到普通用户的垃圾邮件箱,同时存放到管理员的垃圾邮件列表,供管理员进一步处理。

衡量一个金笛邮件系统好坏的另外一个主要指标,就是性能,也就是邮件投递的速度。如果邮件服务器软件本身不能支持多线程,即使硬件比较好、网络带宽比较好也仍然不会有很好的投递速度。金笛邮件系统SMTP、POP3、IMAP服务进程并发投递参数都是动态可调的,最大并发线程可到1024,最大并发连接支持2048,发送的最大邮件附件可以到100M。一台普通PC Server一天24小时投递普通10K邮件大约120万封。这样的投递速度,对于提供邮箱空间服务的运营商来说,已经够用了。

        金笛邮件系统标准版、企业版安装完毕后,都有2个服务进程。其中一个服务进程是jdmail_server, 主要提供smtp/pop3/imap服务,另外一个服务进程是jdmail_web,提供webmail服务。Jindi webmail应用服务器采用tomcat,应用层数据库连接、邮件服务连接驻留内存,比CGI拥有更好的响应时间,当用户并发访问增加时,连接池管理能更好的调配系统资源。

        最后一个问题,就是易用性的问题。金笛邮件在易用性方面的改进不遗余力。从安装包的安装到启动,windows版本不需要敲入任何指令,用鼠标即可完成安装。所有的域名设置、用户添加、空间分配等通过浏览器登录邮件管理后台,在任何一台联网电脑即可完成。Linux安装包下载后,展开到/目录下,执行startjd.sh 和startup.sh 即可启动邮件所有服务进程。
       
        在系统管理方面,金笛邮件系统采用分级授权管理机制,系统管理员可是指定域管理帐户进行域帐户管理,还可以授权任何普通用户行使管理员权限,邮件系统管理拥有更好的灵活性。

        在邮件全文检索方面,金笛邮件系统破天荒地采用lucence技术,输入关键字后,能自动搜索发信人、主题、邮件正文、邮件附件名,这是目前国内其他邮件系统所没有的。另外,最有突破的是,邮件全文检索不会随着邮件数的增多(如几千,几十万封邮件),搜索时间不会增长,搜索时间一般都可控在几百毫秒以内。

        邮件系统作为基础通讯平台,经常需要和其他应用系统整合,金笛邮件系统提供完备的二次开发接口,通过这个开发接口,可以实现用户统一管理、单点登录、用户邮件列表显示等功能。

        其它特色功能:

①        可自定义服务线程数,最大同时连接数可达2048
②        可做DNS反向查询
③        可限定发送频率和同一ip最大连接数
④        登录失败后自动延时登录,可防止非法用户用连续密码尝试方式去破解邮箱
⑤        自定义服务欢迎信息
⑥        队列中的邮件是以文件形式存放在磁盘中,即使断电也不会丢数据
⑦        用户分组管理,便于对分组用户的邮件收发进行精准控制
⑧        全局过滤规则
⑨        强大的反垃圾邮件功能
⑩        完备的分级日志功能
⑪        系统备份功能
⑫        邮件系统监控功能
⑬        单目录部署功能
⑭        完备的二次开发接口
⑮        单点登录,sso统一认证接口
⑯        邮件全文检索
⑰        根据附件名查找邮件
⑱        智能垃圾邮件过滤训练功能


任何一个邮件系统都不是十全十美的,金笛邮件系统也是如此。金笛邮件系统在用户界面方面做的不是很美观,相信在后续的版本中会逐步改进。

金笛邮件系统标准版、企业版20用户试用版在金笛邮件产品技术支持网站www.mailer.com.cn 都可以直接下载。欢迎多提宝贵意见。


北京春笛网络信息技术服务有限公司
北京863软件园903(知春路23号量子银座903)
www.chundi.com
电话:010-82356575,82356576,82356577
附件: 您所在的用户组无法下载或查看附件

TOP

附:金笛邮件系统详细功能清单


-用户管理:

新增、删除、查找、浏览、编辑用户信息
1.新增用户时可以设置用户类型(普通用户、域管理员、系统管理员),昵称,外发权限设置,最大空间限制,最多可发送邮件数量限制;
2.删除用户可以用复选框,一次删除多个用户;删除用户时用户邮件也一并删除;
3.查找用户可以根据用户名、域为关键字模糊查找;
4.浏览用户可以根据26个首字母浏览,可以分页浏览显示用户列表;可以浏览用户邮箱空间、和已经使用空间;


-域管理:
新增、编辑域信息、删除、浏览域、设置域过滤规则、设置默认域、删除域
1.新增域需要输入域名、HELO域名、总分配空间、用户数、是否为默认域、是否允许用户自由注册、是否启用smtp/pop3/imap服务、
是否只能发本域邮件、每个用户最大空间、每个用户最多发送邮件数;
2.修改域时可以变更HELO域名、总分配空间、用户数、是否为默认域、是否允许用户自由注册、是否启用smtp/pop3/imap,是否只能发本域邮件、每个用户最大空间、每个用户最多发送邮件数;
3.可以根据发信人、收信人、主题、附件名、邮件内容、邮件大小设定域的过滤规则,满足条件后可以执行4种动作:拒收、转发指定邮件夹、转发其他邮箱、自动回复一封自定义邮件。
4.设定某个域为默认域后,客户端软件Outlook、Outlook Express、Foxmail设置帐户时可以不用带@
5.删除域将删除域下的所有用户和邮件,一定要慎重操作。

-公共地址簿:
公共地址簿分为系统级公共地址簿和域级公共地址簿。
系统级公共地址簿由系统管理员维护,对系统内的所有用户都可以使用;域级公共地址簿只有域内的用户可以使用。


-用户组管理:
创建用户组、删除用户组、编辑用户组、浏览用户组
1.用户组的功能相当于邮件列表,创建一个用户组相当于创建一个邮件列表。组名是一个特殊的邮箱,给这个邮箱发信,组内的每个
用户都可以收到。
2.用户组不但具有一般用户的属性,还包含一些用户组特有的属性。
只接收来自该发件人的邮件,指定该用户组只接收来自指定条件的发件人发来的邮件,其值可为以下几种类型:
        all 所有的邮件
        domain 同一域下用户发来的邮件
        local 由系统内投递的邮件
        auth 通过用户验证后发送的邮件
        group 组内用户邮件
        特定发件人 如:a@a.com
3.是否保存邮件副本,指定是否在用户组保存邮件的副本。
4.是否替换接收人地址,指定是否把邮件头的接收人替换成真实的组成员邮件地址。
组成员,指定该组所包含的成员,如果有多个成员可用分号“;”隔开。组成员可用通配符表示,如:*@a.com 表示组包含a.com 下的所有用户。a1@a.com;a2@a.com 表示该组包含a1@a.coma2@a.com 两个用户。

-系统设置:
1.一般参数设置:
        用户信息存储方式:文本文件、数据库
        接收错误信息的帐户:
        日志记录层次:所有、错误信息、一般信息、底层信息、调试信息
        邮箱最小容量告警值:500K表示当邮箱可用容量低于这个数值时,自动发送告警信息。
2.投递服务系统设置:
        最大投递线程数:25
        投递尝试间隔时间:480秒
        最大尝试投递次数:16
        外发邮件中继设置:
                中继的使用方式:不使用、投递失败时使用、总是使用;
                中继服务器SMTP地址:
                发件人邮件地址:
                发送验证方式:不使用、LOGIN、PLAIN、CRAM_MD5
                用户名
                密码

3.smtp服务设置:
        服务端口:可以绑定多个IP,设置端口号(默认25),是否使用SSL/TLS
        SMTP欢迎信息设置:默认为:jdmail SMTP Service ready
        启用SMTP验证:
        SMTP验证最大尝试次数:5
        最大SMTP服务线程:16,最大可到1024
        端口最大侦听数:32,最大2048
        最大RCPT命令数:16,最大128
        最大MTA跳转数:32
        SMTP客户连接超时:300秒
        邮件最大尺寸:102400K
        SMTP服务最小允许存储空间:
        SMTP服务最小允许内存:
        一次会话允许最大命令数:
        检查发送者邮箱地址域名有效性:
        允许邮件中转:
        允许VRFY命令
        允许ETRN命令
        允许空的发送者
        SMTP中继网关
        DNS服务器
        一分钟内同一IP允许访问次数:32
        同一IP最大同时访问数:32
        记录会话明细:
        允许使用nobody@root邮箱

4. POP3服务器设置
        服务端口:修改端口号,是否启用SSL/TLS
        POP3欢迎信息:jdmail POP3 Service ready
        登录错误间隔延时
        最大POP服务线程:25,最大1024
        端口最大侦听数:64,最大2048
        POP3客户连接超时:30秒
        POP3验证最大尝试次数:5
        POP3服务最小使用内存:
        一分钟同一IP允许访问次数:32
        同一IP最大同时访问数:32
        记录会话明细:
        POP3收信服务执行间隔:60

5. IMAP4服务器设置
        监听端口:修改端口号,是否使用SSL/TLS
        IMAP4欢迎信息:jdmail imap4 service ready
        登录间隔延时:5秒
        最大IMAP4服务线程:64,最大1024
        端口最大侦听数:64,最大2048
        IMAP4客户连接超时:30秒
        一分钟同一IP允许访问次数:32
        同一IP最大同时访问数:32

6. 队列系统设置:
        扫描间隔:15秒
        队列文件系统层级:2,最大32
        下一个版本增加队列中待发送邮件显示,队列邮件手工处理(删除)。

7. 本地投递服务设置:
        最大本地投递线程:16

8. webmail参数:
        允许发送的最大附件大小:5M,-1表示不限大小,0表示不允许上传附件。
        下一版本增加登录页面自定义功能。自己上传LOGO,并定义邮件系统名称、copyright等信息。管理可以定制系统颜色、风格等。

9. MySQL 数据库的参数设置:
        Mysql 驱动程序类名   
        Mysql 服务器地址  (IP地址)  
        Mysql 用户名   
        Mysql 密码   
        Mysql 数据库名   
        Mysql 端口   

        (Webmail)数据库连接池设置

        最大连接数 :默认10
        空闲超时: 默认30  秒  
        检出超时:默认600  秒  
        最大检出数:默认10

10. 证书管理
        域 :
        密钥长度:  512 1024 2048  
          有效期:  天
          国家  (两位国家代号,如:中国(CN)
          省   
          城市   
          组织   
          部门

11. 邮件模板管理
        模板名称:  新用户欢迎信 投递错误信 容量警告信  
        主题   
        内容


-全局过滤规则设置:
全局过滤规则对系统内所有域、所有用户起作用。
可以根据、发件人、接收人、主题、附件名、邮件内容、邮件长度 组合条件,执行相应的过滤动作。
可以分别设置发送过滤规则和接收过滤规则。


-邮件监控:
分为发送邮件监控、接收邮件监控
可设置被监控人邮箱,接收监控邮件邮箱


-反垃圾、反病毒设置
        反垃圾参数设置:
                启用RBL动态黑名单查询   
                RBL服务地址  (如果有多个地址,可用分号“;”分隔 )  
       
                启用RWL动态白名单查询   
                RWL服务地址  (如果有多个地址,可用分号“;”分隔 )  
       
                对HElO域名进行反向DNS查询   
                验证HElO域名有效性

        黑名单管理:新增、删除
                新增黑名单IP地址   
                域名   
                邮件地址   
                (网段)IP地址   
                (网段)掩码
       
        白名单管理:新增、删除
                IP地址   
                域名   
                邮件地址   
                (网段)IP地址   
                (网段)掩码

        SpamAssassin反垃圾引擎设置
                启用SpamAssassin   
                判定为垃圾邮件值  (默认值为8,小于或等于零表示使用默认值8)  
                判定为系统自动删除值  (默认值为12,小于或等于零表示使用默认值12)  
                垃圾邮件处理帐号:postmaster@root   
                规则库自动升级间隔: 3  天(小于或等于零表示不自动升级)  
                规则库自动升级地址: http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf

        智能反垃圾邮件设置:
                垃圾邮件报告列表
                训练为垃圾邮件
                训练为正常邮件
                重新发送
                删除

TOP

ClamAV反病毒引擎设置
                启用ClamAV   
                病毒邮件处理帐号:postmaster@root   
                病毒库自动升级间隔:48  小时 (小于或等于零表示不自动升级)  
                升级失败尝试次数:5   
                病毒库版本信息查询地址: current.cvd.clamav.net   
                病毒库下载地址:database.clamav.net
       
        病毒邮件报告列表
                显示发件人、收件人、主题、类型、日期、长度
                删除、重新发送

-日志查看
        日志类型:  系统信息 IMAP POP3 SMTP 本地处理服务 队列系统 投递服务系统 WebMail POP3收件 证书管理 反垃圾 反病毒  
        开始时间  (时间格式:YYYY-MM-DD HH:mm:SS)
        截止时间   
        日志记录层次  所有 错误信息 一般信息 底层信息 调试信息  
        错误号   
        内容   
        每页显示记录数  

-系统备份
        显示系统备份列表:文件名、大小、日期
        上传备份
        下载备份文件
        导入备份文件


-注册码管理:注册码绑定一个域名。在该注册码下,可以使用所购买数量的域和用户。
        域名   
        最多可用域数   
        最多可用用户数   
        注册码

-邮件管理:收邮件、发邮件、删除、移动、地址簿管理、文件夹管理、回收站、异常邮件、垃圾邮件、病毒邮件
        下一般增加地址簿导入、导出功能


-邮件全文检索:
        搜索内容:

-设置
        个人设置
                每页显示记录数:         
                个性化签名,可以设置三个不同的签名  
                签名标题1      
                签名内容1      
                签名标题2      
                签名内容2      
                签名标题3      
                签名内容3
        修改密码:
                原密码  
                新密码  
                确认新密码

        文件夹管理:新建、删除、改名

        过滤规则设置:
       
        地址簿管理:分组管理

        POP收信:
                POP3服务器地址   
                端口   
                用户名   
                密码   
                发送到:  收件箱 草稿箱 发件箱 回收站 异常邮件 垃圾邮件 病毒邮件  
                接收邮件后,删除POP3服务器上的邮件

        自动转发:
                 启用自动转发  
                 转发到邮箱  
                 保存副本在本地邮箱  
       
        自动回复:
                启用自动回复  
                回复内容

附件二:
开发接口说明

一.        com.jdmail.web.MailMain
系统主入口点,当WEBMAIL 启动时,服务器执行其中的init 进行系统初始化工作。
主要成员变量:
1.        public static ServerConf s_config
参考“二”
二.        com.jdmail.web. ServerConf
系统执行时,环境变量管理类。通过该类可获得WEBMAIL时的各种执行路径值。
主要方法:
1.        public String  getTempPath();
获得临时目录。
2.        public String  getLogPath();
或得WEB 日志目录。
3.        public long getSessionTimeout();
获得用户Session 超时值。
4.        public String  getBackupPath();
获取系统备份目录。
5.        public String  getMailServerPath();
获取服务器安装目录。
6.        public String  getMailDirPath();
获取MAILDIR 目录。
7.        public String  getServerTempPath();
获取服务器临时目录。
8.        public String  getSpoolLocalPath();
获取本地处理队列目录。
三.        com.jdmail.web. MailSession
本类用于表示用户连接SESSION。
主要方法:
1.        public void update();
更新SESSION。
2.        public String getTempPath();
获取用户临时目录。
四.        com.jdmail.web. SessionAdmin
本类用于管理用户SESSION。
主要方法:
1.        public void logout(String id);
注销用户SESSION。Id 为WEB服务器的SESSION ID。
五.        com.jdmail.web. UserInfo
本类代表一个成功登录用户。
主要变量:
1.        public String domain
用户的域。

2.        public String ip
用户的登录IP
3.        public UserAccount account ;
用户帐号信息。
4.        public UserProfile profile
用户个人配置信息。
5.        public UserSignature us_signature
用户签名档信息。
六.        com.jdmail.util. TMConfig
本类表示系统配置。
主要变量:
参考server.xml 服务器文件。
主要方法:(略)
七.        com.jdmail.util. UserAccount
本类代表用户帐号信息。
主要变量:
本类变量与account 表(或account.xml 文件)相对应。
主要方法:
1.        public void init(String filename)
初始化类。Filename 为acount.xml 文件路径。
2.        public void init(String filename,String profilefile)
初始化类。Filename 为acount.xml 文件路径。Profilefile 为profile.xml文件路径。
3.        public void mysqlInit(String domain, String username,boolean bInitProfile)
数据库方式初始化类。bInitProfile 表示是否载入用户profile 信息。
。。。。(略)
八.        com.jdmail.util. UserProfile
本类表示用户个人信息。
主要变量:
本类变量与profile 表(或profile.xml 文件)相对应。
九.        com.jdmail.util. UserSignature
本类表示用户签名档。
主要变量:
本类变量与signature表(或signature.xml 文件)相对应。
十.        com.jdmail.util.UserSpace
本类表示用户空间使用情况。
主要变量:
1.        public int iTotalSize
用户总分配空间。以K为单位。
2.        public int iUsedSize
3.        已使用空间。以K为单位
4.        public int iUnusedSize
未使用空间。
5.        public int iPrecUsedSize
使用空间百分率。
6.        public int iPrecUnusedSize
未使用空间百分率。
7.        public int iMsgNum
用户邮件数。
十一.        com.jdmail.web. DomainAdmin
域管理类。
主要方法:
(略)
十二.        com.jdmail.web.DomainList
域列表。
主要方法:
(略)
从域列表删除域,注意,本方法并不是真正删除域目录。
1.        public void save()
保存域列表
十三.        com.jdmail.web.Domain
本类表示一个域。
主要变量:
本类变量与domains表(或domains.xml 文件)相对应。
主要方法:
1.        public boolean makeDomain()
生成一个域,包括生成域目录。
返回值:true 成功,false 失败。
十四.        com.jdmail.web.FolderAdmin
本类用于用户文件夹管理。
主要方法:
1.        public static int add(String strDomain,String strUserName,String newFolder)
2.        public static int del(String strDomain,String strUserName,String sFolder)
3.        public static int rename(String strDomain,String strUserName,String oldFolder,String newFolder)
4.        public static void save(String strDomain,String strUserName,ArrayList alFolder)
十五.        com.jdmail.web. Folder
本类表示一个文件夹。
(略)
十六.        com.jdmail.mime. Message
本类表示一封邮件。
在系统里,邮件分为四种格式:
1.        MSG_MAIL 正常邮件格式
2.        MSG_MAILDIR MAILDIR 里的邮件格式。
3.        MSG_SPOOLLOCAL 本地处理队列邮件格式。
4.        MSG_SPOOLQUEUE 正在处理队列里的格式。
主要方法:
(略)
十七.        com.jdmail.mime. MimePart
邮件的MIMEPART 部分。
主要变量:
(略)
十八.        com.jdmail.mime. MimeHeader
邮件头。
主要变量:
1.        public Vector m_pSL_HeaderPair
值对表。
2.        private Vector m_pSL_ContentTypeParamPair
ContentType 参数表。
    主要方法:
1.        public HeaderPair FindHeaderPair(String pKey)
查找值对。
2.        public HeaderPair FindContentParam(String pKey)
查找ContentType 参数
十九.        com.jdmail.mime. HeaderPair
邮件头值对。
主要变量:
1.public        String m_pKey
        参数名
3.        public  String m_pValue
参数值。
二十.        com.jdmail.mime. MimeAttach
邮件附件。
二十一.        com.jdmail.web. MessageAdmin
邮件管理。
主要方法:
1.        public static int getMsgCount(String strDomain,String strUserName,String strFolder)
获取用户指定文件夹里的邮件数。
2.        public static ArrayList getFolderList(String strDomain,String strUserName,int iFlag)
获取用户的文件夹列表。
3.        public static  Folder  findFolder(ArrayList alFolder,String name)
查找指定用户的文件夹。
4.          public static  ArrayList getMsgList(String strDomain,String strUserName,String strFolder, int iFrom,int iItems,int SortType)
或取指定用户指定文件夹邮件列表。
5.        public static  Message getMsg(String strDomain,String strUserName,String strFolder,String iItems)
获取用户指定的邮件。
6.          public static void  moveMsg(String strDomain,String strUserName,
MailSession ms,String mbid,String org_mbtype, String new_mbtype,String[] msgnums)
移动用户邮件。

TOP

7.          public static void  deleteMsg(String strDomain,String strUserName,
MailSession ms,String mbid,String mbtype,String[] msgnums)
删除用户邮件。

附件三:
系统表结构说明
一.        用户表
表名:account
字段名        类型        描述
domain        varchar(50) not null        用户所属域
username        varchar(20) not null        用户名
tpassword        varchar(20)        密码
usertype        char(1)        用户类型:
U—普通用户
S---系统管理员
G---用户组
D---域管理员
enable        varchar(5)        是否有效
TRUE 有效
FALSE 无效
enable_smtp        varchar(5)        是否允许通过SMTP访问
enable_pop3        varchar(5)        是否允许通过POP3访问
enable_imap4        varchar(5)        是否允许通过IMAP4访问
enable_webaccess        varchar(5)        是否允许通过WEB访问
enable_localdomain        varchar(5)        是否限定该用户只能发邮件到本域
max_mailbox_size        int        最大空间,负数表示无限制
max_mailbox_msgs        int        最多邮件数,负数表示无限制
modifytime        bigint        修改时间


























二.        域表
表名:domains

字段名        类型        描述
name        varchar(50) not null  PRIMARY KEY,        域名
bdefault        varchar(50)        是否为默认
TRUE 是
FALSE 否
enablereg        varchar(50)        是否允许用户自注册
TRUE 是
FALSE 否
users        int        最大用户数,负数表示无限制
license        varchar(200)        注册码
enable        varchar(5)        用户自注册时,默认是否有效
enable_smtp        varchar(5)        用户自注册时,默认是否允许通过SMTP访问
enable_pop3        varchar(5)        用户自注册时,默认是否允许通过POP3访问
enable_imap4        varchar(5)        用户自注册时,默认是否允许通过IMAP4访问
enable_webaccess        varchar(5)        用户自注册时,默认是否允许通过WEB访问
enable_localdomain        varchar(5)        用户自注册时,默认是否限定该用户只能发邮件到本域
max_mailbox_size        int        用户自注册时,默认用户最大空间
max_mailbox_msgs        Int        用户自注册时,默认最多邮件数
total_mailbox_size        int        该域的总空间
modifytime        bigint        修改时间


三.        用户个人设置表
表名: profile
字段名        类型        描述
domain        varchar(50) not null        域名
username        varchar(20) not null        用户名
first_name         varchar(50)        姓,或妮称
last_name        varchar(50)        名
organiztion        varchar(100)        组织
department        varchar(20)        部门
address        varchar(100)        地址
city        varchar(30)        城市
postalcode        varchar(10)        邮编
telephone        varchar(20)        电话
state_province        varchar(20)        省
country        varchar(20)        国家
items        int        每页显示多少封邮件







四.        签名档
表名:signature
字段名        类型        描述
domain        varchar(50) not null        域名
username        varchar(20) not null        用户名
name        varchar(100) not null        签名档名称
content        longblob        签名档内容

五.        用户组
表名:tgroup
字段名        类型        描述
domain        varchar(50) not null        域名
username        varchar(20) not null        用户名
realname        varchar(30) not null,        组实名
receivecond        varchar(20) not null        接收条件
remaincopy        varchar(6) not null        是否保留副本
TRUE 是
FALSE否
replacercpt        varchar(6) not null        是否替换收件人
TRUE 是
FALSE否
users        longblob        组成员


附件四、安装说明:

金笛邮件系统windows2000/xp/2003版本安装说明
===========================================
安装:
1. 直接点击exe文件即可开始安装,安装时请选择安装目录,默认安装目录是c:\jdmail。
2. 安装完毕后,系统提示重启动电脑。重新登录后,到控制面板->管理工具->服务,启动 jdmail_server, jdmail_web 这2个服务;
3. 打开浏览器,访问http://localhost:8080/maintlogin.jsp 进入系统管理界面,添加相应的域和用户。
4. 打开浏览器,访问http://localhost:8080/ 进入邮件系统界面,即可使用jdmail。

常见的问题:
1. windows2003 下8080 端口如果被占用,可以修改 c:\jdmail\web\conf\server.xml
        <Connector port="8080"
                      maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                enableLookups="false" redirectPort="8443" acceptCount="100"
                debug="0" connectionTimeout="20000"
                disableUploadTimeout="true" />
   将8080改为8090。
2. 如果希望每次开机都自动启动金笛邮件服务,可通过控制面板->管理工具->服务,找到jdmail_server和jdmail_web这2个服务,
   点右键,在属性中设为自动即可。

3. 如果希望更改登录界面风格,可以到c:\jdmail\web\webapps\ROOT , 修改相关jsp文件即可。
4. 如果不能外发邮件,请检查是否已经正确设置DNS。进入管理员界面,进入 系统设置->SMTP服务设置,在“DNS 服务器”项设置正确的DNS 服务器。
5. 如果不能接收外部邮件,请检查域名的MX记录是否已经指向所安装的邮件服务器。


金笛邮件系统Linux版本安装说明
=============================
安装:
1. 将下载后的tgz文件放在linux系统的根/目录下,然后 运行:
        # tar -xvzf jdmail_linux_xxx.tgz
        # cd /jdmail
        # ./startjd.sh
        # cd web/bin
        # ./startup.sh
2. 如果希望每次开机都自动启动金笛邮件服务,修改/etc/rc.d/rc.local,在最后增加2行:
         /jdmail/startjd.sh
         /jdmail/web/bin/startup.sh
3. 打开浏览器,访问http://localhost:8080/maintlogin.jsp 进入系统管理界面,添加相应的域和用户。
4. 打开浏览器,访问http://localhost:8080/ 进入邮件系统界面,即可使用jdmail。

常见的问题:
1. linux版本比较多,市面上常见的linux,如: redhat,redflag,中标普华,turbolinux,都支持。假如您安装的linux版本不是上述公司的,
可以随时和我公司技术部取得联系。
2. 如果希望更改登录界面风格,可以到/jdmail/web/webapps/ROOT , 修改相关jsp文件即可。
3. 如果不能外发邮件,请检查是否已经正确设置DNS。进入管理员界面,进入 系统设置->SMTP服务设置,在“DNS 服务器”项设置正确的DNS 服务器。
4. 如果不能接收外部邮件,请检查域名的MX记录是否已经指向所安装的邮件服务器。

TOP

附件五:

用户统一认证、统一管理和单点登录调用接口

<%@ page contentType = "text/html;charset=gb2312" %>
<%@ page import = "java.util.*" %>
<%@ page import = "java.text.*" %>
<%@ page import = "com.jdmail.web.*" %>
<%@ page import = "com.jdmail.util.*" %>
<%@ page import = "com.jdmail.mime.*" %>
<%@ page import = "java.sql.*" %>
<%@ page import = "java.io.*" %>

<%
/*
操作说明:
1.增加用户,
URL: api?pwd=管理员密码&type=add&domain=域名&username=用户名&password=密码&maxsize=最大空间&maxsize=最大邮件数
返回值: 0 -- 成功, 非0 失败

2.删除用户
URL: api?pwd=管理员密码&type=delete&domain=域名&username=用户名
返回值: 0 -- 成功, 非0 失败

3.更改用户密码
URL: api?pwd=管理员密码&type=edit&domain=域名&username=用户名&password=新密码
返回值: 0 -- 成功, 非0 失败

4.获取用户新邮件数
URL: api?pwd=管理员密码&type=getnewmsg&domain=域名&username=用户名
返回值: 0 或正数 -- 用户新邮件数, 负数 失败

*/
%>
<%
        SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy hh:mm:ss");
        java.util.Date d = new java.util.Date();
        String str_ca = sdf.format(d);
        response.setHeader("Expires","Mon, 26 Jul 1997 05:00:00 GMT");
        response.setHeader("Last-Modified", str_ca  + " GMT");
        response.setHeader("Cache-Control","no-cache, must-revalidate");
        response.setHeader("Pragma","no-cache");

        //response.setContentType("text/html;charset=gb2312");
      
      String pwd = request.getParameter("pwd");
      if(pwd == null){
          pwd = "";
      }
        
      UserInfo userinfo = new UserInfo();
      userinfo.setUid("postmaster");

      userinfo.is_first = true;
      userinfo.domain = "root";

      userinfo.str_cn = "postmaster" + "@" + "root";

      String strCFPath = MailMain.s_config.getMailDirPath() +   System.getProperty("file.separator")
                                + "root" +   System.getProperty("file.separator")
                                + "postmaster" +   System.getProperty("file.separator") + "account.xml";
      
      userinfo.account = new UserAccount();
      try{
          if (MailMain.m_tmc.USER_AUTH_TYPE.equals("MYSQL")) {
              userinfo.account.mysqlInit("root", "postmaster",false);
          } else {
              userinfo.account.init(strCFPath);
          }
      }catch(Exception e){         
        e.printStackTrace() ;
           out.write("1" );
          return ;
      }
      
      if(!userinfo.account.password.equals (pwd)){
                out.write("2" );
          return ;
      }
%>

<%
    String type = request.getParameter("type");
    if(type == null) type = "";
       
    if(type.equals("add")){
        UserAccount ua = null;

        try{
                String domain = request.getParameter("domain");
                if(domain == null){
                     out.write("3" );
                    return ;
                }
               
                String username = request.getParameter("username");
                if(username == null){
                     out.write("4" );
                    return ;
                }
                String password =  request.getParameter("password");
                if(password == null){
                     password = "";
                }
               
                String maxsize =  request.getParameter("maxsize");
                if(maxsize == null){
                     maxsize = "-1";
                }
                String maxmsgs =  request.getParameter("maxmsgs");      
                if(maxmsgs == null){
                     maxmsgs = "-1";
                }      
               
                ua = new UserAccount();
                ua.username = new String(username);
                ua.password = new String(password);
                ua.usertype  = "U";
                ua.m_domain = new String(domain);
                ua.m_UserProfile = new UserProfile();
               
                ua.m_UserProfile.first_name = username;
               
                ua.m_UserProfile.last_name = "";
                ua.m_UserProfile.organiztion = "";
                ua.m_UserProfile.department = "";
                ua.m_UserProfile.address = "";
                ua.m_UserProfile.city = "";
                ua.m_UserProfile.postalcode = "";
                ua.m_UserProfile.telephone = "";
                ua.m_UserProfile.state_province = "";
                ua.m_UserProfile.country = "";
                ua.m_UserProfile.items = 50;
               
                ua.enable = "true";
                ua.enable_smtp = "true";
                ua.enable_pop3 = "true";
                ua.enable_imap4 = "true";
                ua.enable_webaccess = "true";
                ua.enable_localdomain = "false";

                ua.max_mailbox_size = Integer.parseInt(maxsize);
                ua.max_mailbox_msgs = Integer.parseInt(maxmsgs);      
                int iRet = 0;
                try {
                    iRet = ua.makeUserAccount(MailMain.s_config.getMailDirPath());
                }catch(Exception e){
                    e.printStackTrace();
                    out.write("1" );
                    return ;
                }
               
                if(iRet != 0 ){
                    out.write("1" );
                      return ;
                }
                        
           
        }catch(Exception ee){
            ee.printStackTrace();
            out.write("1" );
            return ;
        }       
        
        out.write("0" );
        return ;
    }else if(type.equals("delete")){
        
        String username = request.getParameter("username");
        if(username == null){
            out.write("1" );
            return ;
        }
        
        String domain = request.getParameter("domain");
        if(domain == null){
            out.write("2" );
            return ;
        }
        String[] users = new String[1];
        users[0] = username;
        UserAccountAdmin.deleteUser(domain, users);
        
        out.write("0" );
        return ;
    }else if(type.equals("edit")){
        String username = request.getParameter("username");
        if(username == null){
            out.write("1" );
            return ;
        }
        
        String domain = request.getParameter("domain");
        if(domain == null){
            out.write("2" );
            return ;
        }
        
        UserAccount ua = null;
        
        ua = UserAccountAdmin.getUserAccount (domain,username);
        ua.m_domain = new String(domain);
        
        String password =  request.getParameter("password");
        if(password == null){
            password = "";
        }
        
        ua.password = password;
        int iRet = ua.saveProfile(true,false);
        
        if(iRet != 0){
            out.write("3" );
            return ;
        }
        
        out.write("0");
        return ;      
    }else if(type.equals("getnewmsg")){
       String username = request.getParameter("username");
        if(username == null){
            out.write("-1");
            return ;
        }
        
        String domain = request.getParameter("domain");
        if(domain == null){
            out.write("-2" );
            return ;
        }
        
        ArrayList hsFolders = MessageAdmin.getFolderList (domain,username,1);                                 
        Folder tempFolder = null;
        tempFolder = MessageAdmin.findFolder(hsFolders,"new");
        
        int iNewMsg = tempFolder.iNewMsg;     
        
        out.write((String.valueOf(iNewMsg)) );
        return ;        
    }
       
%>  

附件六、批量导入用户的数据格式

1.        每一行为一条记录,行结尾为\r\n (回车换行符)
2.        行中以一个空格做为字段间隔,字段顺序如下。
域名 用户名 密码(明文) 最大用户空间(负数为无限制)最大邮件数(负数为无限制)

例子:
Abc abc123 -1 -1
A a -1 -1

TOP

附件七:

金笛邮件全文检索技术:Lucene 技术原理简介

内容摘要:
Lucene是一个基于Java的全文索引工具包。
1.        基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史
2.        全文检索的实现:Luene全文索引和数据库索引的比较
3.        中文切分词机制简介:基于词库和自动切分词算法的比较
4.        具体的安装和使用简介:系统结构介绍和演示
5.        Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展
6.        从Lucene我们还可以学到什么
基于Java的全文索引/检索引擎——Lucene
Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。
Lucene的发展历程:早先发布在作者自己的www.lucene.com,后来发布在SourceForge,2001年年底成为APACHE基金会jakarta的一个子项目:http://jakarta.apache.org/lucene/
已经有很多Java项目都使用了Lucene作为其后台的全文索引引擎,比较著名的有:
•        Jive:WEB论坛系统;
•        Eyebrows:邮件列表HTML归档/浏览/查询系统,本文的主要参考文档“TheLucene search engine: Powerful, flexible, and free”作者就是EyeBrows系统的主要开发者之一,而EyeBrows已经成为目前APACHE项目的主要邮件列表归档系统。
•        Cocoon:基于XML的web发布框架,全文检索部分使用了Lucene
•        Eclipse:基于Java的开放开发平台,帮助部分的全文索引使用了Lucene
对于中文用户来说,最关心的问题是其是否支持中文的全文检索。但通过后面对于Lucene的结构的介绍,你会了解到由于Lucene良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。
全文检索的实现机制
Lucene的API接口设计的比较通用,输入输出结构都很像数据库的表==>记录==>字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到Lucene的存储结构/接口中。总体上看:可以先把Lucene当成一个支持全文索引的数据库系统。
比较一下Lucene和数据库:
Lucene        数据库
索引数据源:doc(field1,field2...) doc(field1,field2...)
                  \  indexer /
                 _____________
                | Lucene Index|
                --------------
                 / searcher \
结果输出:Hits(doc(field1,field2) doc(field1...))         索引数据源:record(field1,field2...) record(field1..)
              \  SQL: insert/
               _____________
              | DB  Index   |
               -------------
              / SQL: select \
结果输出:results(record(field1,field2..) record(field1...))
Document:一个需要进行索引的“单元”
一个Document由多个字段组成        Record:记录,包含多个字段
Field:字段        Field:字段
Hits:查询结果集,由匹配的Document组成        RecordSet:查询结果集,由多个Record组成
全文检索 ≠ like "%keyword%"
通常比较厚的书籍后面常常附关键词索引表(比如:北京:12, 34页,上海:3,77页……),它能够帮助读者比较快地找到相关内容的页码。而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索引查找的速度要比一页一页地翻内容高多少倍……而索引之所以效率高,另外一个原因是它是排好序的。对于检索系统来说核心是一个排序问题。
由于数据库索引不是为全文索引设计的,因此,使用like "%keyword%"时,数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,LIKE对性能的危害是极大的。如果是需要对多个关键词进行模糊匹配:like"%keyword1%" and like "%keyword2%" ...其效率也就可想而知了。
所以建立一个高效检索系统的关键是建立一个类似于科技索引一样的反向索引机制,将数据源(比如多篇文章)排序顺序存储的同时,有另外一个排好序的关键词列表,用于存储关键词==>文章映射关系,利用这样的映射关系索引:[关键词==>出现关键词的文章编号,出现次数(甚至包括位置:起始偏移量,结束偏移量),出现频率],检索过程就是把模糊查询变成多个可以利用索引的精确查询的逻辑组合的过程。从而大大提高了多关键词查询的效率,所以,全文检索问题归结到最后是一个排序问题。
由此可以看出模糊查询相对数据库的精确查询是一个非常不确定的问题,这也是大部分数据库对全文检索支持有限的原因。Lucene最核心的特征是通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提供了扩展接口,以方便针对不同应用的定制。
可以通过一下表格对比一下数据库的模糊查询:
         Lucene全文索引引擎        数据库
索引        将数据源中的数据都通过全文索引一一建立反向索引        对于LIKE查询来说,数据传统的索引是根本用不上的。数据需要逐个便利记录进行GREP式的模糊匹配,比有索引的搜索速度要有多个数量级的下降。
匹配效果        通过词元(term)进行匹配,通过语言分析接口的实现,可以实现对中文等非英语的支持。        使用:like "%net%" 会把netherlands也匹配出来,
多个关键词的模糊匹配:使用like "%com%net%":就不能匹配词序颠倒的xxx.net..xxx.com
匹配度        有匹配度算法,将匹配程度(相似度)比较高的结果排在前面。        没有匹配程度的控制:比如有记录中net出现5词和出现1次的,结果是一样的。
结果输出        通过特别的算法,将最匹配度最高的头100条结果输出,结果集是缓冲式的小批量读取的。        返回所有的结果集,在匹配条目非常多的时候(比如上万条)需要大量的内存存放这些临时结果集。
可定制性        通过不同的语言分析接口实现,可以方便的定制出符合应用需要的索引规则(包括对中文的支持)        没有接口或接口复杂,无法定制
结论        高负载的模糊查询应用,需要负责的模糊查询的规则,索引的资料量比较大        使用率低,模糊匹配规则简单或者需要模糊查询的资料量少
全文检索和数据库应用最大的不同在于:让最相关的头100条结果满足98%以上用户的需求

Lucene的创新之处:
大部分的搜索(数据库)引擎都是用B树结构来维护索引,索引的更新会导致大量的IO操作,Lucene在实现中,对此稍微有所改进:不是维护一个索引文件,而是在扩展索引的时候不断创建新的索引文件,然后定期的把这些新的小索引文件合并到原先的大索引中(针对不同的更新策略,批次的大小可以调整),这样在不影响检索的效率的前提下,提高了索引的效率。
Lucene和其他一些全文检索系统/应用的比较:
         Lucene        其他开源全文检索系统
增量索引和批量索引        可以进行增量的索引(Append),可以对于大量数据进行批量索引,并且接口设计用于优化批量索引和小批量的增量索引。        很多系统只支持批量的索引,有时数据源有一点增加也需要重建索引。
数据源        Lucene没有定义具体的数据源,而是一个文档的结构,因此可以非常灵活的适应各种应用(只要前端有合适的转换器把数据源转换成相应结构),        很多系统只针对网页,缺乏其他格式文档的灵活性。
索引内容抓取        Lucene的文档是由多个字段组成的,甚至可以控制那些字段需要进行索引,那些字段不需要索引,近一步索引的字段也分为需要分词和不需要分词的类型:
   需要进行分词的索引,比如:标题,文章内容字段
   不需要进行分词的索引,比如:作者/日期字段        缺乏通用性,往往将文档整个索引了
语言分析        通过语言分析器的不同扩展实现:
可以过滤掉不需要的词:an the of 等,
西文语法分析:将jumps jumped jumper都归结成jump进行索引/检索
非英文支持:对亚洲语言,阿拉伯语言的索引支持        缺乏通用接口实现
查询分析        通过查询分析接口的实现,可以定制自己的查询语法规则:
比如: 多个关键词之间的 + - and or关系等         
并发访问        能够支持多用户的使用       


附件八:

金笛邮件系统反病毒、反垃圾邮件引擎技术简介
金笛邮件系统反垃圾、反病毒模块是春笛公司多年的技术结晶,综合运用动态黑名单、 静态黑名单、IP阻断、DNS反向解析、邮件打分、bayes特征库、Razor国际反垃圾协作网等技术手段,垃圾邮件的识别率高达95%-98%。病毒邮件的识别率也在95%以上,可以查杀20000多种病毒,对于目前比较流行的邮件病毒sobig, netsky, mydoom, Worm.SomeFool.Gen 有100%的免疫力。春笛公司与多家知名防毒厂商合作,支持病毒特征库定时在线升级, 保证升级频率一周3次以上。

金笛邮件系统反垃圾、反病毒模块设计成傻瓜化、智能化,不需要复杂的配置, 最大程度降低学习和维护的成本。

金笛邮件系统内置知名开源软件clamav杀毒引擎,经过多年的升级改造之后,具有如下特点:

一、防毒功能特点
1. 采用先进的技术架构, 绝大部分操作在内存处理, 峰值处理能力为18万封/小时, 比普通的反垃圾邮件网关快10倍以上。

2. 彻底查杀隐藏在zip/rar/tar.gz等压缩文件中的病毒, 深度可达20层。

3. 发现病毒邮件后, 金笛邮件系统可以直接将带毒邮件投递到用户病毒邮件箱,同时投递到管理员。

4. 病毒特征库的升级频率可调, 每次升级都有详细的log日志, 自动发送到管理员的邮箱. log日志可以设定大小,自动回滚使用。

5. 金笛邮件网关内置的杀毒引擎支持多线程(最多10线程),支持15层目录深度搜索扫描, 支持防病毒系统自检功能,开启自检功能后,防毒系统每隔1小时会自检一次。

6. 后续版本将支持病毒邮件短信SMS报警通知功能。

7. 病毒特征库升级通过由升级服务进程自动完成,升级时通过DNS轮寻,连接最快的升级服务器. 1次升级失败时,系统自动重试9次。

二、防垃圾邮件功能特点:4层垃圾邮件防护

第一层: 网络层采用IP阻断和动态黑名单
  在网络层,金笛邮件系统可以设置屏蔽任何一个IP,一个网段;也可以屏蔽任何一个发信人,一个域。动态黑名单采用黑洞技术,可以实时获取反垃圾邮件列表。金笛邮件网关支持由国际反垃圾邮件组织提供的实时黑名单RBL。

第二层: smtp协议会话格式检查,DNS反向解析
  在这一层,金笛邮件系统在SMTP协议的每个阶段进行判断:MAIL/FROM/RCPT/DATA,对于不符合RFC规范的邮件,都作为垃圾邮件处理. 对于不能正确反向解析的,也作为垃圾邮件处理。

第三层: 动态白名单
  如果某一个发信人发送的邮件均为正常邮件,积累到一定数量后,系统自动将发信人加入白名单列表。

第四层: 基于Bayes算法的内容过滤
  通过内置的贝叶斯(Bayes)库对进入邮件系统的每封邮件的头部和正文进行分析,得出阀值,阀值低于5,则为正常邮件;如果超过5,金笛邮件网关判定为垃圾邮件,会在主题增加SPAM***字样;如果阀值超过7,系统会自动归置垃圾邮件;阀值超过9,系统会自动删除. 对于主题带有SPAM标记的邮件,用户可以通过客户端软件或者webmail设置过滤规则转存到一个文件夹,定期检查,确认无误后删除。

TOP

发新话题
  清除 Cookies - 联系我们 - 邮件技术资讯网 - Archiver - WAP - 繁體中文
当前时区 GMT+8, 现在时间是 2008-10-13 00:01

本论坛为非盈利中立机构,论坛所有言论纯属发表者个人意见,与《 邮件技术资讯网》论坛立场无关。内容所涉及的版权和法律相关事宜请参考各自所有者的条款。
如果认定侵犯了您的权利,请联系我们尽快处理。本论坛原创内容请联系本站后再行转载并务必保留我站信息。此声明修改不再另行通知,本论坛保留最终解释权。
*本论坛QQ群:1#群2233231(已满) 2#群2598254(推荐) 3#群15974064(推荐) 4#群14173252(推荐)*
* 建议使用 1024×768 模式查看本论坛 *
Powered by Discuz! 6.1.0