郵件系統(tǒng)原理
究竟什么是郵件服務(wù)器呢?郵件服務(wù)器提供了郵件系統(tǒng)的基本結(jié)構(gòu),包括郵件傳輸、郵件分發(fā)、郵件存儲等功能,以確保郵件能夠發(fā)送到Internet 網(wǎng)絡(luò)中的任意地方。目前先進(jìn)的郵件服務(wù)器會包括:短信郵件,防毒反
究竟什么是郵件服務(wù)器呢?郵件服務(wù)器提供了郵件系統(tǒng)的基本結(jié)構(gòu),包括郵件傳輸、郵件分發(fā)、郵件存儲等功能,以確保郵件能夠發(fā)送到Internet 網(wǎng)絡(luò)中的任意地方。目前先進(jìn)的郵件服務(wù)器會包括:短信郵件,防毒反垃圾模塊,地址簿功能,用戶群組功能,代收POP3等,郵件服務(wù)器有兩種不同的應(yīng)用群體:ISP 提供商和企事業(yè)單位。電子郵件是Internet 應(yīng)用服務(wù)之一。下面詳細(xì)講一下郵件系統(tǒng)具體的一些技術(shù)要點。
MUA( 客戶端程序,如 outlook )
MTA(mail transfer agent, 郵件傳輸代理 )
MDA(mail delivery agent, 郵件投遞代理 )
MRA(mail retrieval agent, 郵件獲取代理 )
真實郵件發(fā)送流程模擬
假設(shè) Alex 使用的信箱是 alex@gmail.com,則當(dāng) Alex 要寄信給 john@yahoo.com 時,會經(jīng)過下列步驟:
· 首先 Alex 從個人計算機(jī)中寫好一封信,送到他所屬的 gmail.com 的主機(jī)中。
· gmail.com 會先將信件存在自己的機(jī)器上的暫存區(qū)。
· gmail.com 會檢查信件目的地,并查找 yahoo.com 的 IP 地址。
· 接著經(jīng)由因特網(wǎng)將信件送到 yahoo.com 的主機(jī)。
· yahoo.com 的主機(jī)收到信后,發(fā)現(xiàn)是給自己機(jī)器中的使用者,所以將信件存放到使用者的新件匣中。
· 當(dāng) John 有空時,從家里打開計算機(jī),并主動去 yahoo.com 檢查是否有新的信件,當(dāng)發(fā)現(xiàn)有新的信,則下載到自己的計算機(jī)中。
從寄信到收信的流程中,每一個網(wǎng)絡(luò)上的組件都扮演著不同的角色
· Mail User Agent (MUA):郵件使用者代理人,這是使用者用來寫信、收信的程序。例如,我們常用的 Outlook Exporess 、Thunderbird 等。它的作用在于提供使用者一個好用的收發(fā)信件接口,并將信傳到自己的郵件服務(wù)器。
· Mail Delivery Agent (MDA):郵件遞送代理人,負(fù)責(zé)將要給本地使用者的郵件分配到使用者的信箱中。在 UNIX 中,MDA 通常是 mail 這支程序。
· Mail Transfer Agent (MTA):郵件轉(zhuǎn)送代理人,是一個負(fù)責(zé)轉(zhuǎn)送信件的服務(wù)器。UNIX
,中使用的 Sendmail 、Postfix 就是 MTA 軟件。它的作用在于收到 MTU 寄來的信后,根據(jù)信件地址,將信件轉(zhuǎn)送到目的地。在目的地中,也有另一臺 MTA 會負(fù)責(zé)接收信件。有時候信件并不會一次就從使用者的計算機(jī)傳送到目的地的主機(jī),而是會經(jīng)由許多 MTA 轉(zhuǎn)送到目的地的主機(jī)。這種 MTA 接收非自己的信件,并轉(zhuǎn)送到別臺 MTA 的動作就叫作「Relay 」。
當(dāng)我們在寄信時,所使用的是 SMTP (Simple Mail Transfer Protocol) 通訊協(xié)議,在一臺郵件服務(wù)器上,必須要先安裝郵件服器軟件,以接收 SMTP 協(xié)議所寄來的信件。MTA 和 MTA 之間傳送信件時也是使用 SMTP 協(xié)定。而收信時,使用的是 POP3 (Post Office Protocol) 或是 IMAP (Internet Message Access Protocol) 協(xié)定。
什么是POP
POP 的全稱是 Post Office Protocol ,即郵局 協(xié)議 ,用于電子郵件的接收,它使用TCP 的110端口?,F(xiàn)在常用的是第三版 ,所以簡稱為 POP3。POP3仍采用Client/Server工作模式,Client 被稱為客戶端,一般我們?nèi)粘J褂秒娔X都是作為客戶端,而Server (服務(wù)器)則是 網(wǎng)管 人員進(jìn)行管理的。舉個形象的例子,Server (服務(wù)器)是許多小信箱的集合,就像我們所居住樓房的信箱結(jié)構(gòu),而客戶端就好比是一個人拿著鑰匙去信箱開鎖取信一樣的道理。
POP 工作原理簡介
下面就讓我們一起來看看電子郵件軟件收取電子郵件的過程,一般我們在電子郵件軟件的賬號屬性上設(shè)置一個 POP 服務(wù)器的URL (比如pop. 21cn .com),以及郵箱的賬號和密碼。這個在收信過程中都是用得到的。當(dāng)我們按下電子郵件軟件中的收取鍵后,電子 郵件軟件首先會調(diào)用DNS 協(xié)議對POP 服務(wù)器進(jìn)行解析IP 地址,當(dāng)IP 地址被解析出來后,郵件程序便開始使用TCP 協(xié)議連接 郵件服務(wù)器 的110 端口,因為POP 服務(wù)器是比較忙的,所以在這個過程中我們相對要等比較長的時間。當(dāng)郵件程序成功地連上POP 服務(wù)器后,其先會使用USER 命令將郵箱的賬 號傳給POP 服務(wù)器,然后再使用PASS 命令將郵箱的賬號傳給服務(wù)器,當(dāng)完成這一認(rèn)證過程后,郵件程序使用STA T 命令請求服務(wù)器返回郵箱的統(tǒng)計資料,比 如郵件總數(shù)和郵件大小等,然后LIST 便會列出服務(wù)器里郵件數(shù)量。然后郵件程序就會使用RETR 命令接收郵件,接收一封后便使用DELE 命令將郵件服務(wù)器 中的郵件置為刪除狀態(tài)。當(dāng)使用QUIT 時,郵件服務(wù)器便會將置為刪除標(biāo)志的郵件給刪了。通俗地講,郵件程序從服務(wù)器接收郵件,其實就是一個對話過程, POP 協(xié)議就是用于電子郵件的一門語言。
命令行pop 郵件
telnet pop. 21cn .com 110
OK Hermes POP service () is ready.
user mr22
,OK
pass svtest
OK mr22@21cn.com has 42 messages (3846240 octets)
stats
OK 42 3846240
list
OK 42 3846240
1 637170
2 7047
3 1444
4 10938
5 3573
R etr 6
SMTP 協(xié)議原理
SMTP-簡單郵件傳輸協(xié)議(Simple Mail Transfer Protocol),是定義郵件傳輸?shù)膮f(xié)議,它是基于TCP 服務(wù)的應(yīng)用層協(xié)議 。
命令行發(fā)郵件
ehlo xxxx
250-21cn.com, helo (DELAYED)
250-EXPN
250-HELP
250-8BITMIME
,250-AUTH=LOGIN PLAIN
250-AUTH LOGIN PLAIN
250 XTMD
auth login
什么是域名? 域名由什么構(gòu)成?
域名是internet 上用來尋找網(wǎng)站所用的名字,是internet 上的重要標(biāo)識,相當(dāng)于主機(jī)的門牌號碼。每一臺主機(jī)都對應(yīng)一個IP 地址,每 一個IP 地址由一連串的數(shù)字組成,如101.25.11.34。人們?yōu)榱朔奖阌洃浘陀糜蛎麃泶孢@些數(shù)字來尋找主機(jī),如mydomain.com 。每一個 域名與IP 地址是一一對應(yīng)的,人們輸入域名,再由域名服務(wù)器(DNS)解析成IP 地址,從而找到相應(yīng)的網(wǎng)站。每一個網(wǎng)址和EMAIL 都要用到域名。在英文 國際域名中,域名可以英文字母和阿拉伯?dāng)?shù)字以及橫杠"-" 組成,最長可達(dá)67個字符(包括后綴) ,并且字母的大小寫沒有區(qū)別,每個層次最長不能超過22個 字母。在國內(nèi)域名中,三級域名長度不得超過20個字。
什么是DNS?
域名管理系統(tǒng)DNS(Domain Name System) 是域名解析服務(wù)器的意思. 它在互聯(lián)網(wǎng)的作用是:把域名轉(zhuǎn)換成為網(wǎng)絡(luò)可以識別的ip 地址. 比如:我們上網(wǎng)時輸入的www.163.com 會自動轉(zhuǎn)換成為202.108.42.72
什么是A 記錄?
A (Address)記錄是用來指定主機(jī)名(或域名) 對應(yīng)的IP 地址記錄。用戶可以將該域名下的網(wǎng)站服務(wù)器指向到自己的web server上。同時也可以設(shè)置您域名的二級域名。
什么是NS 記錄?
NS(Name Server)記錄是域名服務(wù)器記錄,用來指定該域名由哪個DNS 服務(wù)器來進(jìn)行解析。
什么是別名記錄(CNAME)?
也被稱為規(guī)范名字。這種記錄允許您將多個名字映射到同一臺計算機(jī)。通常用于同時提供WWW 和MAIL 服務(wù)的計算機(jī)。例如,有一臺計算機(jī)名為 “host.mydomain.com ”(A記錄) 。它同時提供WWW 和MAIL 服務(wù),為了便于用戶訪問服務(wù)??梢詾樵撚嬎銠C(jī)設(shè)置兩個別名 (CNAME):WWW 和MAIL 。這兩個別名的全稱就是“www.mydomain.com ”和
,“mail.mydomain.com ”。實際上他們都 指向“host.mydomain.com ”。
什么是泛域名解析?
泛域名解析定義為:客戶的域名a.com ,之下所設(shè)的*.a.com全部解析到同一個IP 地址上去。比如客戶設(shè)b.a.com 就會自已自動解析到與a.com 同一個IP 地址上去。
什么是MX 記錄?
MX(Mail Exchanger)記錄是郵件交換記錄,它指向一個郵件服務(wù)器,用于電子郵件系統(tǒng)發(fā)郵件時根據(jù)收信人的地址后綴來定位郵件服務(wù)器。例如,當(dāng) Internet 上的某用戶要發(fā)一封信給user@mydomain.com時,該用戶的郵件系統(tǒng)通過DNS 查找mydomain.com 這個域名的MX 記錄,如果MX 記錄存在,用戶計算機(jī)就將郵件發(fā)送到MX 記錄所指定的郵件服務(wù)器上。
檢查MX 記錄是否存在的方法
進(jìn)行DNS 查詢的一個非常有用的工具是nslookup ,可以使用它來查詢DNS 中的各種數(shù)據(jù)。可以在Windows 的命令行下直接運(yùn)行nslookup 進(jìn)入一個交互模式,在這里能查詢各種類型的DNS 數(shù)據(jù)。
DNS 的名字解析數(shù)據(jù)可以有各種不同的類型,有設(shè)置這個zone 的參數(shù)的SOA 類型數(shù)據(jù),有設(shè)置名字對應(yīng)的IP 地址的A 類型數(shù)據(jù),有設(shè)置郵件交 換的MX 類型數(shù)據(jù)。這些不同類型的數(shù)據(jù)均可以通過nslookup 的交互模式來查詢,在查詢過程中可以使用set type命令設(shè)置相應(yīng)的查詢類型。如:C:>nslookupDefault Server: [202.106.184.166]Address: 202.106.184.166
> set type=mx
> sina.com.cnDefault Server: [202.106.184.166]Address: 202.106.184.166
Non-authoritative answer:
sina.com.cn MX preference = 10, mail exchanger = sinamx.sina.com.cn
sina.com.cn nameserver = ns1.sina.com.cn
sina.com.cn nameserver = ns3.sina.com.cnsinamx.sina.com.cn internet address = 202.106.187.179sinamx.sina.com.cn internet address = 202.106.182.230ns1.sina.com.cn internet address = 202.106.184.166ns3.sina.com.cn internet address = 202.108.44.55
如果所要查的某域名的MX 記錄不存在,則出現(xiàn)與以下類似的提示: C:>nslookup> set type=mx> amaxit.com.cnDefault Server: [202.106.184.166]Address: 202.106.184.166
,*** 202.106.184.166 can't find amaxit.com.cn: Non-existent domain
命令確認(rèn)郵件是否接收到。如果SMTP 接收者接收,則返回OK 應(yīng)答;如果不能接收到,則發(fā)出拒絕接收應(yīng)答(但不中止整個郵件操作),雙方將如此重復(fù)多次。當(dāng)接收者收到全部郵件后會接收到特別的序列,如果接收者成功處理了郵件,則返回OK 應(yīng)答。SMTP 提供傳送郵件的機(jī)制,如果接收方與發(fā)送方連接在同一個傳送服務(wù)下時,郵件可以直接由發(fā)送方主機(jī)傳送到接收方主機(jī);或者,當(dāng)兩者不在同一個傳送服務(wù)下時,通過中繼SMTP 服務(wù)器傳送。為了能夠?qū)MTP 服務(wù)器提供中繼能力,它必須擁有最終目的主機(jī)地址和郵箱名稱。 MAIL 命令參數(shù)是回復(fù)路徑,它指定郵件從何處來;而RCPT 命令的參數(shù)是轉(zhuǎn)發(fā)路徑的,它指定郵件向何處去。向前路徑是源路徑,而回復(fù)路徑是返回路徑(它用于發(fā)生錯誤時返回郵件)。 當(dāng)同一個消息要發(fā)往不同的接收者時,SMTP 遇到了向不同接收者發(fā)送同一份數(shù)據(jù)的復(fù)制品的問題,郵件命令和應(yīng)答有一個比較奇怪的語法,應(yīng)答也有一個數(shù)字代碼。在下面,例子中可以看到哪些使用實際的命令和應(yīng)答。完整的命令和應(yīng)答在第四節(jié)。 命令與應(yīng)答對大小寫不敏感,也就是說,命令和應(yīng)答可以是大寫,小寫或兩者的混合,但這一點對用戶郵件名稱卻不一定是對的,因為有的主機(jī)對用戶名大小寫是敏感的。這樣SMTP 實現(xiàn)中
轉(zhuǎn)載自:http://www.sz-isp.com http://www.szgreatwall.net