白山有实装饰材料公司

排名推廣
排名推廣
發(fā)布信息
發(fā)布信息
會員中心
會員中心
 
 
當(dāng)前位置: 首頁 » 資訊 » 網(wǎng)絡(luò)知識 » 正文

用Linux作郵件服務(wù)器

放大字體  縮小字體 發(fā)布日期:2009-11-26  瀏覽次數(shù):99
核心提示:在Internet上,E-mail是用戶之間交往溝通的最佳方式。通過電子郵件,可以為Linux系統(tǒng)開拓新的空間,增強與

在Internet上,E-mail是用戶之間交往溝通的最佳方式。通過電子郵件,可以為Linux系統(tǒng)開拓新的空間,增強與外界的聯(lián)系。已經(jīng)證明,電子郵件是Internet上使用最多的應(yīng)用程序,甚至比WWW的使用還要多。本章介紹如何為Linux系統(tǒng)安裝、配置E-mail軟件。 

1   Linux E-mail軟件簡介

Linux中的E-mail軟件系統(tǒng)分為兩大類:MUA(郵件用戶代理)和MTA(郵件傳送代理)。MUA的功能是為用戶提供讀寫郵件的界面,而MTA的作用則是處理郵件的收發(fā)工作。換言之,用戶可以通過MUA寫信、讀信,利用MTA收信、發(fā)信。 

最常用的電子郵件MTA系統(tǒng)是sendmail,它由加州大學(xué)開發(fā),其最新版本是8.9;另一個常見的MTA程序是smail,它由Curt Noll和Ronald Karr聯(lián)合開發(fā),也已經(jīng)發(fā)布了幾個版本。 

值得注意的是,與其他大型軟件包一樣,sendmail也有自己的一些缺陷。雖然引起sendmail失敗或系統(tǒng)崩潰的錯誤已基本上被排除,但提供root訪問權(quán)限的安全性漏洞仍然時有發(fā)現(xiàn)。如果配置不當(dāng),sendmail有可能為“黑客”提供可乘之機。為了安全起見,用戶最好定期訪問計算機緊急反應(yīng)小組(CERT,www.cert.org)的網(wǎng)頁,加入它的郵遞列表,或者閱讀由它主持的網(wǎng)絡(luò)討論組(conp.security.announce)來了解由它發(fā)出的安全性通知。 

電子郵件的MUA系統(tǒng)目前很多,大約有十幾種,其中最常見是:mail和elm。

2  sendmail及其配置

本節(jié)介紹如何安裝和配置sendmail程序,不過在開始深入研究這些詳細(xì)內(nèi)容之前,先介紹SMTP協(xié)議以及域名系統(tǒng)(DNS)對E-mail在Internet上傳輸?shù)挠绊憽?/p>

2.1 SMTP

SMTP是簡單郵件傳輸協(xié)議的簡稱,是Internet上傳輸郵件的既定標(biāo)準(zhǔn)方式。sendmail的基礎(chǔ)協(xié)議正是SMTP。sendmail程序提供為Linux支持SMTP連接所需的服務(wù)。 

要了解sendmail所做的各種不同工作,需要掌握有關(guān)互聯(lián)網(wǎng)協(xié)議的一些知識。所謂協(xié)議就是硬件和軟件進(jìn)行通信所遵守的標(biāo)準(zhǔn)。協(xié)議通常分為不同的層次,高層的協(xié)議利用低層的協(xié)議作為基礎(chǔ)。例如,互聯(lián)網(wǎng)協(xié)議(IP)在網(wǎng)絡(luò)之間發(fā)送和接受數(shù)據(jù)包,但不必創(chuàng)建諸如SMTP和其他高層協(xié)議所使用的端到端(PPP)的連接;建立在IP之上的傳輸控制協(xié)議(TCP)提供了被Telnet和SMTP程序所使用的面向連接的服務(wù);總而言之,TCP/IP為互聯(lián)網(wǎng)提供了基本的網(wǎng)絡(luò)服務(wù),例如文件傳輸協(xié)議(FTP)和SMTP的高層協(xié)議,都建立在TCP/IP之上。協(xié)議分層的優(yōu)點在于,執(zhí)行SMTP或FTP協(xié)議的程序不必知道與傳送數(shù)據(jù)包和連接其他主機有關(guān)的任何內(nèi)容,因為它們可以使用TCP/IP提供的服務(wù)來完成。即執(zhí)行高層協(xié)議的程序不必關(guān)心低層協(xié)議的具體細(xì)節(jié)。 

SMTP定義了在互聯(lián)網(wǎng)上交換E-mail的方式,因此軟件版本和硬件環(huán)境對交換郵件的程序來說并不重要,只要這兩個程序都正確地執(zhí)行SMTP協(xié)議,它們就可以交換郵件。 

下面介紹一個使用的SMTP協(xié)議的例子:位于somedomain.gov的用戶li正在向位于otherdomain.com的zhang發(fā)送郵件。  

以下為引用的內(nèi)容:
  $ sendmail-v zhang@otherdomain.com<letter 
        zhang@otherdonain.com...Connecting to otherdomain.com via top... 
        Trying 123.45.67.1...connected 
        220-otherdomain.com SMTP ready at Sun,14 Nov 1999 18:56:22-0500 
        220 ESMTP spoken here 
        >>>HELO somedomain.gov 
        250 otherdomain.com Hello somedomain.gov [123.45.67.2],pleased to meet you 
        >>>MAIL From:〈li@somedomain.gov〉 
        250〈li@somedomain.gov...Sender ok 
        >>>RCPT To:〈zhang@otherdomain.com〉 
        250〈zhang@otherdomain.com)...Recipient ok 
        >>>DATA 
        354 Enter mail,end with"." on a line by itself 
        >>>. 
        250 SAA08680 Message accepted for delivery 
        >>>QUIT 
        221 otherdomain.com closing connection 
        zhang@otherdomain.com...Sent 
        S 

上面的第一行是直接調(diào)用Sendmail的一種命令格式,而不是利用用戶所喜歡的郵件用戶代理MUA(例如elm或mail)來執(zhí)行這一任務(wù)。這里-v選項告訴sendmail使用冗余模式顯示SMTP對話。其余行顯示的是SMTP客戶機和服務(wù)器進(jìn)行的交談。以>>>開始的行表示的是位于somedomain.gov處的客戶機(寄件人),緊跟其后的行是位于otherdomain.com處的服務(wù)器(收件人)的答復(fù)。以220開始的第一行是最初連接之后SMTP服務(wù)器對自己進(jìn)行的聲明,它給出了自己的主機名以及日期和時間;第二行用來告訴客戶機該服務(wù)器能夠理解擴(kuò)充的SMTP協(xié)議(ESMTP),以便客戶能夠使用它。像220這樣的號碼是SMTP客戶機同SMTP服務(wù)器用來通信的回復(fù)代碼,跟隨回復(fù)代碼后面的文本才是真正的內(nèi)容。 

如果想對這一對話有更深刻的了解,可以閱讀參考文獻(xiàn)RFC821。以-v選項運行sendmail有助于用戶理解SMTP對話的工作方式。 

像otherdomain.com這樣的名字對于用戶理解和記憶是十分方便,而計算機采用的卻是像123.45.67.1這樣的數(shù)字化的IP地址。幸運的是,域名系統(tǒng)(DNS)提供了主機名到IP地址的轉(zhuǎn)化以及其他的重要信息。用戶沒有必要記憶主機的IP地址。 

DNS把對主機進(jìn)行命名和編號的權(quán)限分配給自治管理的域,例如,一個稱為otherdomain. com的公司可以維護(hù)自己域中主機的所有信息。當(dāng)主機a.otherdomain.com想發(fā)送郵件或遠(yuǎn)程登錄(Telnet)到主機b.otherdomain.com時,它會通過網(wǎng)絡(luò)向otherdomain.com的域名服務(wù)器發(fā)送一個請示,域名服務(wù)器不妨假設(shè)是主機ns.otherdomain.com。域名服務(wù)器ns.otherdomain.com將把b.otherdomain.com的IP地址(可能還有其他信息)返回給a.otherdomain.com,這樣郵件將被發(fā)送,或者Telnet將被連接。由于us.otherdomain.com對otherdomian.com域具有管理權(quán),因此它能夠回答對otherdomain.com中的主機的任何查詢,不管這些查詢發(fā)自哪里;另外,它還有對域中的主機進(jìn)行命名的權(quán)力。 

現(xiàn)在,如果a.otherdomain.com上的某人想給zhang@ somedomain.gov發(fā)送郵件會怎么樣呢?雖然us.otherdomain.com沒有位于somedomain.gov域中的主機的有關(guān)信息,但是它卻知道如何找到這一信息。當(dāng)城名服務(wù)器收到它不具有此域信息的某個城中的主機的查詢請示時,它便向根域名服務(wù)器(root nameserver)詢問那個域中(在本例中是somedomain.gov)具有管理權(quán)限的域名服務(wù)器的名字和IP地址。根域名服務(wù)器將把對somedomain.gov具有管理權(quán)限的域名服務(wù)器的名字和IP地址提供給us.otherdomain.com。us.otherdomain.com域名服務(wù)器將詢問它們并把回復(fù)轉(zhuǎn)發(fā)給a.otherdomain.com。 

從上可知,DNS是一個包含主機名到IP地址映射的大型分布式數(shù)據(jù)庫。另外,它還包含其他信息。當(dāng)利用像。sendmail這樣的程序投遞郵件時,它必須把收件人的主機名轉(zhuǎn)化為一個IP地址。這部分DNS數(shù)據(jù)被稱為A(地址)記錄,它是關(guān)于主機的最基本的數(shù)據(jù)。主機數(shù)據(jù)的另一部分是郵件交換器(MX)記錄,像a.otherdomain.com主機的MX記錄列出的是能夠為它接收郵件的一個或多個主機。 

也許讀者會問:MX記錄的作用是什么?為什么a.otherdomain.com不簡單地接收它自己郵件并處理這一過程呢? 

MX記錄的作用如下: 

(1)通過MX,不在Internet上的主機(例如,只利用UUCP的用戶)能夠指定一個Internet主機來接收它們的郵件,從而使它們看起來就像具有Internet地址一樣。例如,假定a. 
otherdomain.com只是偶爾通過UUCP連接到ns.otherdomain.com。如果us.otherdomain.com為它發(fā)布一個MX記錄,其他Internet主機就能夠向它發(fā)送郵件。當(dāng)ns.otherdomain.com收到郵件時,它把郵件保存起來,直到a.otherdomain.com同它連接。MX記錄能夠使非Internet主機也可以接收來自Internet的E-mail。 

(2)通過MX,使用僅有發(fā)送功能MUA客戶程序的用戶也能接受電于郵件。假設(shè)有一臺充當(dāng)一群PC機的文件服務(wù)器的UNIX主機pcserv.otherdomain.com。這些PC機都具有可以發(fā)送郵件但不能接收郵件的帶有內(nèi)置SATP客戶程序的MUA。如果發(fā)往外地的郵件具有類似someone@pcl.otherdomain.com的回復(fù)地址,那么接收方如何回復(fù)信件呢?通過MX記錄,問題便迎刃而解:用pcserv.otherdomain.com做為所有PC機的MX主機,寄向它們的郵件都將正確到達(dá)。 

(3)通過MX可以把用戶的電子郵件存儲起來。由于一些難以預(yù)料的原因,主機可能會長時間地離開Internet。雖然用戶的主機離開了Internet,但發(fā)往它的郵件可能在其他主機上排隊,當(dāng)經(jīng)過一段時間后郵件便返回給寄件人。如果用戶的主機具有在中斷時間里為它保存郵件的MX主機,那么在用戶的主機重新啟用后郵件將被投遞。這些MX主機可以是站點內(nèi)的(即在用戶的域中),也可以是站點外的,或者兩者都有。有條件的情況下,最好選擇站點外的MX主機。因為某些事故通常會使用戶的整個站點與網(wǎng)絡(luò)斷開,在這種情況下,站點內(nèi)的MX主機也就毫無用處。 

(4)MX記錄能夠隱藏信息并使用戶更靈活地重新配置自己的局域網(wǎng)。 

收郵件的主機被命名為wang.otherdomain.com還是liang.otherdomain.com并不重要,用戶的通信者不會知道其中的差別。 

當(dāng)某個SMTP客戶程序向某個主機投遞郵件時,它并不只是把主機名轉(zhuǎn)化為IP地址??蛻舫绦蚴紫炔檎襇X記錄。如果MX記錄存在,它便按照記錄中所提供的優(yōu)先級對這些記錄進(jìn)行排序。例如,otherdomain.com或許就具有MX記錄,這些記錄把主機mailerl.otherdomain.com、mailer2.otherdomain.com和mailer3.somedomain.gov列為愿意為它們收郵件的主機。注意,“主機”otherdomain.com除作為一個MX記錄外可能并不存在,即它沒有一個可用的IP地址。雖然這些主機中的任何一個都將為otherdomain.com接受郵件,但MX的優(yōu)先級確定了SMTP客戶程序應(yīng)首先嘗試投遞的主機。在這里,系統(tǒng)管理員實際上已經(jīng)設(shè)置了一個主郵件服務(wù)器mailer1.otherdomain.com和一個站點內(nèi)的備用郵件服務(wù)器mailer2.otherdomain.com,并且還與mailer3.somedomain.gov的管理員協(xié)商,把它作為站點外的一個備用郵件服務(wù)器。管理員通過設(shè)置MX的優(yōu)先級,從而使SMTP客戶程序?qū)⑹紫仍囉弥鬣]件代收器,其次是站點內(nèi)的備用郵件服務(wù)器,最后是站點外的備用郵件服務(wù)器。 

當(dāng)收集和排序MX記錄之后,SMTP客戶程序把這些主機的IP地址聚集起來并按照它們的MX優(yōu)先級的順序向它們投遞。當(dāng)郵件傳送出現(xiàn)問題時,應(yīng)該清楚這樣一個事實:若一封信被投遞的地址是zhang@otherdomain.com,這并不能說明主機。otherdomain.com一定存在;即使這一主機存在,或許它也不是直接接收郵件的主機。 

另外,很有必要了解郵件頭和信封地址之間的差別,因為郵件路由器處理它們的方式是不同的。下面舉例說明兩者之間的差別。 

假定某個用戶有一個便箋想寄給一些同事,他們分別是A公司的li和qiu以及B公司的zhang和wang吧。用戶把便箋的一個副本交給了用戶所信任的郵件收發(fā)員xie,他記錄了所有的收件人。xie是個非常精明的人,他想為用戶的公司節(jié)省郵費,因此把便箋復(fù)印了兩份,然后把每份放進(jìn)一個寫有各自公司地址的信封里(而不是給每個收件人都發(fā)送一個副本)。在發(fā)往A公司的信封的封面上,他寫有h和qiu的名字;在發(fā)往B公司的信封的封面上,寫有zhang和wang。當(dāng)xie在A公司和B公司的的同行收到這兩個信封時,他們對便箋進(jìn)行了復(fù)印并把它們分別送給了li、qiu和zhang、wang,而并不查看在便箋里面寫的地址。對于A公司和B公司的郵件收發(fā)員來說,他們所關(guān)心的只是信封地址。 

上面的比喻說明了SMTP客戶程序和服務(wù)程序的工作方式。假定zhang@somedomain.gov向他的同事li@somedomain.gov和zeng@otherdomain.com發(fā)送郵件,信頭部的收件人名單如下: 

To:li@somedomain.gov,zeng@otherdomain.com 

 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 關(guān)閉窗口 ]

 
0條 [查看全部]  相關(guān)評論

 
推薦圖文
推薦資訊
點擊排行
 
網(wǎng)站首頁 | 招賢納士 | 關(guān)于我們 | 聯(lián)系方式 | 使用協(xié)議 | 版權(quán)隱私 | 網(wǎng)站地圖 | 排名推廣 | 廣告服務(wù) | 網(wǎng)站留言 | RSS訂閱 | 粵ICP備10022894號-3