什麼是郵件服務器呢?郵件服務器提供了郵件系統的基本結構,包括郵件傳輸、郵件分發、郵件存儲等功能,以確保郵件能夠發送到Internet網絡中的任意地方。目前先進的郵件服務器會包括:短信郵件,防毒反垃圾模塊,地址簿功能,用戶群組功能,代收POP3等,郵件服務器有兩種不同的應用群體:ISP提供商和企事業單位。電子郵件是Internet應用服務之一。下面詳細講一下郵件系統具體的一些技術要點。
MUA( 客戶端程序,如 outlook )
MTA(mail transfer agent, 郵件傳輸代理 )
MDA(mail delivery agent, 郵件投遞代理 )
MRA(mail retrieval agent, 郵件獲取代理 )
真實郵件發送流程模擬
假設 Alex 使用的信箱是 [email protected],則當 Alex 要寄信給 [email protected] 時,會經過下列步驟:
· 首先 Alex 從個人計算機中寫好一封信,送到他所屬的 gmail.com 的主機中。
· gmail.com 會先將信件存在自己的機器上的暫存區。
· gmail.com 會檢查信件目的地,並查找 yahoo.com 的 IP 地址。
· 接著經由因特網將信件送到 yahoo.com 的主機。
· yahoo.com 的主機收到信後,發現是給自己機器中的使用者,所以將信件存放到使用者的新件匣中。
· 當 John 有空時,從家裡打開計算機,並主動去 yahoo.com 檢查是否有新的信件,當發現有新的信,則下載到自己的計算機中。
從寄信到收信的流程中,每一個網絡上的組件都扮演著不同的角色
· Mail User Agent (MUA):郵件使用者代理人,這是使用者用來寫信、收信的程序。例如,我們常用的 Outlook Exporess、Thunderbird 等。它的作用在於提供使用者一個好用的收發信件接口,並將信傳到自己的郵件服務器。
· Mail Delivery Agent (MDA):郵件遞送代理人,負責將要給本地使用者的郵件分配到使用者的信箱中。在 UNIX 中,MDA 通常是 mail 這支程序。
· Mail Transfer Agent (MTA):郵件轉送代理人,是一個負責轉送信件的服務器。UNIX 中使用的 Sendmail、Postfix 就是 MTA 軟件。它的作用在於收到 MTU 寄來的信後,根據信件地址,將信件轉送到目的地。在目的地中,也有另一台 MTA 會負責接收信件。有時候信件並不會一次就從使用者的計算機傳送到目的地的主機,而是會經由許多 MTA 轉送到目的地的主機。這種 MTA 接收非自己的信件,並轉送到別台 MTA 的動作就叫作「Relay」。
當我們在寄信時,所使用的是 SMTP (Simple Mail Transfer Protocol) 通訊協議,在一台郵件服務器上,必須要先安裝郵件服器軟件,以接收 SMTP 協議所寄來的信件。MTA 和 MTA 之間傳送信件時也是使用 SMTP 協定。而收信時,使用的是 POP3 (Post Office Protocol) 或是 IMAP (Internet Message Access Protocol) 協定。
什麼是POP
POP的全稱是 Post Office Protocol,即郵局 協議 ,用於電子郵件的接收,它使用TCP的110端口。現在常用的是第三版 ,所以簡稱為 POP3。POP3仍采用Client/Server工作模式,Client被稱為客戶端,一般我們日常使用電腦都是作為客戶端,而Server(服務器)則是 網管 人員進行管理的。舉個形象的例子,Server(服務器)是許多小信箱的集合,就像我們所居住樓房的信箱結構,而客戶端就好比是一個人拿著鑰匙去信箱開鎖取信一樣的道理。
POP工作原理簡介
下面就讓我們一起來看看電子郵件軟件收取電子郵件的過程,一般我們在電子郵件軟件的賬號屬性上設置一個 POP服務器的URL(比如pop. 21cn .com),以及郵箱的賬號和密碼。這個在收信過程中都是用得到的。當我們按下電子郵件軟件中的收取鍵後,電子 郵件軟件首先會調用DNS協議對POP服務器進行解析IP地址,當IP地址被解析出來後,郵件程序便開始使用TCP協議連接 郵件服務器 的110 端口,因為POP服務器是比較忙的,所以在這個過程中我們相對要等比較長的時間。當郵件程序成功地連上POP服務器後,其先會使用USER命令將郵箱的賬 號傳給POP服務器,然後再使用PASS命令將郵箱的賬號傳給服務器,當完成這一認證過程後,郵件程序使用STAT命令請求服務器返回郵箱的統計資料,比 如郵件總數和郵件大小等,然後LIST便會列出服務器裡郵件數量。然後郵件程序就會使用RETR命令接收郵件,接收一封後便使用DELE命令將郵件服務器 中的郵件置為刪除狀態。當使用QUIT時,郵件服務器便會將置為刪除標志的郵件給刪了。通俗地講,郵件程序從服務器接收郵件,其實就是一個對話過程, POP協議就是用於電子郵件的一門語言。
命令行pop郵件
telnet pop. 21cn .com 110
+OK Hermes POP service () is ready.
user mr22
+OK
pass svtest
+OK [email protected] 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協議原理
SMTP-簡單郵件傳輸協議(Simple Mail Transfer Protocol),是定義郵件傳輸的協議,它是基於TCP服務的應用層協議 。
命令行發郵件
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
什麼是域名? 域名由什麼構成?
域名是internet上用來尋找網站所用的名字,是internet上的重要標識,相當於主機的門牌號碼。每一台主機都對應一個IP地址,每 一個IP地址由一連串的數字組成,如101.25.11.34。人們為了方便記憶就用域名來代替這些數字來尋找主機,如mydomain.com。每一個 域名與IP地址是一一對應的,人們輸入域名,再由域名服務器(DNS)解析成IP地址,從而找到相應的網站。每一個網址和EMAIL都要用到域名。在英文 國際域名中,域名可以英文字母和阿拉伯數字以及橫槓"-"組成,最長可達67個字符(包括後綴),並且字母的大小寫沒有區別,每個層次最長不能超過22個 字母。在國內域名中,三級域名長度不得超過20個字。
什麼是DNS?
域名管理系統DNS(Domain Name System)是域名解析服務器的意思.它在互聯網的作用是:把域名轉換成為網絡可以識別的ip地址.比如:我們上網時輸入的www.163.com會自動轉換成為202.108.42.72
什麼是A記錄?
A (Address)記錄是用來指定主機名(或域名)對應的IP地址記錄。用戶可以將該域名下的網站服務器指向到自己的web server上。同時也可以設置您域名的二級域名。
什麼是NS記錄?
NS(Name Server)記錄是域名服務器記錄,用來指定該域名由哪個DNS服務器來進行解析。
什麼是別名記錄(CNAME)?
也被稱為規范名字。這種記錄允許您將多個名字映射到同一台計算機。通常用於同時提供WWW和MAIL服務的計算機。例如,有一台計算機名為 “host.mydomain.com”(A記錄)。它同時提供WWW和MAIL服務,為了便於用戶訪問服務。可以為該計算機設置兩個別名 (CNAME):WWW和MAIL。這兩個別名的全稱就是“www.mydomain.com”和“mail.mydomain.com”。實際上他們都 指向“host.mydomain.com”。
什麼是泛域名解析?
泛域名解析定義為:客戶的域名a.com,之下所設的*.a.com全部解析到同一個IP地址上去。比如客戶設b.a.com就會自已自動解析到與a.com同一個IP地址上去。
什麼是MX記錄?
MX(Mail Exchanger)記錄是郵件交換記錄,它指向一個郵件服務器,用於電子郵件系統發郵件時根據收信人的地址後綴來定位郵件服務器。例如,當 Internet上的某用戶要發一封信給[email protected]時,該用戶的郵件系統通過DNS查找mydomain.com這個域名的MX 記錄,如果MX記錄存在,用戶計算機就將郵件發送到MX記錄所指定的郵件服務器上。
檢查MX記錄是否存在的方法
進行DNS查詢的一個非常有用的工具是nslookup,可以使用它來查詢DNS中的各種數據。可以在Windows的命令行下直接運行nslookup進入一個交互模式,在這裡能查詢各種類型的DNS數據。
DNS的名字解析數據可以有各種不同的類型,有設置這個zone的參數的SOA類型數據,有設置名字對應的IP地址的A類型數據,有設置郵件交 換的MX類型數據。這些不同類型的數據均可以通過nslookup的交互模式來查詢,在查詢過程中可以使用set type命令設置相應的查詢類型。如: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記錄不存在,則出現與以下類似的提示: 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
命令確認郵件是否接收到。如果SMTP接收者接收,則返回OK應答;如果不能接收到,則發出拒絕接收應答(但不中止整個郵件操作),雙方將如此重復多次。當接收者收到全部郵件後會接收到特別的序列,如果接收者成功處理了郵件,則返回OK應答。SMTP提供傳送郵件的機制,如果接收方與發送方連接在同一個傳送服務下時,郵件可以直接由發送方主機傳送到接收方主機;或者,當兩者不在同一個傳送服務下時,通過中繼SMTP服務器傳送。為了能夠對SMTP服務器提供中繼能力,它必須擁有最終目的主機地址和郵箱名稱。 MAIL命令參數是回復路徑,它指定郵件從何處來;而RCPT命令的參數是轉發路徑的,它指定郵件向何處去。向前路徑是源路徑,而回復路徑是返回路徑(它用於發生錯誤時返回郵件)。 當同一個消息要發往不同的接收者時,SMTP遇到了向不同接收者發送同一份數據的復制品的問題,郵件命令和應答有一個比較奇怪的語法,應答也有一個數字代碼。在下面,例子中可以看到哪些使用實際的命令和應答。完整的命令和應答在第四節。 命令與應答對大小寫不敏感,也就是說,命令和應答可以是大寫,小寫或兩者的混合,但這一點對用戶郵件名稱卻不一定是對的,因為有的主機對用戶名大小寫是敏感的。這樣SMTP實現中