专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Linux » linux线程实现:基于Linux的Webmail实现 »正文

linux线程实现:基于Linux的Webmail实现

来源: 发布时间:星期四, 2009年2月12日 浏览:38次 评论:0



  摘要:本文是通过应用Linux系统集成网络服务和应用软件Software快速实现基于Web电 子邮件系统作者只是普通Linux爱好者尝试将所学到点Linux知识进行综合应用希望对大家有所启发
  
    免费Webmail是目前ISP普遍提供项服务它最大优点就是方便用户只需要通过浏览器就能够完成邮箱申请、发送邮件、接收邮件等功能;同样由于Webmail出现大大提高了ISP站点访问数量提高了站点知名度所以是个两全其美好东西不过大容量Webmail由于其系统复杂性和可靠性要求价格比较昂贵不太适合 Intranet环境需要
    Linux作为个优秀网络操作系统发行版本中集成了大量网络应用软件Software如Web(apache)、Ftp服务器(wu-ftp)、邮件服务器(sendmail+imap4)、SQL 数据库(postgresql)等可以快速构建Intranet环境并且也有精致邮件收发 (metamail)和强大Web服务器端开发工具(PHP3)当你配置好sendmail并激活imapd 后Linux用户都可以使用Outlook等客户端软件Software进行邮件收发所以通过将它们集 中进行应用便可以实现个简单Webmail服务器功能
  
    、Webmail主要功能和我们使用思路方法是:
    1、邮箱申请:使用PHP3中exec以root身份执行useradd和edquota命令建立系统用户并设置用户磁盘限额并将用户保存到postgresql用户表中申请到邮件地址将是username@do形式如果你只希望提供用户通过Web申请邮箱功能让他们使用Outlook的类邮件客户进行邮件处理那么目就已经达到了
    2、编辑邮件:使用HTMLform构建编辑域并利用IE4和Netscape 3支持“file”类型提供邮件附件上传功能
    3、发送邮件:使用PHP3中exec执行metasend提供发送功能实现对邮件编码和发送
    4、接收邮件:使用PHP3中提供强大imap支持集实现邮件数据接收和解码工作以及收件箱管理并将邮件附件拆分成临时文件放入ftpd匿名访问目录中并利用附件描述信息生成超链方便客户端
    5、帐号管理:使用PHP3中exec执行passwd和deluser命令实现用户口令更改和邮箱删除功能
  
     2、以下分别介绍说明实现上述功能具体思路方法和注意事项
    1、支持imap和postgresqlPHP3模块编译我们使用RedHat 5.1中没有包含PHP3支持并且PHP3执行包都没有预先编译imap支持要充分使用这优秀Web服务器端开发工具最好到wwwphp.net 上源实际上它非常精致总共不到2M作为个具有150,000个网站WebSite用户使用认可(PHP3帮助文档中统计数据)并在Linux世界中获奖软件Software源代码应该 被所有发行商所选择由于PHP3imap支持需要c-client库和相关头文件所以应先解开imap4包进行编译注意编译imap4时使用make lnx生成Makefile 文件中可能不能发现crypt你只需要在连接库选项中加上lcrypt即可般在按照源介绍说明文件编译时出错多是Makefile文件或是lib目录和本地目录不匹配
    2、upload支持附件(attachment)是邮件个重要组成部分要把客户端文件上载到服务器端进行处理需要客户端浏览器和服务器端都具有支持在PHP3帮助文档中有关 于upload处理介绍说明和例子并且IE4和Netscape都已经很好支持这功能可惜我们没有在任何有关HTML书籍中看到类似介绍
    3、metasend介绍Linux环境下般使用邮件收发是mail但它不支持MIME编码并且不能设置发送地址不适合Webmail需要metasend是个支持MIME标准邮件发送并且可以设置发送端用户地址和编码方式非常适合做shell命令它包含在 metamail包中只有15K直接使用它作为后端邮件发送实现MIME编码可有效降低复杂度由于PHP3可以快速处理form数据并利用exec系统外部所以有效利用Linux提供大量应用软件Software配合灵活输入输出重定向作为CGI不失为种简便思路方法并且这也是Linux系统中大量界面或是命令行处理程 序强项
    4、邮件附件由于浏览器限制了对本地文件系统写入功能要下载文件最自然思路方法便是通过浏览器直接使用FTP匿名访问由于Linux系统集成了wu-ftpd所以把邮件附件以临时文件方式放入ftpd匿名访问子目录中并只允许nobody进行写而服务器端在显示邮件信息时利用邮件头中附件描述信息生成超链能够简单而自然解决这问题
    5、PHP3中imap和postgresql支持介绍PHP3实际是Web服务器和大量C库中介层并且对处理form提交数据能力进行了扩充另外还具有和C相似风格所以能够简捷高效实现多种复杂功能PHP3含有38个对imap提供相关支持而这些是建立在对imap4标准客户开发库支持基础上其功能和效率是完全可以信赖和保证利用这些可以快速地连接imapd、验证地址、接收邮件、拆分邮件、解码邮件、管理邮箱等
    我们把postgresql数据库主要用于验证用户和跟踪用户产生临时文件上功能比较简单但由于有了基于SQL数据库在处理并发访问上便不用担心冲突PHP3支持许多数据库系统当然需要有它们基于LinuxC开发库和头文件postgresql作为集成在发行包中面向对象SQL数据库并且其psql客户非常友好自然成为首选PHP3提供32个postgresql支持且有丰富文档和例子要实现Web数据库不是难事主要注意在每个表中对nobody进行授权PHP3采用数据库存取方式几乎没有使用ODBC而是直接利用各数据库提供开发库不过它使用了相近格式同样比较方便PHP3文档中有些地方出现返回值类型错问题只要在使用前稍微测试以下就可以避免
    6、sendmail配置sendmail是广泛使用邮件传输系统其历史悠久、功能强大但是配置比较复杂不过可以利用conf启动其基本功能注意在多邮件服务器情况下DNS MX记录起非常关键作用注意在你DNS中为每个域都指定个明确MX记录在使用conf配置sendmail时选择不立即传送邮件和较短队列处理时间以减小客户端由于输入邮件地址而出现等待另外直接编辑/etc/rc.d/init.d/sendmail 设置较短超时时间有利于提高Intranet环境下效率实际上深入了解sendmail 提供功能是建立强大邮件系统好办法
    7、考虑
    由于我们Webmail系统用户是Linux系统用户为确保不能赋予其直接登录权限即指定个不存在shell由于在创建用户、修改口令、删除帐号时都使用了root帐号所以对其口令文件需要隐藏最好取消telnet 服务或者设置信任主机范围对于系统原有帐号可以不作为webmail 用户帐号避免由于Webmail出错导致关键信息丢失
    由于邮件系统是面向多用户所以必须提供磁盘限额控制并缩短超限时间 在上传文件时注意设置其文件传输最大长度同时为了防止用户中途退出 而不能删除生成临时文件可以为root设置cron任务对过期临时文件进行 处理
    禁用nobody和ftp帐号(缺省)
    8、性能优化
    如果发现你Webmail处于重载情况你可以把集成数据库服务 (postgresql)、域名服务器(named)和Web服务器分离它们都是可以通过网络进行访问
    同样你可以把用户分散到多个邮件服务器上满足用户需要毕竟Linux是个要求较低且非常廉价系统
    另外你可以打开metasend参考直接用PHP3实现邮件直接发送避免SHELL应该能够提高性能同样可以使用Mysql替换postgresql
  
    以上简单介绍了我们Webmail实现思路方法和注意事项这仅仅是我们在对Linux系统了解得非常肤浅情况下简单解决方案并没有从系统性能角度进行周密考虑并不能代表Linux作为个优秀网络系统真正实力我们只是从简捷和方便性上进行了研究我们感觉到快速实现其基本功能有利于我们更好学习和使用Linux不过我们还是深深地体会到Linux系统和它集成大量软件Software魅力和实力同样深深地体会到它给我们自己在研究和解决问题时带来变化它给了我们更多选择机会它给我们已经远远超过了我们所期望
  
  
  
  
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: