【閒談】E-mail是怎麼發送和接收的?


在現在生活和工作中,我們幾乎離不開電子郵箱。那麼電子郵件到底是怎麼工作的呢?筆者對此產生了興趣。決定去探尋一下電子郵件的工作原理。那麼首先我們得明確一下電子郵件是什麼。

電子郵件(E-mail)是什麼?

電子郵件,又經常被稱爲E-mail/郵件, 其英文的全稱是Electronic mail。最早在1960年代出現,並於70年代中葉形成了現在的email的結構。

Electronic mail (email or e-mail) is a method of exchanging messages (“mail”) between people using electronic devices. Invented by Ray Tomlinson, email first entered limited use in the 1960s and by the mid-1970s had taken the form now recognized as email
Refer - [https://en.wikipedia.org/wiki/Email]

相關的通信協議

我們都知道電子郵件是爲了發送消息從一端電子郵箱用戶給另一端的電子郵箱用戶,中間需要通過網絡傳輸數據。所以不可避免地要爲通信制定協議。而在郵件的傳輸和接收過程中,有3個常用協議。1

  • SMTP (Simple Mail Transfer Protocol)
  • POP (Post Office Protocol)
  • IMAP (Internet Mail Access Protocol)

SMTP

SMTP,Simple Mail Transfer Protocol,中譯爲“簡單郵件傳輸協議”。
就如同其名字,是用於傳輸郵件從一臺機器到另一到機器。
比如我們的Email Client到Email Server,Email Server到Email Server等,機器見發送郵件內容的時候,會使用這個協議。

POP & IMAP

POP和IMAP這兩個協議被用於接收郵件。屬於競爭關係,通常使用其中的一個。那麼我們來看一下這兩個協議的內容和區別吧。

POP

POP,Post Office Protocol,中譯爲“郵局協議”。
使用該協議呢,就像現實生活中去郵局取郵件,一旦郵件被取走,郵局將不再持有該郵件。那麼我們的”電子郵局“(Mail Server)也一樣,使用POP協議的時候,一旦郵件被下載,那麼服務器上對應郵件將會被刪除。
這對於小容量的郵件服務器來說是很友好的。
POP系列中,POP第三版(POP3)是最爲常用的。

POP version 3 (POP3) is the version in common use.
Refer [https://en.wikipedia.org/wiki/Post_Office_Protocol]

IMAP

IMAP,Internet Message Access Protocol,中譯:“因特網信息訪問協議”。舊稱(Interactive Mail Access Protocol),是斯坦福大學在1986年開發的一種郵件獲取協議。IMAP的Specification見RFC3501
當初開發這個協議的時候,目的是爲同一個用戶的複數個Email Clients提供完整的訪問控制,因此服務器會一直保留郵件直到被某一個Client顯式地刪除。

IMAP was designed with the goal of permitting complete management of an email box by multiple email clients, therefore clients generally leave messages on the server until the user explicitly deletes them
Refer [https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol]

IMAP 和 POP的區別?

根據上面的描述,我們可以看到採用POP協議會使服務器上的郵件在被下載(取走)之後被刪除,而IMAP則不會。
IMAP服務器的郵件數據會被一直保存直到被顯式刪除。這使得IMAP服務器更適合作爲中心服務器爲不同的郵件客戶端提供郵件數據。
通常,主流的郵件服務提供商如Gmail、Microsoft Outlook等,都對兩種協議同時提供支持。

電子郵件如何工作的?

以上,我們瞭解了郵件傳輸過程中常用的3種協議。接下來我們整理一下電子郵件是如何從一方客戶端一步一步到另一方客戶端上被顯示的。
Flow Of Sending An Email
上圖是筆者用processon在線畫圖工具和Iconfont素材庫臨時搞的一張圖,將就看一下。

可以認爲,當客戶端A點擊發送郵件按鈕之後,大概有6個步驟。

  1. 客戶端A通過SMTP協議發送數據到對應的SMTP服務器。
  2. 這個SMTP服務器接收到發送郵件的請求後,會根據目標郵件地址的域名去DNS尋找對應郵件服務器的地址。
  3. 拿到對方服務器地址之後,再次通過SMTP協議發送郵件數據到對方SMTP服務器。
  4. 對方SMTP服務器接收到郵件數據之後存儲起來。
  5. POP/IMAP服務器在持久層獲取郵件內容。
  6. 另一個郵件客戶端B通過POP/IMAP協議與服務器通信獲取郵件內容。

結語

以上,就是一封郵件大致的傳輸流程。希望筆者和讀者以後在選擇和設置郵件服務器協議的時候,不再爲設置何種協議發愁。


  1. 在3個常用協議之外,例如微軟和蘋果等都有自己的郵件通信協議,如微軟的MAPI。 ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章