2023信创独角兽企业100强
全世界各行各业联合起来,internet一定要实现!

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

2004-02-11 eNet&Ciweek

  require("/home/httpd/phplib/qmail.inc");

   $qmail_date = "v1";

   $qmail_email = new register_email ;

   $sql = "select pw_name from ".$qmail_date;

   $qmail_email->query($sql);

   while ($qmail_email->next_record())

   {

   $qmail_user = $qmail_email->f("pw_name");

   $passwd = "12345";

   $str_command = "sudo /var/vpopmail/bin/vadduser " .$qmail_user.;

   $str_command = $str_command."@mail.com".$passwd." -q 10000000 < /home/n";

   @exec($str_command,$str,&$result);

   if ($result != 0 )

   {

   echo "command string is :".$str_command." , command is failed!!!
";

   $error_info = "在执行vadduser命令时失败";

   $address = "From: computer@mail.com\nReply-To: computer@mail.com\n" ;

   mail("webmaster@mail.com", $error_info , $message,$address );

   }

   }

   $qmail_email->free();

  

  其它功能如修改口令、修改邮箱容量、删除邮箱等,在程序实现上非常类似,不做过多阐述。

  E-mail中附件的上传及

  PHP本身提供上载功能,但根据实际情况,可以相应做一些配置和错误处理。用户可以通过修改php.ini文件来扩大上载文件的最大容量。同时,可以通过在网页的Form中增加的方法,将单个附件的大小限制在5MB以内。如果网络速度比较慢,则需要设置网页的timeout变量,否则上载时会因为时间太长而超时。在服务器端的处理程序部分代码如下:   

  if (!file_exists($mail_att)) //判断文件是否上载成功

   { //错误处理及显示

    break ;

   }

   copy ($mail_att, $mail_att.".att") ; //将附件重新改名并拷贝到指定位置。

   for ($i = 1; $i <= $num_attach; $i++)

   {

    $file_name = "send_att".$i; //得到上传文件的原始名称

    $file_tmp = "send_att_tmp".$i; //得到上传文件在服务器中的临时文件名称

    $file_size = "send_att_size".$i; //得到上传文件的大小

    $file_mime = "send_att_mime".$i; //得到上传文件的类型

   }

  在提供附件时,这里没有采用常用做法,即给用户提供文件的URL。因为这种做法理论上并不安全,用户有可能通过链接直接到该文件。相反,从浏览器无法访问到的目录下读出文件提供给用户,就不会遇到类似安全问题。程序核心代码如下:   

  if (file_exists($attach_filepos)) //判断文件是否存在

   {

    $size = filesize($attach_filepos); //得到文件的大小

    //将用户原始文件名提供给用户。

    header("Content-Disposition: attachment; filename=".$attach_filename);

    header("Content-length: ".$size);

    header("Content-type: application/x-zip-compressed");

    readfile($attach_filepos); //将文件读出,提供给用户。

   }

  结束语

  该系统在技术上很完美地将PHP与Oracle数据库结合起来,实现对qmail用户的管理及日常邮箱服务器的维护。目前该系统已在我公司内部使用了一年多,效果很好。它一方面减轻了邮件管理员的日常维护工作;另一方面为不太熟悉邮件配置的用户提供网上收发邮件。此系统还有认证、分组管理及邮件收发、汉字编码等方面的功能,由于篇幅有限就不一一阐述。

相关频道: eNews

您对本文或本站有任何意见,请在下方提交,谢谢!

投稿信箱:tougao@enet16.com