徐 建
(湖北民族學(xué)院 信息工程學(xué)院,湖北 恩施 445000)
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,電子郵件給很多的用戶提供了一種方便、快捷的通信方式,使之漸漸地成為人們生活中不可缺少的一部分.而在大中型企業(yè)中,電子郵箱的使用更加頻繁,企業(yè)都希望擁有自己內(nèi)部的郵件系統(tǒng)來實(shí)現(xiàn)信息的發(fā)布和交流,于是都是不得不出巨額的資金購買商用郵件系統(tǒng).基于Linux平臺(tái)的郵件系統(tǒng)是用開源代碼的自由軟件構(gòu)成的,具有很高的靈活性和性價(jià)比.整個(gè)系統(tǒng)的實(shí)現(xiàn)主要是通過修改各個(gè)自由軟件的配置文件來完成,整個(gè)系統(tǒng)的配置比較簡(jiǎn)單且易于后期的管理和修改.與商業(yè)的郵件系統(tǒng)相比,用開源代碼的自由軟件搭建的郵件系統(tǒng)在靈活性、可靠性、安全性以及性價(jià)比上都有很好的優(yōu)勢(shì).
郵件系統(tǒng)主要由MUA(郵件用戶代理)、MTA(郵件傳輸代理)、MDA(郵件投遞代理)三個(gè)部分組成.不管是發(fā)送過程還是接收過程,電子郵件的傳輸都要遵循SMTP、POP3、IMAP協(xié)議,這些協(xié)議確保了電子郵件在各種不同系統(tǒng)之間的傳輸.其中,SMTP負(fù)責(zé)電子郵件的發(fā)送,而IMAP、POP3則用于接收Internet上的電子郵件[1].
電子郵件傳輸過程如圖1所示.發(fā)送端用戶(User)通過郵件用戶代理(MUA)發(fā)送一封郵件,MUA主要是幫助用戶讀取、編寫和回復(fù)郵件,然后將這些信息轉(zhuǎn)給本地郵件傳輸代理(MTA)進(jìn)行發(fā)送.MTA負(fù)責(zé)把郵件由一個(gè)服務(wù)器傳到另一個(gè)服務(wù)器或郵件投遞代理,MTA收到郵件后,先將其保存在緩沖隊(duì)列中,然后根據(jù)該郵件的目標(biāo)地址,通過對(duì)DNS進(jìn)行搜索,搜索到對(duì)應(yīng)此目標(biāo)地址的MTA服務(wù)器的IP地址,立即通過網(wǎng)絡(luò)將郵件傳送給對(duì)方MTA服務(wù)器.對(duì)方的MTA服務(wù)器接收到郵件之后,將其緩沖存儲(chǔ)在本地.郵件投遞代理(MDA)主要負(fù)責(zé)將MTA接收的郵件,根據(jù)收件人地址將郵件投放到用戶的郵箱里,MDA將緩沖存儲(chǔ)在本地的郵件投遞到接收端用戶的郵箱,接收端用戶通過MUA就可以查看自己電子信箱中的郵件.
圖2 郵件系統(tǒng)結(jié)構(gòu)圖Fig.2 The block diagram of E-mail system
整個(gè)系統(tǒng)基于Linux平臺(tái),通過STMP協(xié)議發(fā)送郵件,通過POP3協(xié)議接收郵件.該系統(tǒng)由postfix、dovecot、squirrel、mysql構(gòu)成,如下圖2[2]所示.
郵件用戶代理供用戶寫信、讀信、寄信的軟件.寄信時(shí),以STMP協(xié)議將郵件提交給MTA.收信時(shí),以POP或者IMAP訪問服務(wù)器上的郵箱[3].由于SquirrelMail支持IMAP和POP協(xié)議,且安裝、配置簡(jiǎn)單,該系統(tǒng)選擇SquirrelMail作為郵件用戶代理.
郵件傳遞代理是負(fù)責(zé)接收、遞送郵件的服務(wù)器軟件.決定郵件的遞送路徑,進(jìn)行必要的地址改寫.應(yīng)該由本地系統(tǒng)收下的郵件,委托給MDA進(jìn)行最后的投遞操作.對(duì)比了幾個(gè)MTA的優(yōu)劣,基于Postfix在安全性、可靠性、高效性、靈活性方面的優(yōu)勢(shì),該系統(tǒng)選擇Postfix作為基本郵件服務(wù)器軟件.
郵件投遞代理負(fù)責(zé)投遞本地郵件到適當(dāng)?shù)泥]箱.MDA可以過濾郵件內(nèi)容,或是依照用戶設(shè)定的準(zhǔn)則,將郵件分類到適當(dāng)?shù)泥]箱;甚至可以將郵件轉(zhuǎn)回給MTA,以寄到另一個(gè)郵箱[4].由于dovecot 主要是基于安全的設(shè)計(jì)思想而產(chǎn)生、同時(shí)支持IMAP和POP3協(xié)議的客戶端、同時(shí)支持標(biāo)準(zhǔn)的mbox和maildir格式、用戶驗(yàn)證靈活且豐富.因此,該系統(tǒng)選擇dovecot作為郵件投遞軟件.
數(shù)據(jù)庫只要用來存放郵件用戶信息.在處理電子郵件的過程中,經(jīng)常需要執(zhí)行各式各樣的轉(zhuǎn)換與查表操作.就應(yīng)付各式各樣的查表操作而言,Postfix本身的查詢表已經(jīng)相當(dāng)完美.然而,在某些情況下,將信息存放在Postfix之外的獨(dú)立數(shù)據(jù)庫會(huì)比較方便些.因此,該系統(tǒng)中用MySQL數(shù)據(jù)庫來存儲(chǔ)用戶信息.
在網(wǎng)上找到debian鏡像文件進(jìn)行Linux操作系統(tǒng)安裝.在此操作系統(tǒng)上,就可以用aptitude install命令來在線安裝Squirrel、Postfix、Dovecot、MySQL等軟件[5].
3.2.1 Postfix配置文件的修改
修改postfix配置文件/etc/postfix/main.cf.
設(shè)定完整的主機(jī)名:myhostname = mail.rana.com“=”號(hào)后面為主機(jī)全名;
指明系統(tǒng)郵件的網(wǎng)域:mydomain = rana.com;
指明郵件地址的網(wǎng)域:myorigin = liulu.com;
指明郵件可發(fā)送的網(wǎng)域:mydestination = mail.rana.com,localhost.rana.com,localhost.
3.2.2 修改dovecot的配置文件
Dovecot配置文件的修改主要是在dovecot.conf中添加:protocols = imap imaps pop3 pop3s,使dovecot支持IMAP和POP3協(xié)議.
不去除明文密碼認(rèn)證:disable_plaintext_auth = no
告訴dovecot郵件是以maildir形式放在/home/vmail/域/用戶:
mail_location = maildir:/home/vmail/%d/%n
3.2.3 配置dovecot-sql.conf
為了實(shí)現(xiàn)dovecot與MySQL數(shù)據(jù)庫的連接.在dovecot-sql.conf添加下列語句:
drive = mysql
connect = host=127.0.0.1 dbname=mail user =mailuser password=2010
defaukt_pass_scheme = PLAIN
password_query = SELECT email as user, password FROM view_users WHERE user=’%u’
圖3 rana用戶登錄界面Fig.3 Rana user logging interface
圖4 rana用戶進(jìn)入郵件系統(tǒng)后操作界面Fig.4 Rana user operation interface
3.2.4 數(shù)據(jù)庫的創(chuàng)建
用SQL語句創(chuàng)建虛擬域表:domains、創(chuàng)建虛擬用戶表:users來存放用戶的基本信息;創(chuàng)建虛擬視圖用戶表:view_users方便用戶的查詢.然后通過創(chuàng)建虛擬域映射文件:/etc/postfix/virtual-mailbox-domains.cf和創(chuàng)建虛擬郵箱映射文件:/etc/postfix/virtual-mailbox -maps.cf來實(shí)現(xiàn)數(shù)據(jù)庫的配置.
郵件系統(tǒng)的實(shí)現(xiàn)是通過在Linux系統(tǒng)下安裝符合要求的MTA、MUA、MDA、MySQL,以及通過在各個(gè)安裝好的軟件中添加或修改相應(yīng)的配置文件,來實(shí)現(xiàn)各個(gè)軟件之間的信息傳遞[6].安裝Linux系統(tǒng)和配置好相關(guān)自由軟件參數(shù)后,在客戶端通過IE瀏覽器輸入郵件服務(wù)器的IP地址,就可以進(jìn)入郵件系統(tǒng)的登錄界面.圖3是rana用戶登錄界面.
在輸入正確的用戶名和密碼后,即可進(jìn)入到郵件系統(tǒng).圖4是郵箱的操作界面.隨后就可以進(jìn)行相應(yīng)的寫信、收信、查信等操作,實(shí)現(xiàn)郵件系統(tǒng)的基本功能.
在debian操作系統(tǒng)上,利用postfix、dovecot、squirrel、mysql等開源的自由軟件搭建了一個(gè)穩(wěn)定性較高、性價(jià)比較好的郵件系統(tǒng).通過安裝和配置這些自由軟件實(shí)現(xiàn)了IMAP、POP3協(xié)議,實(shí)現(xiàn)了電子郵件的各種服務(wù)功能.本郵件系統(tǒng)在信息安全和垃圾郵件處理方面還未涉及,這將是下一步研究的重點(diǎn).
[1] 黃俊,殷衛(wèi)紅.基于Postfix電子郵件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].上海電力學(xué)院學(xué)報(bào),2006,22(2):144-148.
[2] Kyle D Dent. Postfix:The Definitive Guide[M].Charlotte:Baker & Taylor Books,2003:56-60.
[3] Kevin Johnson. Internet Email協(xié)議開發(fā)指南[M].北京:機(jī)械工業(yè)出版社,2000:6 -25.
[4] 李善平,劉文峰,王煥龍.Linux與嵌入式系統(tǒng)[M].北京:清華大學(xué)出版社,2003:1-25.
[5] 陳禾,張穎,林立,等.基于μC/OS-Ⅱ的嵌入式網(wǎng)絡(luò)數(shù)據(jù)采集模塊的設(shè)計(jì)[J].湖北民族學(xué)院學(xué)報(bào):自然科學(xué)版,2006,24(2):143-147.
[6] 徐建.ARM7的水情測(cè)報(bào)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].湖北民族學(xué)院學(xué)報(bào):自然科學(xué)版,2010,28(2):171-173.