CSDN博客

img goody9807

要做一个像163一样的邮件系统,谁有这方面的资料

发表于2004/10/21 10:10:00  2957人阅读

分类: 发送邮件

系统规格说明  


  一、 系统功能和目标:

随着因特网的不断普及,国内的用户数呈指数级增长。作为因特网最为常用的电子邮件系统越来越受到人们的喜爱,为了满足不断增长的信息交换的需要,各行各业都希望有自己的邮件系统。广东传讯网络信息有限公司自主设计开发了适合中国国情的免费电子邮件系统,用以解决这一日益突出的问题。 CHINATION免费电子邮件系统是专为免费电子邮件服务商、企业集团设计的电子邮件系统。

Chination免费电子邮件系统的设计目标是立足于一个高度集成的、功能强大、技术先进的电子邮件系统。高度集成意味着本系统将把硬盘软件集成在一起。系统是基于LINUX下的,硬盘和软件的集成使得系统具有绝对的安装优势。功能强大意味着系统的实用性,功能的全面性,系统的安全性和可靠性。技术先进意味着将最新版本的LDAP,IMAP,POSTFIX,MYSQL,APACHE和PHP的巧妙结合。

本系统要实现的主要功能有:

1. 用户申请注册功能。用户通过申请可以得到一个自己命名的信箱,容量大小为10M。

2. 用户忘记密码处理功能。用户忘记密码可以通过注册时设置的密码提示问题来重设密码。

3. 用户收邮件功能。它包括SMTP收邮件、POP3取邮件和WWW读邮件三种方式。

4. 用户发邮件功能。它包括SMTP发邮件、WWW直接发送邮件、暗送邮件、抄送邮件、定时发送邮件。

5. 用户信件处理功能。系统初始设置4个文件夹来分类处理信件:收件箱、发件箱、草稿箱和垃圾箱。用户还可以自己建立新的文件夹。信件在各个信箱之间可以相互移动。

6. 用户查找功能。用户可以使用查找功能通过查找信件主题或信件内容来找到自己需要的信件。

7. 用户信箱配置设置。它包括个人资料更改、密码更改、参数设置、POP3服务器设置、过滤器设置、自动转信、定时发信、签名设置。

8. 管理员管理用户和信箱邮件功能。包括输入(增删改)、查询、统计、报表。系统性能参数设置。

9. 广播功能。它用于公司定期向一定的用户发送信息,由于一般的用户数有一定数量,所以必须用数据库管。

二、 可行性分析

1. 技术可行性

本软件拟决定最终在分布式系统上来运行。硬件方面,由于广东传讯网络信息有限公司是国外多家公司并行处理产品的代理商,而且自己本身拥有ALPHA机等先进设备,所以有足够能力开发出先进的电子邮件系统。软件方面,我们拟采用以下几种软件:

1) 操作系统用LINUX。Linux作为一个优秀的网络操作系统,它的发行版本中集成了大量的网络应用软件,如Web服务器(apache)、Ftp服务器(wu-ftp)、邮件服务器(sendmail+imap4)、SQL数据库(postgresql)等,可以快速的构建Intranet环境,并且也有精致的邮件收发程序(metamail)和强大的Web服务器端开发工具(PHP4)。当你配置好sendmail并激活imapd后,你的Linux用户都可以使用Outlook等客户端软件进行邮件收发,只要通过将它们集中进行应用,便可以实现一个简单的Webmail服务器的功能。但是随着自由软件的不断开发,要构架一个好的电子邮件系统,就面临着软件选择是否适当、性能是否比别人好的问题。下面列出我们所使用的软件。

2)本系统内壳软件用imap。有几种方法可以构造电子邮件系统的内壳:共享文件系统的策略,基于局域网的专用协议,X.400P7协议和因特网消息存取协议。而基于INTERNET的协议主要有: POP (Post Office Protocol), DMSP (Distributed Mail System Protocol), 和IMAP (Internet Message Access Protocol).POP是最原始,最为人们所知的一种。DMSP仅局限于一个简单应用——PCMAIL,它的优点主要在于对脱机状态操作的支持。IMAP不但继承了POP和DMSP的优点,而且超越了他们的缺点,提供了三种状态下对远程信箱的访问:在线、不连接和脱机状态。在脱机状态,邮件可以发送到一个共享的服务器,但是邮件客户并不是马上全部把它们COPY过去之后在服务器上删掉它们,而是处于一种客户——服务器交互的模式,客户可以询问服务器有关的信头、正文或一些状态标志(如“DELETE”,“ANSWER”等)。IMAP可以以本地的方式操作远程信箱。

IMAP的优点主要在于:它可以操作持续的消息状态标志;它可以存取消息而且随时访问它们;它可以访问和管理多个信箱;它支持对共享信箱的并发访问和修改;适合存取非EMAIL数据,如网络杂志和资料;它能以最短连接时间和最小空间开销来使用脱机范式;它有用来管理用户配置的伴随协议;它允许在线性能优化,特别是在低速连接的情况下。

3) 用OPENLDAP作为目录服务器软件。LDAP(Lightweight Directory Acess Protocol)是目录服务在TCP/IP上的实现(RFC 1777 V2版和RFC 2251 V3版)。它是对X500的目录协议的移植,但是简化了实现方法,所以称为轻量级的目录服务。在LDAP中目录是按照树型结构组织,目录由条目(Entry)组成,条目相当于关系数据库中表的记录;条目是具有区别名DN(Distinguished Name)的属性(Attribute)集合,DN相当于关系数据库表中的关键字(Primary Key);属性由类型(Type)和多个值(Values)组成,相当于关系数据库中的域(Field)由域名和数据类型组成,只是为了方便检索的需要,LDAP中的Type可以有多个Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据库。LDAP协议集还规定了DN的命名方法、存取控制方法、搜索格式、复制方法、URL格式、开发接口等。Linux支持的LDAP服务器一般有Michigan大学开发的免费软件包和Openldap组织基于Michigan大学的开发包提供的Openldap免费软件发行包,其中Openldap发行包安装配置更加简单。

4) WEB服务器端用APACHE+PHP4+MYSQL。自由软件开放原代码的好处就不用多说了

5) 件系统软件用POSTFIX。由于电子邮件是一种非常传统的工具,因此有非常多的软件可以用来达到这个目的,这里面包括从古老的uucp邮件到非常庞大的商业群件系统,如Lotus Domino Server,但使用最广泛的还是一种自由软件──sendmail,它支撑了当前Internet邮件系统的主体。无论从使用的广泛程度,还是从代码的复杂程度来讲,sendmail都是一个非常优秀的软件。如果使用它来构建网站的电子邮件系统,基本上不必费心,因为几乎所有的Unix的缺省配置中都内置这个软件,只需要设置好操作系统,它就能立即运转起来。然而,Internet用户的要求更为苛刻,纷纷指出sendmail中包含的各个不足之处。第一个重要的缺点是它的安全性较差这是因为当其作者Eric Allman最初开始写作这个软件的时候,Internet的用户还很少,因而安全性并不没有得到大家的重视。此外,也是由于其早期的Internet用户数量及邮件数量都相当小,Sendmail的系统结构并不适合较大的负载,对于高负载的邮件系统,需要对Sendmail进行复杂的调整。另一个问题是它的设置相当复杂,对于使用缺省设置来收发电子邮件,问题并不存在。当管理员打算进行一些特殊设置,以便利用Sendmail提供的复杂邮件处理能力时,就不得不面对复杂的宏和正则表达式。Postfix同样也是采用了模块化的方式,但与Qmail不同的是,Postfix使用了一个主控进程进行监控。Postfix在很多方面都考虑到了安全问题,它甚至不向root分发电子邮件,以避免以root身份读写文件或启动外部程序。Postfix提供的一些强大的功能主要在于多种数据库表查询方式,例如它支持DB、DBM、passwd文件、正则表达式、MySQL数据库以及LDAP方式的查询,用于支持系统级的别名、虚拟主机等。虽然在Qmail中也能支持这些功能,但没有象Postfix那样统一、简洁。此外,更改Postfix的设置之后,也不需要重新启动整个系统,只需要使用postfix reload就能完全刷新配置,这也避免了丢失邮件的可能性。

6)务器性能优化软件ZEND OPTIMIZER. ZEND OPTIMIZER的工作机理是通过在检查ZEND动态编译器产生的代码的过程中优化它们来加快程序的运行速度。在PHP4的ZEND引擎中ZEND OPTIMIZER的工作是位于ZEND动态编译过程和运行过程的中间。PHP4中的ZEND动态编译器产生代码的速度相当于PHP3产生代码速度的2-10倍。如果一个系统中用了ZEND OPTIMIZER执行速度又会快40%-60%。

以上软件的组合绝对保证了整个系统的安全性、稳定性、可靠性和可扩展性。

2. 济可行性

伴着LINUX的日益风靡,自由软件种类越来越多, 性能越来越好。本系统的开发拟采用自由软件,这不仅保证了系统的技术可行性,还保证了系统的经济可行性。自由软件大大地降低了开发成本,也降低了产品成本。

另一方面,本系统产品化后,其将硬件软件一体化的独到经营思路必能引发经常性收益。

3. 社会可行性

本系统的社会可行性主要体现在以下几方面:

l 自由软件的使用使得在软件方面避免了任何版权、专利权等法律问题的纠缠。

l 本系统软件硬件一体化解决了当前自由软件安装配置难的问题,满足了用户的需要。

l 由于开发成本的降低使得产品价格也会在市场上占据绝对优势。


需求规格说明 

 

一、 任务概述

需求分析工作是软件生存期中重要的一步,也是起决定性的一步。我们试图通过它来全面了解整个系统的软件功能和性能方面的要求,为软件设计打下坚实的基础。该部分的目标主要有:获得当前系统的物理模型,了解当前系统是如何运行的;抽象出当前系统的逻辑模型,对物理模型进行筛选,得到与软件系统有关的部分;建立电子邮件系统的逻辑模型,得出数据流图和数据字典;补充目标系统的逻辑模型,对目标系统的用户界面,至今尚未考虑的细节进行说明。

二、 数据描述

1. 数据库描述

本系统自始至终都是在通过数据库操作,对数据库的性能要求特别高。平均每个操作要访问数据库C1次,每次访问数据库要检索数据记录CN条(N为用户数,C,C1 为访问系数)。所以数据库访问的频率是C1*C*N*M(M表示每秒在线用户的平均数)。数据库中有些表的属性比较多,而且某些表的数据将用来检索用户的邮箱,所以要求数据库的访问能力比较强。本系统的数据库用LINUX 的MYSQL.MySQL是一个小巧灵珑的数据库服务器软件,对于应用系统是非常理想的。除了支持标准的ANSI SQL语句,它还支持多种平台,而在Unix系统上该软件支持多线程运行方式,从而能获得相当好的性能。对于不使用Unix的用户,它可以在Windows NT系统上以系统服务方式运行,或者在Windows 95/98系统上以普通进程方式运行. PHP-MySQL的组合还可以跨平台运行,这意味着可以在Windows上开发,然后在Unix平台上运行。

2. 数据流图

本系统的运行流程主要是在用户和系统之间交互进行。用户分为新用户和已注册用户,因为新用户的注册和已注册用户的流程相对比较独立,所以整个系统的数据流图分两部分。系统的一级流图如下所示:

 

新用户

注册

已注册用户

已注册信息

用户信息
 

 

已注册用户

忘记密码处理

已注册用户

登录

浏览信箱首页

读邮件

发邮件

查找

配置

邮件处理

已登录用户

更改后信箱

原信箱

登录信息

原注册信息

登录信息

新注册信息

原信箱

原信箱

查找内容

原信箱

更改后信箱

更改后信箱

更改后信箱

查找结果

 

 

系统管理

更改后系统

原系统

 

 

3. 数据流条目:

1)数据流名:用户信息

别名:

组成:用户名+姓名+密码+密码提示问题+问题回答+传呼机+传真机+手机号码+性别+出生日期+婚否+最高学历+职业+你的公司名+公司规模+工作状况+公司主页+希望加入的群组+所在省份

来源: 用户输入

去向:注册子系统

2)数据流名:已注册信息

别名:原注册信息

组成:用户名+姓名+密码+密码提示问题+问题回答+传呼机+传真机+手机号码+性别+出生日期+婚否+最高学历+职业+你的公司名+公司规模+工作状况+公司主页+希望加入的群组+所在省份

来源:注册子系统

去向:数据库的用户注册表

3)数据流名:登录信息

组成:用户名+登录密码

来源:用户输入

去向:系统用来检索用户信息

4)数据流名:原信箱

别名:更改后信箱,用户信箱

组成:用户名+收件箱+发件箱+垃圾箱+草稿箱+自定义文件夹+信箱配置

来源:IMAP内核

去向:各子处理模块

4. 加工说明:

1)加工名:注册

输入数据:用户信息

输出数据:已注册信息

加工逻辑:根据用户输入的用户信息在数据库中作相应的记录,并给用户新建一个信箱。

2)加工名:忘记密码

输入数据:原注册信息

输出数据:新注册信息

加工逻辑:用户输入已注册的用户名和密码提示问题的答案,系统验证后让用户修改密码,系统存储新密码。

3)加工名:邮件处理

输入数据:原用户信箱

输出数据:更改后的信箱

加工逻辑:邮件处理子系统按照用户的要求对原用户信箱进行增加、删除文件夹操作,信件移动、删除操作

4)加工名:读邮件

输入数据:原用户信箱

输出数据:更改后的信箱

加工逻辑:用户在原信箱中阅读邮件,并可对邮件进行回复、删除、存地址、拒收等操作。

5)加工名:登录

输入数据:用户输入登录信息

输出数据:进入信箱首页

加工逻辑:将用户输入的登录信息和数据库比较,如果是已注册用户则调用信箱首页,否则根据错误给出相应提示。

6)加工名:浏览信箱首页

输入数据:登录模块

输出数据:信箱内各子模块

加工逻辑:按照登录信息检索出用户的邮箱,并按一定的格式进行统计和显示。

7)加工名:发邮件

输入数据:原用户信箱

输出数据:更改后信箱

加工逻辑:按用户的要求对原用户信箱 进行操作,发邮件、保存信件、暗送、抄送等

8)加工名:查找

输入数据:查找内容

输出数据:查找结果

加工逻辑:根据查找内容在所有信件的主题中或信件找出所有的符合要求的信件。

9)加工名:配置

输入数据:原用户信箱

输出数据:更改后的用户信箱

加工逻辑:根据用户的要求对用户的信箱配置进行修改。

 

三、功能需求:

1.功能划分

邮箱申请功能

忘记密码处理功能

邮箱管理功能

系统管理功能

文件夹管理功能

读信件功能

电子邮件系统

信件收发功能

地址本,配置功能

 


 

2.功能描述

1.用户申请注册功能。用户通过申请可以得到一个自己命名的信箱,容量大小为10M。

2.用户忘记密码处理功能。用户忘记密码可以通过注册时设置的密码提示问题来重设密码。

3.用户收邮件功能。它包括SMTP收邮件、POP3取邮件和WWW读邮件三种方式。

4.用户发邮件功能。它包括SMTP发邮件、WWW直接发送邮件、暗送邮件、抄送邮件、定时发送邮件。

5. 户信件处理功能。系统初始设置4个文件夹来分类处理信件:收件箱、发件箱、草稿箱和垃圾箱。用户还可以自己建立新的文件夹。信件在各个信箱之间可以相互移动。

6. 用户查找功能。用户可以使用查找功能通过查找信件主题或信件内容来找到自己需要的信件。

7. 用户信箱配置设置。它包括个人资料更改、密码更改、参数设置、POP3服务器设置、过滤器设置、自动转信、定时发信、签名设置。

8. 管理员管理用户和信箱邮件功能。包括输入(增删改)、查询、统计、报表。系统性能参数设置。

9. 广播功能。它用于公司定期向一定的用户发送信息,由于一般的用户数有一定数量,所以必须用数据库管。

四、运行需求

1.用户接口

免费电子邮件系统作为一个面向大众的应用系统,对人机界面要求很高。网页格式必须大众化,争取和一般的邮件系统(如163,21CN等)的格式大致不变,以便于用户能马上掌握系统的操作方法。当然风格上可以有自己的特色。报表的格式要求和一般的报表格式一致,其打印方式采用浏览器打印。

在系统的用户注册和登录以及发送邮件等功能上要充分利用ENTER键,这样可以大大的方便用户,其他操作均采用触发的方式。

2。硬件接口

本系统也可采用分布式处理的方式,故要求到多台服务器的并行连接。

3,软件接口

本系统所用到的软件产品列出如下:

操作系统:REDHAT LINUX 6.2

邮件用户认证系统:openldap-1.2.9-5,pam-0.72-6

IMAP,POP3邮箱系统:cyrus-imapd-1.6.22, cyrus-sasl-1.5.21

邮件发送系统:postfix-19991231-pl06

数据库系统:MySQL-3.22.32-1

Web发布系统:Apache-1.3.12, PHP-4.0

 

五、属性需求

在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,重启动速度快,以确保软件可使用性好。

在安全保密性方面,系统需设置防火墙。另外,还要求系统的可扩展性、可维护性、可移植性良好。 



概要设计说明

 

一、任务概述

本阶段的主要任务是根据需求规格说明确定设计目标,以及它们的优先顺序,并根据目标确定最适合的设计方法,制定各种规范。将系统按功能划分成模块的层次结构。确定每个模块的功能,建立与已确定的软件需求的对应关系。确定模块之间的调用关系,确定模块之间的接口,即模块之间传递的消息。设计好接口的信息结构,评估模块划分的质量及导出模块结构的规则。完成数据库设计,避免数据大量冗余。

二、总体设计

1.处理流程

作为运行前奏,用户先得进行注册或忘记密码处理。系统从用户输入用户名和密码登录开始正式进入邮箱。处理流程图如(图二)所示。图中有一些传递的消息因为版幅和简单的关系没有直接标出来。

2.软件结构

本系统的模块设计在考虑具体情况的前提下,遵循高内聚低藕合的原则,整个系统一共分九个模块。其中一级子系统一共有3个,二子系统一共有5个。图中有一些传递的消息因为版幅和简单的关系没有直接标出来。将在后面各个模块的详述中给出来!

登录

忘记密码处理

显示信箱消息

收邮件

文件夹处理

注册

发邮件

地址管理

配置

 


图一 模块结构图 (缺)

 

忘记密码处理

登录

浏览信箱首页

读邮件

发邮件

查找

配置

邮件处理

更改后信箱

LDAP

登录信息

DB1

登录信息

原信箱

原信箱

查找内容

原信箱

更改后信箱

更改后信箱

更改后信箱

查找结果

新用户注册

新注册信息

IMAP

IMAP

浏览信箱首页

登录

退出

 


 

图二 处理流程图

 

三、运行设计

1.运行模块的组合

由上面的模块结构图可以看出只有“登录”和“显示信箱消息”两个模块处对外界的不同控制行为会引起不同的模块进行反映:

登录模块设置两个连接“申请邮箱”和“忘记密码”,用户单击“申请密码”之后就进入注册模块;单击“忘记密码”也就直接调用忘记密码处理模块。用户输入密码和口令执行登录操作之后,登录模块以用户名和密码作为参数调用显示信箱信息模块。

显示信箱消息模块设置连接调用文件夹管理,发邮件,收邮件,配置,地址管理等模块,传递的参数均为用户名和密码。

2.运行控制方式采用超级连接触发的方式。

四、数据库设计

本系统中主要涉及用户,邮箱,信件三个实体。它们之间的联系主要是用户使用信箱,信箱里有信件,用户要收发信件。它们用E——R图表示如下:

用户

信件

信箱

定时发送

送给

存往

包含

属于

设置

 


 

根据E——R图我们设置表MIAL—USER来描述信件到用户的联系,即用户信箱的信件;设置表USER-AUTOSEND来描述用户到信件的联系,即用户定时发送信件;设置表USER-ENV-VAR来描述用户到信箱的联系,即用户设置信箱的外观;设置表USER-EREG来描述信箱本身的属性;设置表USER-STATUS来描述用户自身的属性。各个表的字段名和定义如下所示:

mail_user

 

Field Type Null Key Default Extra

+---------------+--------------+------+-----+---------+----------------+

id int(4) PRI 0 auto_increment

usr varchar(50) MUL

pwd varchar(100) YES NULL

folder_count int(4) 4

folder varchar(255) rev;

address_count int(2) 0

address_name text YES NULL

address_nick text YES NULL

address_email text YES NULL

autoturn text YES NULL

filteraddr text YES NULL

 

user_autosend

Field Type Null Key Default Extra

+----------+--------+------+-----+---------+----------------+

id int(4) PRI 0 auto_increment

sendtime int(6) MUL 0

msgto text YES NULL

subject text YES NULL

body text YES NULL

header text YES NULL

 

user_env_var

Field Type Null Key Default Extra

+-----------+-------------+------+-----+-----------+----------------+

id int(4) PRI 0 auto_increment

usr varchar(50) MUL

menu_bg varchar(10) #009900

menu_fg varchar(10) #FFFFFF

main_bg varchar(10) #FFFFFF

main_fg1 varchar(10) #FFFFFF

main_fg2 varchar(10) #FF0000

main_fg3 varchar(10) darkgreen

head_bg varchar(10) #c0c0c0

alt_bg varchar(10) #009900

alt_fg varchar(10) #FFFFFF

button_fg varchar(10) darkgreen

+-----------+-------------+------+-----+-----------+----------------+

 

user_ereg

Field Type Null Key Default Extra

+-----------+--------------+------+-----+---------+----------------+

id int(4) PRI 0 auto_increment

usr varchar(50) MUL

headshow int(1) 0

pagemax int(2) 20

reply int(1) 0

replyhead varchar(8) Re:

filterHz int(1) 0

maxmail int(3) 2048

mailtrun int(1) 0

deleteopt int(1) 0

poptime int(1) 90

popflag int(1) 0

popusr varchar(200) YES NULL

poppwd varchar(200) YES NULL

autosend int(1) 0

autoturn int(1) 0

+-----------+--------------+------+-----+---------+----------------+

 

 

user_status

Field Type Null Key Default Extra

+------------+-----------------+----------+----------+---------------------+----------------+

id int(4) PRI 0 auto_increment

usr varchar(50)

name varchar(100) YES NULL

pager varchar(10) YES NULL

pagerno varchar(20) YES NULL

fax varchar(50) YES NULL

mobil varchar(50) YES NULL

sex varchar(6) YES NULL

brithday int(4) YES NULL

education varchar(20) YES NULL

marry varchar(20) YES NULL

job varchar(20) YES NULL

potision varchar(30) YES NULL

company varchar(200) YES NULL

cmodel varchar(20) YES NULL

cpage varchar(100) YES NULL

addon varchar(100) YES NULL

stat varchar(20) YES NULL

adate int(4) MUL 0

fpask varchar(100) Forget my password!

fpans varchar(100) yes

mymark varchar(200) YES NULL

+--------------+--------------------+-------------+-----------+---------------------+----------------+

 

五、系统出错处理

1.出错信息:

本系统中可能出错的情况:

1)登录时用户名和密码出错,根据组合计算有四种情况。

2)注册和定时发送的时间日期输入出错。

3)发送信件地址出错。

4)操作系列的顺序错。

 

2.出错处理方法及补救措施

1)根据出错的种类提示该申请邮箱或做忘记密码处理重新输入

2)提示重输。

3)系统返回一个名为UNDELIVERED MAIL 的邮件通知用户。

4)系统提示正确的操作序列。

六、模块设计说明

整个系统包括九个模块:登录,申请邮箱,忘记密码,显示信箱信息,文件夹处理,收邮件,发邮件,配置,地址管理。以下是九个模块的设计说明。

阅读全文
0 0

相关文章推荐

img
取 消
img