91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

用PHP開發(fā)qmail郵件服務(wù)器管理系統(tǒng)

admin
2012年4月4日 1:3 本文熱度 3705
  電子郵件在網(wǎng)絡(luò)中占有很重要的地位。目前,在企業(yè)中運(yùn)行的郵件服務(wù)器均用各自獨(dú)立的管理系統(tǒng)來實(shí)現(xiàn)賬號創(chuàng)建、口令修改、郵箱擴(kuò)容、刪除郵箱等功能。當(dāng)郵箱用戶達(dá)到一定數(shù)量時(shí),郵件管理員的日常維護(hù)工作顯得極為繁重,這就需要將一部分管理任務(wù)(如賬號申請)實(shí)現(xiàn)自動(dòng)化處理;同時(shí)將一部分任務(wù)(如口令修改)由多個(gè)分組管理員來負(fù)責(zé),從而使郵件管理員從繁瑣的維護(hù)工作中解脫出來,真正對郵件服務(wù)器起到監(jiān)管作用。

  郵件服務(wù)器及開發(fā)環(huán)境的選擇

  目前很多郵件服務(wù)器不提供開發(fā)接口,因此在企業(yè)內(nèi)部實(shí)現(xiàn)開發(fā)郵件管理系統(tǒng)的首要問題是,尋找一種能夠與開發(fā)語言相結(jié)合的開放式郵件系統(tǒng)。

  由于對穩(wěn)定性要求很高,因此大型電子郵件系統(tǒng)一般都使用Unix作為服務(wù)器的操作系統(tǒng)。例如,Hotmail使用的是FreeBSD和Solaris系統(tǒng)。

  Linux自帶的郵件由于在系統(tǒng)結(jié)構(gòu)上存在一定缺陷,難以承受大用戶量的訪問。qmail是GNU下一款著名的自由軟件,是新一代Unix郵件系統(tǒng),支持Maildir存儲(chǔ)方式。它把每個(gè)郵件作為一個(gè)單獨(dú)的文件保存在用戶個(gè)人的郵件目錄下。qmail支持虛擬域(Virtual Domain)和虛擬用戶(Virtual User)。當(dāng)前國內(nèi)流行的免費(fèi)電子郵件系統(tǒng)大都采用qmail作為基本服務(wù)器軟件,提供多級目錄以支持較大的用戶數(shù)。

  從開發(fā)的角度看,PHP+Linux的開發(fā)模式已被許多開發(fā)人員采用。利用PHP來調(diào)用qmail提供的控制程序,實(shí)現(xiàn)對郵件系統(tǒng)的各種管理工作。為實(shí)現(xiàn)對大量用戶的有效控制,還可引入數(shù)據(jù)庫管理。本文將介紹一個(gè)PHP +Oracle+qmail+Linux的開發(fā)實(shí)例。

  總體設(shè)計(jì)

  整個(gè)系統(tǒng)分為郵箱管理和郵件收發(fā)兩部分。申請郵箱時(shí),先填寫一些必要的信息,然后系統(tǒng)會(huì)自動(dòng)地創(chuàng)建郵箱并允許用戶立即使用。當(dāng)用戶忘記密碼后,可采用目前互聯(lián)網(wǎng)的通用做法,通過回答用戶自定義的問題來修改郵箱密碼。出于安全考慮,在用戶三次回答錯(cuò)問題后,系統(tǒng)將該賬號的“修復(fù)郵箱密碼”功能鎖定30分鐘。

  郵件管理依據(jù)不同的需求,將用戶權(quán)限分為以下3種級別:

  ◆ 普通用戶 能夠在瀏覽器中收發(fā)電子郵件、修改郵箱密碼、修改自定義問題和答案,并進(jìn)行郵箱的查詢。

  ◆ 分組管理員 除擁有普通用戶的功能外,可以修改本組內(nèi)所有賬號的密碼,解除本科室賬號的“修復(fù)郵箱密碼”功能鎖定。

  ◆ 郵箱管理員 可以修改全部郵箱口令、刪除郵箱、修改郵箱容量、查看郵箱的申請情況,解除全部賬號的“修復(fù)郵箱密碼”功能鎖定。

  郵件的收發(fā)采用PHP提供的標(biāo)準(zhǔn)POP3函數(shù),可獲得郵件清單、查看郵件的詳細(xì)內(nèi)容、發(fā)送帶多個(gè)附件的郵件,并提供郵件刪除、回復(fù)等功能。

  數(shù)據(jù)庫主要由以下幾個(gè)表組成:

  ◆ email_info 存放所有電子郵箱的相關(guān)信息,如賬號、人員姓名、科室、聯(lián)系電話、自定義問題、自定義問題的答案、鎖定標(biāo)記等。

  ◆ email_register_info 存放用戶申請電子郵件時(shí)填寫的信息,如賬號、密碼、申請時(shí)間、科室、申請的當(dāng)前步驟(主要是為了防止用戶惡意跳過某些步驟而設(shè)定的)。

  ◆ email_change_log 記錄用戶電子郵箱的變化情況,以備日后需要時(shí)檢查。主要記錄有郵件的申請時(shí)間、刪除時(shí)間、郵箱賬號、對郵箱操作的人員姓名、IP地址等信息。

  技術(shù)難點(diǎn)分析

  PHP調(diào)用qmail的控制程序

  在Linux環(huán)境中,每一個(gè)程序都有相應(yīng)的用戶和組的概念。PHP程序在服務(wù)器中執(zhí)行時(shí),默認(rèn)的用戶是nobody,沒有權(quán)利執(zhí)行qmail的控制程序。在Linux里面有個(gè)sudo命令,允許其它用戶以root身份執(zhí)行一些命令。修改/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  

  在調(diào)用qmail控制程序時(shí),需要用戶手工輸入一部分信息。如果要實(shí)現(xiàn)自動(dòng)化,還需要使用Linux中的重定向技術(shù),將用戶預(yù)先輸入的信息存放到文件中,使用重定向技術(shù)傳遞為Shell腳本。

  PHP提供執(zhí)行外部命令的函數(shù)為system()、exec()。system()函數(shù)執(zhí)行給定的命令、輸出和返回結(jié)果。exec()函數(shù)與system()類似,但不輸出結(jié)果。使用程序控制必須選用exec()函數(shù),并根據(jù)執(zhí)行后的狀態(tài)來確定控制程序是否正確執(zhí)行,如果出現(xiàn)錯(cuò)誤需要向郵件管理員通告。下面代碼以“增加用戶”功能為例進(jìn)行說明:

  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,amp;$result);

   if ($result != 0 )

   {

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

   $error_info = "在執(zhí)行vadduser命令時(shí)失敗";

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

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

   }

   }

   $qmail_email->free();

  

  其它功能如修改口令、修改郵箱容量、刪除郵箱等,在程序?qū)崿F(xiàn)上非常類似,不做過多闡述。

  E-mail中附件的上傳及下載

  PHP本身提供上載功能,但根據(jù)實(shí)際情況,可以相應(yīng)做一些配置和錯(cuò)誤處理。用戶可以通過修改php.ini文件來擴(kuò)大上載文件的最大容量。同時(shí),可以通過在網(wǎng)頁的Form中增加的方法,將單個(gè)附件的大小限制在5MB以內(nèi)。如果網(wǎng)絡(luò)速度比較慢,則需要設(shè)置網(wǎng)頁的timeout變量,否則上載時(shí)會(huì)因?yàn)闀r(shí)間太長而超時(shí)。在服務(wù)器端的處理程序部分代碼如下:   

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

   { //錯(cuò)誤處理及顯示

    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; //得到上傳文件在服務(wù)器中的臨時(shí)文件名稱

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

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

   }

  在提供附件下載時(shí),這里沒有采用常用做法,即給用戶提供文件的URL。因?yàn)檫@種做法理論上并不安全,用戶有可能通過鏈接直接下載到該文件。相反,從瀏覽器無法訪問到的目錄下讀出文件提供給用戶下載,就不會(huì)遇到類似安全問題。程序核心代碼如下:   

  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); //將下載文件讀出,提供給用戶下載。

   }

  結(jié)束語

  該系統(tǒng)在技術(shù)上很完美地將PHP與Oracle數(shù)據(jù)庫結(jié)合起來,實(shí)現(xiàn)對qmail用戶的管理及日常郵箱服務(wù)器的維護(hù)。目前該系統(tǒng)已在我公司內(nèi)部使用了一年多,效果很好。它一方面減輕了郵件管理員的日常維護(hù)工作;另一方面為不太熟悉郵件配置的用戶提供網(wǎng)上收發(fā)郵件。此系統(tǒng)還有認(rèn)證、分組管理及郵件收發(fā)、漢字編碼等方面的功能,由于篇幅有限就不一一闡述。

該文章在 2012/4/4 1:03:06 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产手机视频在线 | 日韩伦理午夜福利 | 精品e本大| 99亚洲 | 三级中文高清 | 日本a∨网 | 国产福利免费的网址 | 日本5级床片全免费 | 国产精品原创专区 | 国产乱轮精品一区 | 国产精品我不卡 | 国产乱子伦| 日本免费在线 | 97视频全国精品 | 91精品区 | 国产精品福利导航 | 不卡一区二区 | 91精品福利观看 | 国产二区不卡 | 午夜电影网 | 国产免费一级高清 | 福利影院视频 | 精品一区二区三 | 国际b站免费视频入 | 日韩电影在线天堂 | 日本黄页精品大全 | 精品日韩四区五区六 | 国产精品自产拍高 | 中文字字幕 | 国产欧美一级高清片 | 欧美性受xxxx黑| 成人午夜福利免费 | 日韩欧美亚洲精品 | 国产精品极品白 | 国产精品爽爽va在 | 成人永久免费永久在 | 丝袜足控一区二区 | 日韩在线观看视频黄 | 91红桃视频| 国产真实乱对白精彩 | 激情欧美日韩一 |