[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > Sendmail > 正文
多域E-mail服務的實現
本文出自:http://noc.cstnet.net.cn/ 蔣曉 (2001-06-08 14:08:00)

用戶背景 

中科院南京分院計算機網絡始建1995年5月,為中科院"百所聯網"一期工程的試點單位,首批接入光纖網的單位為在寧分院機關、地質與古生物所、土壤所、地理與湖泊所,通過x.25公用分組交換網與中科院網絡中心互聯,主要滿足部分科研人員上Internet查詢文獻資料,加強國內外前沿科研項目的合作與數據交換,跟蹤世界科技發展動態。 

二期工程1999年1月竣工,紫金山天文台、天文儀器研制中心通過單膜光纖接入南京分院地區網,全面升級各單位網絡節點設備,網絡出口由64KDDN取代x.25公用分組交換網,共享數據庫和管理信息系統(MIS)在網上運行,各所科研和管理部門的計算機大批進入分院地區網。 

多域問題的提出及解決方法 

鑒南京分院地區網採用集中服務,主服務器為雙CPU的Ultra2和Sun20工作站,而分院下屬各研究所在科技網都擁有已經注冊的域名,各研究所對外交流要求用本單位域名的Email地址,因此我們在網絡集成時考慮解決多域服務問題。 

我們的解決方案是利用Sun的Netra I軟件完成DNS、Ftp及WWW服務,安裝Sendmail8.9.1軟件在一台服務器上提供多域名的Email解析。 

由各研究所的主頁放在本所,工作平台的環境也不盡相同,因此我們通過主服務器在WWW服務中指定主機IP實現虛擬服務,一來可以減輕主服務器的被訪問工作量,同時為各研究所網管員對本單位主頁的更新與維護提供了更多的便利。 

E-mail的工作方式 

E-mail是用戶在一對一基礎上進行通信的主要方式。這些用戶可以在同一台機器上,也可以通過網絡分散在不 同的機器上,從概念上講,發送E-mail 和發送普通郵件非常相似,任何人想要收到E-mail必須有一個E-mail地 址,就象要收到信件必須有郵寄地址一樣。 

郵寄地址全稱包括:國家、地區、城市、街道、住房號和姓名,地址提供了傳遞郵件所必需的層次信息。使它越來越接近傳遞對象。與此相似,E-mail地址也有類似的 層次結構。例:某人的E-mail 為: somebody@issas.ac.cn 

從層次意義上講,這一信息從右邊到左邊,右邊第一個為國家代碼"cn"代表中國,第二個代碼"ac"代表中國科學院,第三個代碼"issas"代表中科院南京土壤研究所。 

當有人向somebody發E-mail 時,somebody的本地端機器就象一個郵局,在那裡接收和保存寄來的任何郵件,直到他取走為止,與此相似,對發送信息的人而言,發送電子郵件的遠程機器也象一個郵局。 

從源機器到目的機器,E-mail信息在傳遞過程中可能 經過其它機器,由路徑選擇是自動的,信息發送者不需要知道這些中間的機器。 

多域的E-mail服務就是給用戶提供一種方便。比如: 一個主域要分成若幹個子域,每個子域都可有自己域的 E-mail 帳號;又如多個單位共用一台主機完成E-mail服務,但每個單位都使用自己的域作為E-mail帳號。ISP為許多用戶做WWW 和E-mail 服務,高安全性多域intranet的郵件系統等, 都是典型的只有多域才能完成的應用。 

多域的E-mail 非常有特色,一看地址,就能讓人知道他所屬單位和部門。本文的實例:中科院南京分院由個6個在寧單位組成,它們都有各自的域名,網絡中心設在土壤所,只有一台Sun Ultra2 主服務器來完成E-mail 服務,而每個單位網絡用戶要求使用自己域名的E-mail帳 號。我們的辦法就是用Sendmail軟件來做多域解析。 

DNS的概念、作用和配置 

1. 關DNS 

簡而言之,DNS是用以將域名和主機名轉換成IP地址的一種分布式層次結構系統。在DNS下,沒有存放全部Internet主機信息的中心數據庫,信息分布在一個層次結構中的數千台名服務器上,這種結構類似UNIX文件系統的層次結構。DNS在域層次結構的頂上有一個根域(root domain),有一組稱為根服務器的名服務器服務,頂層域有兩種基本類型,即地理域和機構域。一個域的有關信息首先從根域開始,經子域到目標域指針查找的。Internet上廣泛使用的是名字。Sendmail軟件正是建立在名字之上的軟件。 

在UNIX系統中,採用的域名服務(DNS)軟件是"Berkely 網間名域(BIND)"。 

DNS名服務軟件從概念上可分為兩個部分:轉換程序和名服務器。轉換程序是形成查詢的軟件,它提出問題;名服務器是響應查詢的進程,它回答問題。 

在BIND下,所有的計算機都使用轉換程序,但並不是都運行名服務器進程。一個不運行本地名服務器進程、而依靠其它系統獲得所有名服務信息的計算機稱為"唯轉換 程序(resolver-only)"系統。這種唯轉換程序配置一般只用單用戶系統,大多數UNIX系統都運行一個本地名服 務器進程。三類主要的名服務器是:主服務器(Primary Server),主服務器是可以從中取得與一個域有關的全部數據的服務器;輔助服務器(Secondary Server),輔助服務器可以從主服務器中轉換整個域數據庫;唯高速緩存服務器(Caching Only Server),唯高速緩存服務器可以取得其它名服務器發出的所有名服務查詢的回答信息。 

對大多數網絡,這些不同類型服務器之間的關系使得DNS優主機表。在DNS之下,每個域只應有一個主名服務器。域管理員將DNS數據輸入該主服務器的數據庫中, 取得對主機名信息的中央控制權。對任何網絡,一個自動分布的、中央控制的數據庫是網絡自身的一個特點,當你將一個新系統增加到網絡中時,不必修改網絡中每個節點上的/etc/hosts文件,只需修改主服務器中的DNS 數據庫;通過全面的區文件轉移或將每個應答信息存放在高速緩沖中,與該新系統有關的信息就會自動地傳送給其它服務器。 

2. DNS的配置 

本文實例:中科院南京分院共有6家單位組成,它們的域名和IP地址分別為: 

紫金山天文台: pmo.ac.cn 159.226.120.16 

地理與湖泊所: niglas.ac.cn 159.226.120.17 

分 院 機 關: njbas.ac.cn 159.226.120.18 

地質與古生物所:nigpas.ac.cn 159.226.120.19 

天儀研制中心: nairc.ac.cn 159.226.120.20 

土 壤 所: issas.ac.cn 159.226.120.14 

在DNS配置中,充分利用Sun Netra I 軟件來配置。 

首先打開瀏覽器鍵入URL:localhost : 81 

用 戶 名: Setup 

口 令: Setup 

進入Netra I 軟件。 

選擇Administration->Name Service->DNS 

a. DNS Client 

Add DNS Client 

DNS Client Administration 

DNS Domain Name : nigpas.ac.cn 

Name Server 1 Address 127.0.0.1 

Name Server 2 Address(Optional) : 159.226.8.6 

b. DNS Server 

Add a DNS Server 

DNS Domain Name: njgpas.ac.cn 

Root Name Servers    Host: Addressas A. Root-Servers.Net 198.41.0.4 
B. Root-Servers.Net 128.9.0.107 
C. Root-Servers.Net 192.33.4.12 
D. Root-Servers.Net 128.8.10.90 
E. Root-Servers.Net 192.203.230.10 
F. Root-Servers.Net 192.5.5.241 
G. Root-Servers.Net 192.112.36.4 
H. Root-Servers.Net 128.63.2.53 
I. Root-Servers.Net  192.36.148.17 


c. Add a Primary domain 

(a) Add a Primary domain 

Primary Domain Name : nigpas.ac.cn 

(b) Add a Primary domain 

Primary Domain Name: nairc.ac.cn 

用同樣方法加入其它域,即完成了DNS的配置。 

關Sendmail及其配置 

1. Sendmail 

Sendmail是一個郵件傳輸程序。電子郵件使用的各種程序和協議使得配置和支持復雜化,SMTP在TCP/IP網絡上發送郵件。每一個程序可在同一系統的不同用戶間發送郵件;還有一個程序在UUCP網絡上發送郵件。其中每個郵件系統(SMTP、UUCP和本地郵件)都有各自的傳輸程序和各自的郵件尋址方法,所有這些將會造成郵件用戶和系統管理上的混亂。 

Sendmail可以消除由多個郵件傳送程序造成的某些 混亂。其方法是根據電子郵件的地址,為用戶郵件選擇一條到達適當的傳輸程序的路由。它接收來自一個用戶郵件 程序的郵件,解釋該郵件地址,將該地址重新改寫成適合一個傳輸程序的格式,然引導郵件到達正確的傳輸程 序。Sendmail將最終用戶與這些細節分開,如果郵件地址正確,Sendmail就認為它可以被準確地發送並進行傳輸。同樣,對進入的郵件,Sendmail先解釋其地址,然,將郵件傳送到用戶的郵件程序或轉發到另一個系統。 

除了在用戶程序和傳輸程序間為郵件選擇路由外,Sendmail還具有如下功能: 

﹒ 接收和傳輸SMTP(網間)郵件 

﹒ 提供系統級的郵件別名,從而允許使用郵址表 

2. 作為守護程序運行Sendmail 

為了從網絡上接收SMTP郵件,可以在系統開機時將Sendmail作為守護程序運行。該Sendmail守護程序偵聽TCP 的端口25,並處理進入的郵件。 

運行時該程序首先檢查是否存在Sendmail程序,如果找到該程序,它就轉到郵件隊列目錄,並刪除在該處找到的任何加鎖文件。該郵件隊列目錄中保持著尚未傳送的郵件,有可能正在處理郵件隊列時系統會關機,因而加鎖文件可能會偶然地滯留在該目錄中,因此在引導時應將它們刪除。 

接著,該程序以兩個命令行選項啟動Sendmail。一個選項是-q,它與上面所述的郵件隊列有關,它告訴Sendmail 以多高的速率去處理郵件隊列。缺省狀態下,該程序每小時(-qlh)處理一次隊列。對大多數系統這是一個很合適的設置值,但對中央郵件服務器則例外,它可能需要更快地處理該隊列,如每15分鐘或每半小時(-q15m或-q30m)處理一次。 千萬不要將該值設置得太低,否則,如果由傳輸問題(如網絡中斷)而使隊列增長得太大,這就會帶來一些問題。 

另一個選項與網間郵件直接有關,選項(-bd)告訴Sendmail作為守護程序運行,它使得Sendmail去偵聽TCP 的 端口25,以找到進入的網間郵件。如果你要求系統去接收進入的TCP/IP郵件,請使用該選項。 

3. Sendmail別名 

怎樣強調郵件別名的重要性都不會過分,因為沒有郵 件別名,Sendmail系統就不可能用作中央郵件服務器。郵件別名的作用: 

﹒ 為單個用戶提供代用名(外號); 

﹒ 將郵件轉發給其它主機; 

﹒ 提供郵址表(mailing list)。 

Sendmail的郵件別名(aliases)在文件中定義。 aliases文件的各項基本格式是:alias: recipient [,recipient,...] 

alias是郵件被尋址的名字;recipient 是郵件傳輸目 的地的名字,它可以是用戶名,另一個別名的名字或一個完整的電子郵件地址(包括用戶名和主機名)等。含有主機名就允許將郵件轉發到一個遠程主機。此外,一個別名可用多個接收者,尋址到該別名的郵件便可傳輸到所有 接收者,這就建立了一個郵址表。 

利用DNS中的郵件MX記錄設置,讓多個域的MX記錄都指向其中的某一個域,讓這個域充當其它域的別名。發往其它域的E-mail都可由這個別名來中繼,最發送到各 用戶郵箱中去。即可實現不同域的E-mail轉發。如本例中,把nigpas.ac.cn 域作為其它域的別名,當有人向xx@nairc.ac.cn發信時,在本地郵局中nairc.ac.cn會被nigpas.ac.cn域所替代,然再進入xx用戶中去,但對外人來看,xx用戶的E-mail地址是xx@nairc.ac.cn而不是xx@nigpas.ac.cn。 

在Sendmail軟件中,Sendmail.cf是Sendmail的配置 文件,它包含著大部分的Sendmail配置信息,包括在用戶郵件程序和郵件傳輸程序之間為郵件選擇路由所需的信 息。它主要有三個功能: 

﹒ 定義Sendmail環境 

﹒ 按照接收郵件程序的語法重寫地址 

﹒ 將地址映襯成傳送郵件所需的指令 

4. Sendmail的配置 

我們首先從www.sendmail.org網站中下載sendmail-8.9.1.for Solaris2.6文件,再在www.sunfreeware.com 裡 下載免費gcc2.7.2.3 編譯軟件,經過解壓,放到 /opt/sendmail /opt/GCC2723 目錄下。 

具體步驟如下: 

(1)cd /opt/sendmail/src 

(2)./Build /* 編譯Sendmail生成一個obj.*目錄*/ 

(3)cd obj.* 

(4)cp /usr/lib/sendmail /usr/lib/sendmail﹒old 

(5)cp -r /etc/mail /etc/mail﹒old /*保存原來的配置*/ 

(6)make install /*替換原來的/usr/lib/sendmail守 護程序*/ 

(7)rm -r /etc/mail 

(8)mkdir /etc/mail 

(9)cd /etc/mail 

(10)touch aliases 

(11)/usr/lib/sendmail -bi /*產生*.pag和*.dir文件對 aliases機制進行初始化*/ 

(12)cd /opt/sendmail/cf/cf 

(13)cp tcpproto.mc x.mc /*保存原來的模板*/ 

(14)vi x.mc 

修改OSTYPE(Solaris2)dnl 

存盤退出 

(15)m4 ../m4/cf.m4 x.mc>config.cf /* 用m4工具生成 sendmail.cf 原始配置文件*/ 

(16)vi config.cf 在Cwlocalhost 加入所有的域名,如issas.ac.cn nigpas.ac.cn nairc.ac.cn 等 

(17)cp config.cf /etc/sendmail.cf /* 生成一個全新的sendmail.cf文件替代原來的 Sendmail.cf文件 */ 

(18)cd /etc/mail 

(19)touch relay-domains vi relay-domains * wq /*為每一個客戶提供中繼*/ 

(20)reboot 

至此,Sendmail多域配置過程結束,成功地實現在一台機器上完成多域E-mail服務。 

多域的特點 

1. E-mail帳號更加靈活、更有特色, E-mail地址 可以反映出用戶的身份和工作性質。 

2. 節省資金,多單位可共享一台主機完成各自的E- mail服務,省去了各單位同時購買服務器的費用。 

3. Sendmail是Unix系統中最常用和功能最好的一種 傳輸程序,它的靈活性、可靠性和強大的功能得到世界的公認。 

4. Sendmail軟件是免費的,編譯器GCC也是免費的。 

5. Sendmail 軟件所產生的日志文件,嚴格而有規律, 為 郵件的記費提供重要的資料來源。  (http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★