Smtp,Pop3命令簡介 
 

Smtp命令列表: 
                   
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中繼主機,屬於該域的電子郵件都應向該主機發送。 

若SMTP伺服器mail.abc.com收到一封信要發到shuser@sh.abc.com: 

a.Sendmail請求DNS給出主機sh.abc.com的CNAME記錄,如有,假若CNAME到shmail.abc.com,則再次 
請求shmail.abc.com的CNAME記錄,直到沒有為止 
b.假定被CNAME到shmail.abc.com,然後sendmail請求@abc.com域的DNS給出shmail.abc.com的MX記錄, 
   shmail    MX   5   shmail.abc.com 
                  10   shmail2.abc.com 
c. Sendmail最後請求DNS給出shmail.abc.com的A記錄,即IP地址,若返回值為1.2.3.4 
d. Sendmail與1.2.3.4連接,傳送這封給shuser@sh.abc.com的信到1.2.3.4這台伺服器的SMTP後台程序 

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