寇從芝,趙麗紅
KOU Cong-zhi1, ZHAO Li-hong2
(1. 河北能源職業技術學院,唐山 063004 ;2. 開灤(集團)有限責任公司 信息與控制中心,唐山 063018)
Web郵件系統的設計與實現
Web mail system design and implementation
寇從芝1,趙麗紅2
KOU Cong-zhi1, ZHAO Li-hong2
(1. 河北能源職業技術學院,唐山 063004 ;2. 開灤(集團)有限責任公司 信息與控制中心,唐山 063018)
目前很多企業局域網內部都架設了郵件服務器,用于進行公文發送和工作交流。但使用專業的企業郵件系統軟件除了需要大量的資金投入外,還不能完全滿足企業的個性需求。該系統是專為開灤(集團)有限責任公司開發的專業級、高性價比的郵件系統,具有安全可靠、易管理和易使用等特點。它致力于滿足本企業集團的Internet/Intranet郵件系統需求,將確保能夠給客戶提供良好的服務和優良的系統性能。
郵件系統;Qmail;SQL;Sever
隨著網絡信息化時代的到來,國內企業辦公逐漸實現了網絡化,而電子郵件則是最重要的網絡應用,個人間以及企業間通信越來越依賴電子郵件完成,尤其是開灤(集團)有限責任公司,各分公司遍及河北、新疆、內蒙等地,部門員工眾多,電子郵件的通信方式使用更為廣泛,使用一款既能滿足企業功能,又便于維護管理的郵件系統十分重要。
操作系統選擇。Linux作為一個自由軟件,自從誕生以來,就在網絡世界引起了一場變革,Linux與其它的操作系統相比具有價格上的優勢,而在功能和性能上毫不遜色,是UNIX在PC機上的完整實現,在性能和安全方面尤其出色。同時Linux也擁有大量的開發工具和平臺。
軟件工具選擇。Qmail是繼Sendmail之后的一個新的電子郵件系統,雖然出現較晚,但卻已經得到了比較廣泛的應用。當前在國內最流行的免費電子郵件系統如163、371等都是采用Qmail作為基本服務軟件,提供多級目錄以支持較大的用戶數。PHP則是GNU下一款免費軟件,遵守 GNU公共許可(GPL)。PHP在大多數Unix平臺,GUN/Linux和微軟Windows平臺上均可以運行。PHP可以編譯成具有與許多數據庫相連接的函數。還可以根據需要自己編寫外圍的函數間接存取數據庫。數據庫系統則采用目前流行的SQL Sever。
在設計郵箱功能上,主要設置了以下幾點。
1)用戶注冊/注銷功能。用戶通過申請可以得到一個自己命名的信箱,也可以把自己的信箱注銷。注冊過程要通過管理員的審查。
2)用戶丟失密碼處理功能。用戶一旦丟失密碼,可以通過注冊時設置的密碼提示問題重新設置密碼。
3)用戶收郵件功能。它包括SMTP收郵件、POP3取郵件和WWW讀郵件三種方式。
4)用戶發郵件功能。它包括SMTP發郵件、WWW直接發送郵件、抄送郵件、轉發郵件、自動回復郵件。
5)用戶信件管理功能。系統初始設置4個文件夾來分類處理信件:收件箱、發件箱、草稿箱和垃圾箱。用戶還可以自己建立新的文件夾,信件在各個信箱之間可以相互移動。
6)用戶查找功能。用戶可以使用查找功能通過查找信件主題或信件內容來找到自己需要的信件。
7)管理員管理用戶和信箱郵件功能。包括輸入(增刪改)、查詢、統計、報表,系統性能參數設置。
8)郵件過濾功能。用戶可以屏蔽固定地址或固定用戶發來的郵件。
9)通訊錄功能。用戶可以設置自己的通訊錄,包括通訊群和通訊人,方便用戶郵件的接收和發送。
10)郵箱智能分配功能。在企業中,不同職位的用戶使用郵箱的頻率是不同的,職位高的戶常常要處理更多的郵件,因此,系統根據用戶的職位分配給用戶不同的郵箱容量。
主要有以下4個數據庫組成。
1)基本庫。包括用戶的基本注冊信息表和系統管理員的信息表等基本信息,這些信息一旦錄入,改動都不會太大。例如:賬號、密碼、申請時間、科室、申請的當前步驟(主要是防止用戶惡意跳過某些步驟而設定的)
2)通訊聯系庫。存放用戶的通訊錄,包括聯系人表、發送信息表、接收信息表等。
3)活動記錄庫。包括時間記錄表、發送記錄表、接收記錄表和郵箱狀態表等。其中時間記錄表是用來記錄用戶每次登錄時間次數的,系統管理員可以根據該表了解用戶的使用情況,如果有用戶長時間不用該郵箱,系統管理員應當及時將該帳號撤銷或暫停;發送記錄表記錄該用戶每次登錄后的發送情況,包括發送的時間、發送地址、以及該郵件的相關信息;接收記錄表與發送記錄表類似;郵箱狀態表則記錄用戶的郵箱使用情況,包括未讀郵件數量、每個文件夾(folder)里的郵件數量、用戶已用的郵箱容量和比率。
4)訪問控制庫。包括用戶權限表、屏蔽地址表、郵箱分配表、用戶信息反饋表等。用戶權限包括發送權限、接收權限、閱讀權限、刪除權限等,因為在企業中,用戶可能會讓別人代替自己查看郵箱,這時候權限的存在就很有必要,用戶可以授予其他用戶某些權限,系統管理員也可以根據用戶的使用情況停止或授予用戶的某些權限;屏蔽地址表保存用戶要屏蔽的郵件地址。
1)php調用qmail的控制程序。sudo是linux系統管理指令,是允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,如halt,reboot,su等等。這樣不僅減少了root用戶的登陸和管理時間,同樣也提高了安全性。由于php程序默認的用戶是nobody用戶,不能調用qmail的控制程序,必須借用sudo命令,修改/ect/sudoers文件,增加以下部分:


分別實現增加用戶、刪除用戶、修改口令、校驗用戶口令是否正確、修改郵箱最大容量、修改用戶信息的功能。
system()和exec()函數是PHP提供共的專門執行外部命令的函數。它們的區別主要在于:system()函數用于在執行給定的命令時,輸出和返回結果,而exec()函數不輸出結果,而是返回結果的最后一行。在一些功能實現上,例如修改口令,修改郵箱容量,增加用戶等,要知道程序是否被正確執行或執行后的狀態,則必須選用exec()函數。下面就是“刪除用戶”功能的主要代碼:

2)email中附件的上傳及下載:PHP的upload.html和upload.php函數都可以實現文件上傳。其中,用upload.html實現上傳的代碼如下:

出于安全,文件下載則是直接采取從瀏覽器訪問到目錄下,讀出文件提供給用戶下載。程序部分代碼如下:


3)email中郵箱容量的調整。 通過修改php的php.ini文件來擴大上載文件的最大容量,同時在網頁的from中通過增加來實現限制單個附件的大小不允許超過size指定大小。還可以利用網頁的timeout變量來設置郵件上傳時間。如果網絡速度比較慢的話,會回應為時間太長而超時。
通過電子郵件進行方便、快捷的信息交流,已經逐漸成為企業工作中不可或缺的行為習慣。該系統可以讓郵件管理員開設不同名字的郵箱,根據不同的需求設定郵箱的空間,而且可以隨時關閉或者刪除這些郵箱,還可以根據需要設置不同的管理權限等等。除了一般的終端郵件程序方式(如outlook,foxmail)收發E-mail之外,還可以實現WEB方式收發和管理郵件,比一般ISP提供的電子郵箱提供的信箱更為方便。
[1] Bill McCarty,著,天宏工作室,譯.PHP4開發指南.清華大學出版社,2002.
[2] William.C.Amo,著,懂梁,譯. Sql Server OLAP開發指南.電子工業出版社2000.
[3] Qmail實用技術指南,賴斌,等譯.清華大學出版社,2001,6.
[4] qmail全攻略,黃小華.人民郵電出版社,2001,12.
[5] GNU/Linux高級網絡應用服務指南. LinuxAid網站.機械工業出版社,2001,1.
TP391
A
1009-0134(2010)10(下)-0208-02
10.3969/j.issn.1009-0134.2010.10(下).65
2009-11-05
寇從芝(1971 -),女,河北石家莊人,副教授,碩士學位。