轉(zhuǎn)自http://blog.csdn.net/zyh5540/article/details/18953853
一、三種協(xié)議
1. SMTP(Simple Mail Transfer Protocol)
SMTP 是一種TCP協(xié)議支持的提供可靠且有效電子郵件傳輸?shù)膽?yīng)用層協(xié)議。SMTP 是建立在 TCP上的一種郵件服務(wù),主要用于傳輸系統(tǒng)之間的郵件信息并提供來信有關(guān)的通知。SMTP主要負(fù)責(zé)底層的郵件系統(tǒng)如何將郵件從一臺(tái)機(jī)器傳至另外一臺(tái)機(jī)器。
2. POP(Post Office Protocol)
目前的版本為POP3,POP3是把郵件從電子郵箱中傳輸?shù)奖镜赜?jì)算機(jī)的協(xié)議。
3. IMAP(Internet Message Access Protocol)
目前的版本為IMAP4,是POP3的一種替代協(xié)議,提供了郵件檢索和郵件處理的新功能,這樣用戶可以完全不必下載郵件正文就可以看到郵件的標(biāo)題摘要,從郵件客戶端軟件就可以對(duì)服務(wù)器上的郵件和文件夾目錄等進(jìn)行操作。IMAP協(xié)議增強(qiáng)了電子郵件的靈活性,同時(shí)也減少了垃圾郵件對(duì)本地系統(tǒng)的直接危害,同時(shí)相對(duì)節(jié)省了用戶察看電子郵件的時(shí)間。除此之外,IMAP協(xié)議可以記憶用戶在脫機(jī)狀態(tài)下對(duì)郵件的操作(例如移動(dòng)郵件,刪除郵件等)在下一次打開網(wǎng)絡(luò)連接的時(shí)候會(huì)自動(dòng)執(zhí)行。
二、工作原理
下面以sina和sohu這兩個(gè)電子郵局為例來講解電子郵件的傳輸過程和工作原理。假設(shè)sina郵箱的賬戶為lisi@sina.com,sohu郵箱的賬戶為wangwu@sohu.com,它們之間的郵件收發(fā)過程如下圖所示:

圖中實(shí)線部分表示lisi@sina.com賬戶向wangwu@sohu.com賬戶發(fā)送郵件的過程,虛線部分表示wangwu@sohu.com賬戶向lisi@sina.com賬戶發(fā)送郵件的過程。下面通過分析lisi@sina.com賬戶向wangwu@sohu.com賬戶發(fā)送郵件的過程,來具體講解一封郵件從發(fā)送到接收所涉及的環(huán)節(jié)?!?/span>
lisi@sina.com的郵件客戶端程序(這里假設(shè)為Outlook Express)與sina的SMTP服務(wù)器建立網(wǎng)絡(luò)連接,并以lisi的用戶名和密碼進(jìn)行登錄后,使用SMTP協(xié)議把郵件發(fā)送給sina的SMTP服務(wù)器。
sina的SMTP服務(wù)器收到lisi@sina.com提交的電子郵件后,首先根據(jù)收件人的地址后綴判斷接收者的郵件地址是否屬于該SMTP服務(wù)器的管轄范圍,如果是的話就直接把郵件存儲(chǔ)到收件人的郵箱中,否則,sina的SMTP服務(wù)器向DNS服務(wù)器查詢收件人的郵件地址后綴(sohu.com)所表示的域名的MX記錄,從而得到sohu的SMTP服務(wù)器信息,然后與sohu的SMTP服務(wù)器建立連接并采用SMTP協(xié)議把郵件發(fā)送給sohu的SMTP服務(wù)器。
sohu的SMTP服務(wù)器收到sina的SMTP服務(wù)器發(fā)來的電子郵件后,也將根據(jù)收件人的地址判斷該郵件是否屬于該SMTP服務(wù)器的管轄范圍,如果是的話就直接把郵件存儲(chǔ)到收件人的郵箱中,否則(一般不會(huì)出現(xiàn)這種情況),sohu的SMTP服務(wù)器可能繼續(xù)轉(zhuǎn)發(fā)這封電子郵件,也可能丟棄這封電子郵件。
擁有wangwu@sohu.com賬戶的用戶通過郵件客戶端程序(這里假設(shè)也為Outlook Express)與sohu的POP3/IMAP服務(wù)器建立網(wǎng)絡(luò)連接,并以wangwu的用戶名和密碼進(jìn)行登錄后,就可以通過POP3或IMAP協(xié)議查看wangwu@sohu.com郵箱中是否有新郵件,如果有的話,則使用POP3或IMAP協(xié)議讀取郵箱中的郵件。
圖中的虛線部分表示wangwu@sohu.com賬戶向lisi@sina. com賬戶發(fā)送郵件的過程,此過程與lisi@sina.com賬戶向wangwu@ sohu.com賬戶發(fā)送郵件的過程類似,這里不再復(fù)述。
郵件客戶端軟件與SMTP服務(wù)器之間,以及兩臺(tái)SMTP服務(wù)器之間都采用SMTP協(xié)議進(jìn)行通信。郵件客戶端軟件只采用SMTP協(xié)議發(fā)送郵件,即郵件客戶端軟件只作為SMTP協(xié)議的發(fā)送方。SMTP服務(wù)器既要采用SMTP協(xié)議向其他SMTP服務(wù)器發(fā)送郵件,又要采用SMTP協(xié)議接收其他SMTP服務(wù)器或郵件客戶端軟件發(fā)送來的郵件,即SMTP服務(wù)器既作為SMTP協(xié)議的發(fā)送方,又作為SMTP協(xié)議的接收方。郵件客戶端軟件與SMTP服務(wù)器都可以使用SMTP協(xié)議發(fā)送郵件,僅發(fā)送郵件這一功能而言,它們?cè)诩夹g(shù)實(shí)現(xiàn)上有何差異呢?它們的差異主要體現(xiàn)在以下兩個(gè)方面:
?。?span style="font-family: 'Times New Roman';">1)SMTP服務(wù)器接收到郵件客戶端軟件發(fā)送來的郵件后,需要根據(jù)收件人地址的域名將郵件轉(zhuǎn)發(fā)給目標(biāo)域的SMTP服務(wù)器,而大量的收件人地址中肯定會(huì)出現(xiàn)各種可能的域名,因此,SMTP服務(wù)器涉及到要與其他多臺(tái)不能事先確定的SMTP服務(wù)器進(jìn)行通信,它需要具有根據(jù)收件人地址的域名查詢出該域的SMTP服務(wù)器的功能,即需要具有查詢域名的MX記錄的功能。郵件客戶端軟件被設(shè)置為與固定的SMTP服務(wù)器通信,它可以直接與指定的SMTP服務(wù)器建立網(wǎng)絡(luò)連接,因此它不需要具有根據(jù)收件人地址的域名來查詢?cè)撚虻?/span>SMTP服務(wù)器的功能。
(2)對(duì)于來自某個(gè)郵件客戶端軟件的郵件傳輸請(qǐng)求,SMTP服務(wù)器可能需要對(duì)發(fā)件人的用戶賬號(hào)信息進(jìn)行驗(yàn)證,因此,郵件客戶端軟件需要具有向SMTP服務(wù)器傳送用戶賬號(hào)信息的功能。SMTP服務(wù)器能夠直接接受來自其他SMTP服務(wù)器的郵件傳輸請(qǐng)求,因此,SMTP服務(wù)器在發(fā)送郵件時(shí)根本不需要傳送用戶賬號(hào)信息的功能。
三、什么是MX記錄
在DNS服務(wù)器上除了可以建立主機(jī)名與IP地址的映射外,還可以建立其他多種映射,例如,建立某個(gè)主機(jī)名與其別名的映射;建立某個(gè)域名與其SMTP服務(wù)器的映射。在DNS服務(wù)器上創(chuàng)建的各項(xiàng)映射關(guān)系稱為記錄,一項(xiàng)映射關(guān)系就是一條記錄,在DNS服務(wù)器上創(chuàng)建的主機(jī)名與IP地址的映射關(guān)系稱為A記錄,主機(jī)名與別名的映射關(guān)系稱為CNAME記錄,域名與其SMTP服務(wù)器的映射關(guān)系稱為MX記錄。
在DNS服務(wù)器上為什么要建立MX記錄呢?即為什么要建立域名與其SMTP服務(wù)器的映射關(guān)系呢?這與電子郵件地址的表示形式和工作原理有關(guān)。郵件地址后綴部分表示的通常都是一個(gè)域名,而不是接收郵件的服務(wù)器的主機(jī)名,例如,郵件地址“zxx@it315.org”中的“it315.org”對(duì)應(yīng)的就是一個(gè)域名。域只是一個(gè)邏輯組合概念,它并不代表真正的計(jì)算機(jī),對(duì)于使用某個(gè)域名作為后綴的郵件地址,外界發(fā)送給它的電子郵件必須由一臺(tái)專門的SMTP服務(wù)器來進(jìn)行接收和處理,接收和處理某個(gè)域的電子郵件的SMTP服務(wù)器即為該域的SMTP服務(wù)器,外界發(fā)送給某個(gè)域的電子郵件實(shí)際上都是發(fā)送給該域的SMTP服務(wù)器。外界如何知道一個(gè)域的SMTP服務(wù)器的地址呢?這就是通過管理該域的DNS服務(wù)器上的MX記錄來獲得的,這也就是在DNS服務(wù)器上為什么要建立域名與其SMTP服務(wù)器的映射關(guān)系的原因。
當(dāng)某臺(tái)SMTP服務(wù)器要給“zxx@it315.org”發(fā)送一封電子郵件時(shí),該SMTP服務(wù)器將根據(jù)郵件地址的后綴部分而去查詢“it315.org”這個(gè)域的MX記錄,得到這個(gè)域的SMTP服務(wù)器的主機(jī)名為“mail.it315.org”,然后將郵件發(fā)送給“mail.it315.org”這個(gè)SMTP服務(wù)器。