毕业设计论文-基于qmail和vpopmail的邮件计费系统的设计与实现内容摘要:
供良好的互操作性。 4 便于开发。 源代码公开给二次开发提供了良好的基础,同时 Linux 也拥有代理的开发工具 和平台。 在介绍 qmail 的特点之前,先介绍下什么是 qmail. qmail 是一个因特网邮件传送代理(简写为 MTA),它运行在 linux/Unix 兼容系统下,是一个直接代东南大学 毕业设计 基于 qmail 和 vpopmail 的邮件计费系统的设计与实现 9 替 UNIX 下 Sendmail 软件的邮件传送程序。 qmail 使用 SMTP 协议 与其它系统上的 MTA 交换邮件。 作为 Linux 下面主流的邮件系统内核 [19],大量著名的商业邮件系统都是在 Qmail 内核下开发, 比如 Hotmail 等。 Qmail 具有安装方便、安全性高、邮件结构合理、支持 SMTP 服务、队列管理、邮件反弹、基于域名的邮件路由、 SMTP 传输、转发和邮件列表、本地 (邮件 )传送、 POP3 服务等强大的功能。 它已经逐渐替代传统的 Sendmail 成为 linux 下邮件系统内核的主流选择。 Qmail 具有以下特点 [18]: 1 功能:能够结合以前的 mail 系统如 sendmail 的长处,系统设计规范,模块化程度高。 它支持多种和 Email 相关的国际标准,如 SMTP、 ESMTP、 POP3 等,与现有的其它 Email 系统互操作 性良好。 Qmail 在设计时依据和 Email 系统有关的国际标准,采用了分层的模块化的设计思路。 整个系统是一个树形的结构,由核心子系统、本地传送验证子系统、信件转发子系统、信件队列管理子系统和用户管理子系统等组成。 其核心结构如图 : 图 qmail 的核心进程结构 2 性能:以前的 mail 系统都是单邮件提交队列,因此存在单点故障问题。 如果有意外情况发生,容易造成堵塞,产生邮件的排队,形成功能瓶颈,导致邮路不畅。 Qmail 允许多个并行的递交队列,在缺省情况下是有 20 个提交队列,并且可以为 每 个队列制定不 同的处理策略,在多 CPU 的情况下,虚拟提高更为显著。 东南大学 毕业设计 基于 qmail 和 vpopmail 的邮件计费系统的设计与实现 10 3 安全: Sendmail 所诞生的时代是个网络的黄金时代,对网络安全问题考虑较少。 Qmail 从设计的一开始就把安全问题放在显著位置考虑。 模块化的设计使安全机制可以方便地加入和更新。 支持 ESMTP,在发信时也需要进行身份认证。 4 易管理和可维护性:配置文件与模块相对应,结构连贯,利于管理。 系统模块设计 系统共分为三层:客户端、服务器、数据库。 客户端可采用 outlook、 foxmail或 Web 浏览器,中间层为服务器层,需要 DNS 服务器、 Web 服务 器、 qmail 服务器,这些服务器软件可由一台服务器硬件完成,随着用户的扩展,可把这些服务分布到网络上不同的服务器硬件上。 数据库采用 mysql 数据库。 如图 所示: 图 邮件服务系统总体结构 用户接受邮件服务流程 用户通过网上邮件注册、开通邮件服务后可以进行收发邮件功能,并且包括身份认证功能,以下便是用户接受邮件服务流程,如图 所示 : 东南大学 毕业设计 基于 qmail 和 vpopmail 的邮件计费系统的设计与实现 11 图 用户接受邮件服务流程 邮件处理过程 当接受到一个信件后 ,由 QMaillspawn 控制邮件投递机制;它首先察 看QMailusers 机制( QMailusers 是一个给用户指派 assign地址的系统),若收信人地址没有定义在 assign 文件中,则激活 QMailgetpw程序,然后调用 QMaillocal来实现本地邮件投递。 QMaillocal 首先试着投递邮件到 localpart@host 的地址,其中 localpart 为本地用户名。 若没有找到,则进一步察看 /var/QMail/alias 中定义的别名,若存在对应的别名则投递邮件到别名对应的用户目录下,否则退回邮件。 若按照 QMailusers 机制在 assign 中找到对应于邮件目的地址的规则,则从users/assign 得到相关信息,然后进行标准的 .QMail 文件操作。 一般来说, .QMail文件被用来完成邮件转发、别名或调用其他程序如 ezmlm 等进行处理。 若没有找到匹配,则 QMaillocal 查找 .QMaildefault 文件,这是 QMaillocal 邮件投递机制中最后一步。 VPOPmail 利用该文件来调激活 vdelivermail 程序,该程序以两个参数被调用,第一个当前没有作用,主要是用作向后兼容的;第二个参数是用来在一个虚拟域用户没有被找到时 的缺省投递 ,一般来说,缺省投递可以是将邮件投递到某个目录或某个邮件地址或返回无此用户的返回信件。 为 Qmail 增加 smtp 用户认证功能 QMail 系统安装完成后,其 smtp 是允许任何人匿名发送邮件的。 但是,这一点经常会被恶意的垃圾邮件发送者利用。 因此,为了避免这种问题发生,我们为 qmail 安装并配置 smtp 发信密码认证功能。 这里先介绍下什么事 smtp 认证功能,首先 smtp 协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种提供可靠且有效电子邮件传 输的东南大学 毕业设计 基于 qmail 和 vpopmail 的邮件计费系统的设计与实现 12 协议。 SMTP 是建立在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供与来信有关的通知。 SMTP 目前已是事实上的在Inter 传输 EMai 的标准,是一个相对简单的基于文本的协议。 在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确定是存在的),然后消息文本就传输了。 可以很简单地通过 Tel 程序来测试一个 SMTP服务器, SMTP 使用 TCP 端口 25。 要为一个给定的域名决定一个 SMTP 服务器,需要使用 MX(Mail eXchange) DNS。 smtp 下的 relay 规 则也可以理解成转发规则 [7]。 当用户使用 tel 到某一个端口 25( smtp 端口),或者使用类似 outlook 这样的 MUA(用户投递代理)发送邮件时,服务器都会在后端判断是否允许转发(发送)这份邮件,判断的依据是接收方的域名是否在允许之内。 在 Qmail 中,有一个名为 rcpthosts(该文件名源于 RCPT TO 命令 )的配置文件,其决定了是否接受一个邮件。 只有当一个 RCPT TO 命令中的接收者地址的域名存在于 rcpthosts 文件中时,才接受该邮件 ,否则就拒绝该邮件。 若该文件不存在,则所有的邮件将被接受。 当一个邮件服务器不管邮件接收者和邮件接收者是谁,而是对所有邮件进行转发 (relay),则该邮件服务器就被称为开放转发 (open relay)的。 当 qmail 服务器没有 rcpthosts 时,其是开放转发的。 设置自己服务器为非 open relay 的最简单的办法就是将邮件服务器的所有域名 (若 DNS 的 MX 记录指向该机器,也应该包括该域名。 )都存入 rcphosts 中。 但是要想实现 smtp 用户漫游功能,也就是任何网络的合法用户都能发信,仅使用 rcphosts 就很难操作了,因为不可能每一个用户连接进来就修改一次rcphosts,使之包括发信人域名和 ip,再重起 qmail。 显然,这种方法很不现实。 qmailsmtpd 支持一种有选择性的忽略 rcpthosts 文件的方法:若 qmailsmtpd的环境变量 RELAYCLIENT 被设置,则 rcpthost 文件将被忽略, relay 将被允许。 但是如何识别一个邮件发送者是否是自己的客户呢。 qmail 并没有采用密码认证的方法,而是判断发送邮件者的源 IP 地址,若该 IP 地址属于本地网络,则认为该发送者为自己的客户。 如果要实现 SMTP 认证后的 relay ,不需要对任何IP 进行预先设定,所 以默认规则设置成 只对本服务器 relay。 tcpserver 的配置文件是 /etc/,该文件定义了是否对某个网络设置RELAYCLIENT 环境变量。 例如,本地网络是地址为 ,则 的内容应该设置如下: :allow,RELAYCLIENT= .:allow,RELAYCLIENT= :allow 这几个规则的含义是指若连接来自 和 则允许,并且为其设置环境变量 RELAYCLIENT,否则允许其他连接,但是不设置 RELAYCLIENT 环境变量。 如果只需要对本机 relay,第二行可以不要。 这样当从其他地方到本地的某一个前面设置的端口 25 连接将会被允许,但是由于没有被设置环境变量,所以其连接将会被 qmailsmptd 所拒绝。 我们可使用 checkpassword 或者 vchkpw 软件包来解决用户发信的验证问题,而密码验证程序原来只使用于 pop3 进程,分别由 root 或 vpopmail 执行,为的是读 shadow 或数据库中的密码,并取出用户的邮件目录。 这些操作 qmaild 都 没有权限去做。 如果 smtp 进程要调用密码验证程序,则必须要使用 setuid 和setgid。 这两个密码验证程序都是带源代码的,本身非常安全,只需要放在安东南大学 毕业设计 基于 qmail 和 vpopmail 的邮件计费系统的设计与实现 13 全的目录里就可以了。 使用虚 拟邮件域构建邮件服务 个人电脑拥有强大的功能,单独的一台能够轻易地完成几台服务器的任务,随着 inter 和邮件系统的成功,我们不得不管理越来越多的邮件域 虚拟邮件域的基本原理是一种在同一个服务器上管理 单独的用户列表的方法,每个虚拟域有他自己的密码文档,自己的缓冲目录和用户化名文档 ,对每个虚拟邮件域, linuxconf 将建立: ◆ /etc /vmail / ◆ /etc /vmail / ◆ /etc /vmail / ◆ /var /spool /vmail / virtual_domain ◆ /vhome /virtual_domain / 这里, virtual_domain 是域名,本次毕设我创建的域名是 Qmail 对于邮件域有 local 和 virtual 的概念。 local 域是实现匹配/etc/passwd 账号;而虚拟域则匹配于罗列在 qmail 的控制文件 virtualdomains的各个域。 Vpopmail 则利用 qmail 的 users/assign 和 virtualdomains 文件。 Vpopmail利用该方法来实现使 qmail 以单一的 vpopmail/vchkpw身份来传输所有的虚拟域的邮件,从而实现将邮件传输到 vpopmail/domains/virtualdomain目录下的不同用户。 数据库设计 数据库的设计主要是 2 个库,一个 qmail 库,一个 vpopmail 库,其中分别都有其向对应的日志,及 qmaillog 表和 dir_control 表,以及延伸到 Lastauth 表,Relay 表, Vlog 表等,下面有图示可以更清晰直观的了解。 如图 : 东南大学 毕业设计 基于 qmail 和 vpopmail 的邮件计费系统的设计与实现 14 数据库的设计 东南大学 毕业设计 基于 qmail 和 vpopmail 的邮件计费系统的设计与实现 15 第三章 系统实现 本章是本次毕设的中心环节,着重介绍了系统的实现过程,包括系统环境的配置、邮件服务器系统的实现、数据库服务器系统的实现等。 软硬件 环境 本次毕设操作系统采用的是 linux 的 ubuntu 版本 [19] 而服务器则主要分为三个服务器,其中 Email 服务器软件采用的 Qmail 软件的改进, 版本。 Web 服务器软件 Apache, DNS 服务器软件 bind9。 DNS服务器的配置 域名服务( Domain Name Service,简称 DNS)是一个系统 ,它负责主机名到 IP 地址的映射和逆映射。 DNS 软件一般是用 Berkeley 的 Inter 命名域( BIND)来实现,本次毕设采用的是 ubuntu 操作系统下的 bind9. DNS 服务器分为三类: 主 DNS 服务器( master 或 primary) 从 DNS 服务器( slave 或 secondary) 缓冲 DNS 服务器( caching) 而本次我是在学校系楼的实验室内完成的,所以我便利用已有的校园网,只需运行一个子域。毕业设计论文-基于qmail和vpopmail的邮件计费系统的设计与实现
相关推荐
调查显示,目前经营者对电子商务中的人工服务重视程度还不够,无法满足网上消费者的需求。 杭州 电子工业学院毕业论文 基于互连网的网上交易和商家商品管理系统 计算机分院 共 37 页 第 8 页 第二章 开发环境及开发工具 开发环境 硬件开发环境 应当具有 586 的配置以上 CPU:塞扬 300 以上,内存: 64M/128M 以上,硬盘: 以上,还需要有网卡等必须的配置。 软件开发环境 操作系统
,这对系统总的布局不利。 但由于船舶上的空间有限,一般情况下,上位机与下 位机的距离都在 15 米以内,所以就不再对通讯模块加装长距离接受器 (中继器 )或者进行 RS232 转 RS485 处理,以降低系统的整体投资。 3. 单片机测控平台 (下位机 ): 单片机测控平台 (下位机 )是整个温度控制系统的重要组成部分,是联系温度信号采集和计算机管理控制中心的枢纽。 一方面
到纸质磁卡,接着再由条形码发展到非接触型收费介质的过程 .智能停车场控制技术的发展的每一个阶段,都是解决 了其上一代 系统 在收费介质上的不足之处, 从而提高了 工作效率和充电系统的准确度,并提高了控制系统的服务功能.现在,采用以非接触式 IC 卡、射频电子标识为代表的非接触式收费介质是智能停车场控制技术目前最明确的发展目标. 本文组织结构 本文一共包含五章内容,具体组织结构安排如下:
强的控制功能和较强的运算能力。 它不仅能完成一般的逻辑运算,也能完成比较复杂的三角函数、指数和 PID 运算。 工作速度比 较快,能带的输入输出模块的数量也比较多,输入和输出模块的种类也比较多。 比如,德国 SIEMENS 公司生产的 S7300 就属于这一类。 高档机:这类可编程序控制器,具有强大的控制功能和强大的运算能力。 它不仅能完成逻辑运算、三角函数运算、指数运算和 PID 运算
(2) 留言表( faq) 留言表包含如下字段:编号( id)、标题( titles)、发布者( who) ,性别( sex) ,籍贯( froms) ,邮箱( ) ,时间( date)、内容( content)、回复( reply)。 如表 24所示: 表 24 faq留言 表 Field Type null key Default Extra id Int not null pri null
8其它金额kgfFloat8旷工费ylbxFloat8养老保险sybxFloat8失业保险ylbxFloat8医疗保险qtkeFloat8其它扣额yfgzFloat8应发工资ykgzFloat8应扣工资sfgzFloat8实发工资bzvarchar50备注4.人事表人事表用来存放员工的详细信息,人事表结构如表4所示。 表4