SMTP協議 E-mail協議

E-mail郵件協議的概述

2019-06-17
124次瀏覽

認識E-mail協議:


一、E-mail的發送與接收涉及兩個協議:

1、簡單郵件傳遞協議(SMTP):負責傳遞郵件,是TCP/IP系列的協議.
2、郵政協議(POP3):接收互聯網上的郵件.

3、這里主要講解SMTP協議,POP3協議在上面的鏈接中.


二、工作原理:

1、客戶端發送程序-->SMTP1服務器(源SMTP)-->通過DNS服務尋找目標SMTP服務器-->SMTP2服務器與建立連接并傳送郵件-->POP3服務器-->放入接收者電子信箱中并通知接收者。

2、通常情況下,個人用戶不是直接接收電子郵件,是由ISP(如:smtp.qq.com)的(SMTP服務器)主機負責接收電子郵件,再通知個人用戶。
路徑:個人用戶主機-->SMTP的主機-->SMTP目標服務器-->收件人的SMTP主機-->POP3服務器-->通知收件人.

3、一般大公司專門有一臺SMTP服務器機器用來處理郵件.


三、關于ISP(互聯網服務提供商):

1、ISP的主機充當著郵局的作用,管理眾多用戶的電子信箱,每個用戶的電子郵箱實際上就是它的賬號名。
2、由于每個電子郵箱都要占據ISP的硬盤空間,所以郵件數量是有限的。


四、關于互聯網郵件系統:

1、每一臺互聯網PC在運行郵件程序(QQ郵箱)時,可自動確保郵件以標準格式選址和傳送,這個程序稱為“傳送受理程序”.
2、“傳送受理程序”遵守SMTP協議向外界發送郵件.

3、大多數“傳送受理程序”都在后臺運行,UNIX稱它為sendmail的智能程序.


電子郵件:

一、分為三個部分:

? ? ? ? ? ? ? ? ? ? ? ? ? 1)信頭(主題、收件人、發件人) ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? 2)信體(內容)
? ? ? ? ? ? ? ? ? ? ? ? ? 3)簽名區

二、國際上常見的電子郵件格式:?? ?

????????????From:發信人地址?????
??????????????to:收信人地址
?????????Subject:主題
?????????content:內容
?????????????????結束標志
?????????????????簽名區

三、電子郵件地址通用格式:用戶標識字符串@域名([email protected]

四、郵件結構:

??????(1)From:[email protected]?????????????????????????//發信人?
??????(2)??To:[email protected]?????????????????????????//收件人
??????(3)Subject:Hello,World????????????????????????????//主題
??????(4)Date:Thu,1?Apr?2017.?14:00:00?GMT//時間日期
??????(5)Hi,Jack????????????????????????????????????????//內容部分
??????(6)空行??????????????????????????????
??????(7)How?Are?You?
??????(8)...
??????(9)Thanks
??????(10)Aaron


信頭:

在傳輸過程中,郵件被打包成一個數據結構,郵件的傳輸是根據信頭上的信息進行傳輸的。

舉例說明信封在傳遞過程中信頭的變化:

步驟一:客戶端程序發送郵件時:
? ? ? ? ? ? ? ?From:[email protected] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?To:[email protected] ? ? ? ? ? ??
? ? ? ? ? ? ? ?Date:Thu,1 Apr 2017. 14:00:00 GMT
? ? ? ? ? ? ? ?X-mailer:Sendmail 8.9.0
? ? ? ? ? ? ? ?Subject:Hello,World

步驟二:smtp.qq.com指向的SMTP服務器接收此郵件后,在信頭上增加一條以下內容:
? ? ? ? ? ? ? Received:from 發信人主機名.126.com (發信人主機名.126.com [發件人IP地址]) by smtp.126.com (8.8.5) ?id ?004A21;Tue,Mar 18 1998 15:3 7:24 GMT
? ? ? ? ? ? ? From:[email protected] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? To:[email protected] ? ? ? ? ? ??
? ? ? ? ? ? ? Date:Thu,1 Apr 2017. 14:00:00 GMT
? ? ? ? ? ? ? X-mailer:Sendmail 8.9.0
? ? ? ? ? ? ? Subject:Hello,World

步驟三:QQ的SMTP服務器將郵件存儲下來,等待收件人閱讀,再次增加兩條以下的內容:

? ? ? ? ? ? ?Received:from smtp.126.com (smtp.126.com [1.1.1.0]) bysmtp.qq.com (8.8.5/8.7.2) with ESMTP id LAA20869;Tue,Mar 18 1998 15:3 7:44 GMT

? ? ? ? ? ? ?Received:from 發信人主機名.126.com (發信人主機名.126.com [發件人IP地址]) by smtp.126.com (8.8.5) ?id ?004A21;Tue,Mar 18 1998 15:3 7:24 GMT

? ? ? ? ? ? ? From:[email protected] ? ? ? ? ? ??
? ? ? ? ? ? ? To:[email protected] ? ? ? ? ? ??
? ? ? ? ? ? ? Date:Thu,1 Apr 2017. 14:00:00 GMT
? ? ? ? ? ? ? Message-Id:

拿步驟三來解釋以上的含義說明:

1、Received:from smtp.126.com (smtp.126.com [1.1.1.0]):

說明了是在smtp.126.com的SMTP服務器上接收來的郵件,SMTP服務器IP地址為1.1.1.0,真實名字為smtp.126.com

2、by smtp.qq.com (8.8.5/8.7.2) with ESMTP id LAA20869:

接收方為smtp.qq.com,使用的sendmail(傳送受理程序)的版本:8.8.5/8.7.2,郵件編號為ESMTP id LAA20869

3、Tue,Mar 18 1998 15:3 7:44 GMT:接收時間

4、Message-Id域:發送方SMTP服務器賦給這封郵件的編號,這個編號會始終跟隨該電子郵件


SMTP協議原理:


一、簡易概述:

1、提供高效、可靠的郵件傳輸,可通過不同網絡的主機接力式傳送.
2、TCP/IP系列的協議.
3、使用的監聽端口號:25


二、主要功能:
1、將郵件從客戶端傳送至SMTP服務器.
2、將郵件從SMTP服務器傳送至另外一個SMTP服務器上.

3、分為兩個工作模式:發送SMTP、接收SMTP.


三、工作過程:

接到客戶端的郵件請求后,判斷是否為發送給本地SMTP服務器用戶的郵件,如果是,直接投送到用戶郵件中.否則向域名服務DNS查詢遠端SMTP服務器的MX記錄,?查詢到后,與遠端SMTP服務器建立連接,相互交互發送SMTP命令,本地SMTP服務器發送MAIL命令指明郵件發送者,遠端SMTP服務器則返回OK應答,本地SMTP服務器再發送RCPT命令確認郵件是否已接收到,遠端SMTP服務器接收成功則返回OK應答,反之則會返回拒絕接收應答(但不終止連接),?雙方重復多次,當遠端SMTP服務器收到全部郵件后會接收到特別的序列,如果遠端SMTP服務器成功處理了郵件,則返回OK應答.


關于MX記錄:郵件交換記錄,它指向一個郵件服務器,用于電子郵件系統發郵件時根據,收信人的地址后綴來定位郵件服務器.
關于CNAME記錄(規范名字):將多個名字(域名)映射到同一臺計算機.

關于A記錄:IP地址


四、SMTP命令與三位數字響應碼描述:

1、SMTP命令和三位數字響應碼基于ASCII字符集,并以CR和LF符(CR為\r、FL為\n)結束.
2、三位數字響應碼為三位數字代碼,每一個數字代碼表示一個返回狀態.


五、發信步驟:(以登錄QQ郵箱進行發信為例)

????1、連接QQ的SMTP服務器,通常端口為25??????//2開始,每一個命令都要接收一個服務器響應碼
????2、編輯郵件內容和標題格式:
????"From:\r\n"??????????????//僅用于顯示在郵件上的說明發件人(一般與實際發件人的郵箱號一致才行)
????"To:\r\n"(以;分割)???????//僅用于顯示在郵件上的說明一個或多個收件人(隨意)
????"Subject:主題\r\n\r\n"??????????????????//郵件標題
????"內容"??????????????????????????????????//郵件內容
????3、發送EHLO命令標明身份
????4、發送STARTTLS命令標明使用安全傳輸層協議(TLS)
????5、發送AUTH?LOGIN命令使用郵箱登錄
????6、上傳QQ賬號和郵箱密鑰(Base64編碼)
????7、發送MAIL?FROM命令指定發件人,就是當前QQ郵箱.
????8、發送RCPT?TO命令指定一個或多個收件人
????9、發送DATA命令準備開始發送郵件內容
????10、發送內容,內容以\r\n.\r\n結束
????11、發送QUIT命令退出

(具體編寫2017年QQ郵件發信請看:http://blog.csdn.net/aaron133/article/details/78363844)

六、列舉一些SMTP命令:

(注意:每條命令以\r\n結尾,每發送一條SMTP命令,要接收一個服務器數字回應碼)

1、EHLO命令:

發送格式:EHLO 主機名或發送者SMTP服務器名\r\n ? ? ? ?

作用:向服務器標明用戶身份

2、STARTTLS命令:

發送格式:STARTTLS a\r\n

作用:這是使用QQ郵箱時,需要的,這是我根據服務器反饋的錯誤回應碼,知道的命令,我理解的不太透徹,應該為開啟安全傳輸層協議(TLS),a字符是隨便加的,因為他需要后面跟一些字符串才能成功.

3、AUTH?LOGIN命令:

發送格式:AUTH?LOGIN\r\n ? ? ??

作用:郵箱認證,發送該命令后應依次先發送郵箱賬號,后發送密碼(賬號密碼均使用Base64編碼)發送前,需要將賬號密碼字符串轉換為Base64編碼,而且賬號和密碼結尾必須添加上:\r\n

關于Base64編碼:http://blog.csdn.net/aaron133/article/details/78352525

簡單轉換Base64編碼的函數:http://blog.csdn.net/aaron133/article/details/78363844

4、MAIL?FROM命令:

發送格式:MAIL?FROM:?

作用:指定發件人

5、RCPT?TO命令:

發送格式:RCPT?TO:

作用:指定一個或多個收件人,指定多人時,要多次發送RCPT?TO命令.

6、DATA命令:

發送格式:DATA\r\n

作用:表示準備開始發送郵件內容,發送此命令后,接著應發送郵件內容,內容必須以\r\n.\r\n作為結束標記.

7、QUIT命令:

發送格式:QUIT\r\n

作用:退出命令

七、列舉一些三位數字響應碼:

(第一位數字為2,表示命令成功)

(第一位數字為5,表示命令失敗)

(第一位數字為3,表示命令未完成)

1、211 ? 系統狀態或系統幫助響應
2、214 ? 幫助信息
3、220??


八、補充說明:

1、360會報告有第三方軟件在使用郵箱發件.
2、SMTP命令中的HELO命令和EHLO命令是不同的,HELO命令是普通SMTP,不需要身份認證就可以使用MAIL FROM命令,然后發送偽造發送者的郵件,而現在大多數為ESMTP(SMTP擴展),是帶有身份驗證的.



我要點評

評論暫時關閉。
青海快三走势图的跨度