熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

SMTP協議原始命令碼和工作原理

2013-11-11 21:51:33  來源: Windows系統管理 

  SMTP是工作在兩種情況下一是電子郵件從客戶機傳輸到服務器二是從某一個服務器傳輸到另一個服務器
  SMTP是個請求/響應協議命令和響應都是基於ASCII文本並以CR和LF符結束響應包括一個表示返回狀態的三位數字代碼
  SMTP在TCP協議號端口監聽連接請求
  連接和發送過程
  a建立TCP連接
  b客戶端發送HELO命令以標識發件人自己的身份然後客戶端發送MAIL命令服務器端正希望以OK作為響應表明准備接收
  c客戶端發送RCPT命令以標識該電子郵件的計劃接收人可以有多個RCPT行服務器端則表示是否願意為收件人接受郵件
  d協商結束發送郵件用命令DATA發送
  e表示結束輸入內容一起發送出去
  f結束此次發送用QUIT命令退出
  另外兩個命令
  VRFY用於驗證給定的用戶郵箱是否存在以及接收關於該用戶的詳細信息
  EXPN用於擴充郵件列表
  郵件路由過程
  SMTP服務器基於域名服務DNS中計劃收件人的域名來路由電子郵件SMTP服務器基於DNS中的MX記錄來路由電子郵件MX記錄注冊了域名和相關的SMTP中繼主機屬於該域的電子郵件都應向該主機發送
  若SMTP服務器收到一封信要發到:
  aSendmail請求DNS給出主機的CNAME記錄如有假若CNAME到則再次請求的CNAME記錄直到沒有為止
  b假定被CNAME到然後sendmail請求域的DNS給出的MX記錄shmail MX
  
  c Sendmail最後請求DNS給出的A記錄即IP地址若返回值為
  d Sendmail與連接傳送這封給的信到這台服務器的SMTP後台程序
  SMTP基本命令集
  命令 描述
  HELO 向服務器標識用戶身份
  發送者能欺騙說謊但一般情況下服務器都能檢測到
  MAIL 初始化郵件傳輸
  mail from:
  RCPT 標識單個的郵件接收人常在MAIL命令後面可有多個rcpt to:
  DATA 在單個或多個RCPT命令後表示所有的郵件接收人已標識並初始化數據傳輸結束
  VRFY 用於驗證指定的用戶/郵箱是否存在由於安全方面的原因服務器
  常禁止此命令
  EXPN 驗證給定的郵箱列表是否存在擴充郵箱列表也常被禁用
  HELP 查詢服務器支持什麼命令
  NOOP 無操作服務器應響應OK
  QUIT 結束會話
  RSET 重置會話當前傳輸被取消
  
   MAIL FROM命令中指定的地址是稱作 envelope from地址不需要和發送者自己的地址是一致的
  RCPT TO 與之等同指明的接收者地址稱為envelope to地址而與實際的to行是什麼無關
  為什麼沒有RCPT CC和RCPT BCC:?
  所有的接收者協商都通過RCPT TO命令來實現如果是BCC則協商發送後在對方接收時被刪掉信封接收者
  郵件被分為信封部分信頭部分和信體部分
  envelope from envelope to 與message from: message to:完全不相干
  evnelope是由服務器主機間SMTP後台提供的而message from/to是由用戶提供的有無冒號也是區別
   怎樣由信封部分檢查是否一封信是否是偽造的?
  a received行的關聯性
  現在的SMTP郵件傳輸系統在信封部分除了兩端的內部主機處理的之個考慮兩個公司防火牆之間 的部分若兩台防火牆機器分別為A和B但接收者檢查信封received行時發現經過了C則是偽造的
  b received行中的主機和IP地址對是否對應如
  Receibed: from ( [] by mail
  bieberdorfedu
  c 被人手動添加在最後面的received行
  Received: from ([]) by mail bieberdorf edu ()
  Received: from by ()
  Received: from by ()
  

From:http://tw.wingwit.com/Article/os/xtgl/201311/9344.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.