天天看點

從協定網上搜集的SMTP協定的一些資料以及指令

 .SMTP是工作在兩種情況下:一是電子郵件從客戶機傳輸到伺服器;二是從某一個伺服器傳輸到另一個伺服器 2.SMTP是個請求/響應協定,指令和響應都是基于ASCII文本,并以CR和LF符結束。響應包括一個表示傳回狀态的三位數字代碼 3.SMTP在TCP協定25号端口監聽連接配接請求 4.

1.SMTP是工作在兩種情況下:一是電子郵件從客戶機傳輸到伺服器;二是從某一個伺服器傳輸到另一個伺服器

2.SMTP是個請求/響應協定,指令和響應都是基于ASCII文本,并以CR和LF符結束。響應包括一個表示傳回狀态的三位數字代碼

3.SMTP在TCP協定25号端口監聽連接配接請求

4.連接配接和發送過程:

a.建立TCP連接配接

b.用戶端發送HELO指令以辨別發件人自己的身份,然後用戶端發送MAIL指令伺服器端正希望以OK作為響應,表明準備接收

c.用戶端發送RCPT指令,以辨別該電子郵件的計劃接收人,可以有多個RCPT行伺服器端則表示是否願意為收件人接受郵件

d.協商結束,發送郵件,用指令DATA發送

e. 以.表示結束輸入内容一起發送出去

f.結束此次發送,用QUIT指令退出。

5.另外兩個指令:

VRFY---用于驗證給定的使用者郵箱是否存在,以及接收關于該使用者的詳細資訊。

EXPN---用于擴充郵件清單。

6.郵件路由過程:

  SMTP伺服器基于‘域名服務DNS中計劃收件人的域名來路由電子郵件。SMTP伺服器基于DNS中的MX記錄來路由電子郵件,MX記錄注冊了域名和相關的SMTP中繼主機,屬于該域的電子郵件都應向該主機發送。

a.Sendmail請求DNS給出主機mail.cnpaf.net的CNAME記錄,如有,假若CNAME到mail.cnpaf.net,則再次請求mail.cnpaf.net的CNAME記錄,直到沒有為止

b.假定被CNAME到mail.cnpaf.net,然後sendmail請求@abc.com域的DNS給出mail.cnpaf.net的MX記錄

shmail    MX   5   mail.cnpaf.net

           0   shmail2.abc.com

c. Sendmail最後請求DNS給出mail.cnpaf.net的A記錄,即IP位址,若傳回值為1.2.3.4

7.SMTP基本指令集:

指令       描述

------------------------------

HELO      向伺服器辨別使用者身份發送者能欺騙,說謊,但一般情況下伺服器都能檢測到。

MAIL      初始化郵件傳輸

          mail form :

RCPT      辨別單個的郵件接收人;常在MAIL指令後面  可有多個rcpt to:

DATA      在單個或多個RCPT指令後,表示所有的郵件接收人已辨別,并初始化資料傳輸結束。

VRFY      用于驗證指定的使用者/郵箱是否存在;由于安全方面的原因,伺服器常禁止此指令

EXPN      驗證給定的郵箱清單是否存在,擴充郵箱清單,也常被禁用

HELP      查詢伺服器支援什麼指令

NOOP      無操作,伺服器應響應OK

QUIT      結束會話

RSET      重置會話,目前傳輸被取消

--------------------------------

8. MAIL form 指令中指定的位址是稱作 envelope form 位址,不需要和發送者自己的位址是一緻的。

      RCPT TO 與之等同,指明的接收者位址稱為envelope to位址,而與實際的to:行是什麼無關。

9.為什麼沒有RCPT CC和RCPT BCC:?

   所有的接收者協商都通過RCPT TO指令來實作,如果是BCC,則協商發送後在對方接收時被删掉信封接收者

10.郵件被分為信封部分,信頭部分和信體部分

   envelope form , envelope to 與message form :, message to:完全不相幹。

   evnelope是由伺服器主機間SMTP背景提供的,而message form /to是由使用者提供的。有無冒号也是差別。

11. 怎樣由信封部分檢查是否一封信是否是僞造的?

a. received行的關聯性。

   現在的SMTP郵件傳輸系統,在信封部分除了兩端的内部主機處理的之個,考慮兩個公司防火牆之間的部分,若兩台防火牆機器分别為A和B,但接收者檢查信封received:行時發現經過了C.則是僞造的。

b. received:行中的主機和IP位址對是否對應如:

   Receibed: form  galangal.org (turmeric.com [104.128.23.115] by mail .bieberdorf.edu....

c. 被人手動添加在最後面的received行:

    Received: form  galangal.org ([104.128.23.115]) by mail .bieberdorf.edu (8.8.5)

    Received: form  lemongrass.org by galangal.org (8.7.3)

    Received: form  graprao.com by lemongrass.org (8.6.4)

POP3指令清單:

一般telnet pop3Server 110後就可以用這些指令了,大小寫不敏感,不包括密碼本身,注意不要讓密碼回顯,等驗證通過後再允許回顯好了。

user username 認可

pass password 認可 執行成功則狀态轉換

apop name,digest 認可 一種安全傳輸密碼的辦法,執行成功導緻狀态轉換,請參見RFC 1321

stat 處理 請求server回送郵箱統計資料,如郵件數、郵件總位元組數

uidl n 處理 server傳回用于該指定郵件的唯一辨別,如果沒有指定,傳回所有的

list n 處理 server傳回指定郵件的大小等

retr n 處理 server傳回郵件的全部文本

dele n 處理 server标記删除,quit指令執行時才真正删除

rset 處理 撤消所有的dele指令

top n,m 處理 傳回n号郵件的前m行内容,m必須是自然數

noop 處理 server傳回一個肯定的響應

quit client希望結束會話。如果server處于'處理' 狀态,則現在進入'更新'狀态,删除那些标記成删除的郵件。如果server處于'認可'狀态,則結束會話時server不進入'更新'狀态

關于apop指令

如果client使用user指令,密碼将是明文。使用apop指令時,client第一次與server連接配接時,server向client發送一個ascii碼問候,該問候由一個字元串組成,它對于每個client的連接配接都是唯一的,client把它的純文字密碼附加到從server接收到的字元串之後,然後計算結果字元串的MD5摘要,client把username和MD5摘要作為apop指令的參數一起發送出去。

telnet pop3Server 110

user username

pass ****

stat

list

retr 1

retr 2

...

dele 1

dele 2

quit

繼續閱讀