Linux伺服器:郵件系統的原理

來源:互聯網
上載者:User
究竟什麼是郵件伺服器呢?郵件伺服器提供了郵件系統的基本結構,包括郵件傳輸、郵件分發、郵件儲存等功能,以確保郵件能夠發送到Internet網路中的任意地方。

 究竟什麼是郵件伺服器呢?郵件伺服器提供了郵件系統的基本結構,包括郵件傳輸、郵件分發、郵件儲存等功能,以確保郵件能夠發送到Internet網路中的任意地方。目前先進的郵件伺服器會包括:簡訊郵件,防毒反垃圾模組,地址簿功能,使用者群組功能,代收 POP3等,郵件伺服器有兩種不同的應用群體:ISP供應商和企事業單位。電子郵件是Internet應用服務之一。下面詳細講一下郵件系統具體的一些技術要點。
  MUA( 用戶端程式,如 outlook )
  MTA(mail transfer agent, 郵件傳輸代理程式 )
  MDA(mail delivery agent, 郵件投遞代理 )
  MRA(mail retrieval agent, 郵件擷取代理 )
  真實郵件發送流程類比
  假設 Alex 使用的信箱是 alex@gmail.com,則當 Alex 要寄信給 john@yahoo.com 時,會經過下列步驟:
  · 首先 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 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協議原理
  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上的某使用者要發一封信給user@mydomain.com時,該使用者的郵件系統通過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實現中。
 



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。