• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

使用PHP开发qmail邮件服务器管理系统

发布: 2007-7-01 15:06 | 作者: admin | 来源: | 查看: 14次 | 进入软件测试论坛讨论

领测软件测试网 电子邮件在网络中占有很重要的地位。目前,在企业中运行的邮件服务器均用各自独立的管理系统来实现账号创建、口令修改、邮箱扩容、删除邮箱等功能。当邮箱用户达到一定数量时,邮件管理员的日常维护工作显得极为繁重,这就需要将一部分管理任务(如账号申请)实现自动化处理;同时将一部分任务(如口令修改)由多个分组管理员来负责,从而使邮件管理员从繁琐的维护工作中解脱出来,真正对邮件服务器起到监管作用。

  邮件服务器及开发环境的选择

  目前很多邮件服务器不提供开发接口,因此在企业内部实现开发邮件管理系统的首要问题是,寻找一种能够与开发语言相结合的开放式邮件系统。

  由于对稳定性要求很高,因此大型电子邮件系统一般都使用Unix作为服务器的操作系统。例如,Hotmail使用的是FreeBSD和Solaris系统。

  Linux自带的邮件由于在系统结构上存在一定缺陷,难以承受大用户量的访问。qmail是GNU下一款著名的自由软件,是新一代Unix邮件系统,支持Maildir存储方式。它把每个邮件作为一个单独的文件保存在用户个人的邮件目录下。qmail支持虚拟域(Virtual Domain)和虚拟用户(Virtual User)。当前国内流行的免费电子邮件系统大都采用qmail作为基本服务器软件,提供多级目录以支持较大的用户数。

  从开发的角度看,PHP+Linux的开发模式已被许多开发人员采用。利用PHP来调用qmail提供的控制程序,实现对邮件系统的各种管理工作。为实现对大量用户的有效控制,还可引入数据库管理。本文将介绍一个PHP +Oracle+qmail+Linux的开发实例。

  总体设计

  整个系统分为邮箱管理和邮件收发两部分。申请邮箱时,先填写一些必要的信息,然后系统会自动地创建邮箱并允许用户立即使用。当用户忘记密码后,可采用目前互联网的通用做法,通过回答用户自定义的问题来修改邮箱密码。出于安全考虑,在用户三次回答错问题后,系统将该账号的“修复邮箱密码”功能锁定30分钟。

  邮件管理依据不同的需求,将用户权限分为以下3种级别:

  ◆ 普通用户 能够在浏览器中收发电子邮件、修改邮箱密码、修改自定义问题和答案,并进行邮箱的查询。

  ◆ 分组管理员 除拥有普通用户的功能外,可以修改本组内所有账号的密码,解除本科室账号的“修复邮箱密码”功能锁定。

  ◆ 邮箱管理员 可以修改全部邮箱口令、删除邮箱、修改邮箱容量、查看邮箱的申请情况,解除全部账号的“修复邮箱密码”功能锁定。

  邮件的收发采用PHP提供的标准POP3函数,可获得邮件清单、查看邮件的详细内容、发送带多个附件的邮件,并提供邮件删除、回复等功能。

  数据库主要由以下几个表组成:

  ◆ email_info 存放所有电子邮箱的相关信息,如账号、人员姓名、科室、联系电话、自定义问题、自定义问题的答案、锁定标记等。

  ◆ email_register_info 存放用户申请电子邮件时填写的信息,如账号、密码、申请时间、科室、申请的当前步骤(主要是为了防止用户恶意跳过某些步骤而设定的)。

  ◆ email_change_log 记录用户电子邮箱的变化情况,以备日后需要时检查。主要记录有邮件的申请时间、删除时间、邮箱账号、对邮箱操作的人员姓名、IP地址等信息。

  技术难点分析

  PHP调用qmail的控制程序

  在Linux环境中,每一个程序都有相应的用户和组的概念。PHP程序在服务器中执行时,默认的用户是nobody,没有权利执行qmail的控制程序。在Linux里面有个sudo命令,允许其它用户以root身份执行一些命令。修改/etc/sudoers文件,增加以下部分:

  
  nobody ALL=/var/vpopmail/bin/vadduser (增加用户)
  nobody ALL=/var/vpopmail/bin/vdeluser (删除用户)
  nobody ALL=/var/vpopmail/bin/vpasswd (修改口令)
  nobody ALL=/var/vpopmail/bin/vchkpw (检查用户口令是否正确)
  nobody ALL=/var/vpopmail/bin/vsetuserquota (修改邮箱最大容量)
  nobody ALL=/var/vpopmail/bin/vmoduser (修改用户信息)
  root ALL=(ALL) ALL

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网