smtp交易指令教學,可以用來測試smtp郵件伺服器是否正常

管理郵件伺服器,常常需要面對許多SMTP問題處理,有時候郵件伺服器明明運作中,但無法對外接收郵件?

此時問題可能出在DNS、網路、防火牆等等問題?但該如何判斷本身SMTP到底是什麼問題?

如果要確認什麼問題,除了對管理郵件伺服器的相關設定要熟悉外,學會SMTP交易指令是必要!

那學習SMTP交易指令有什麼好處呢?

1.了解SMTP到底如何運作

2.可以得知郵件伺服器是否work或被阻擋

3.可以得知可能郵件在那一階段出了問題

4.大致了解為什麼垃圾郵件是怎麼來

什麼是SMTP?

SMTP (Simple Mail Transport Protocol) 又稱 "簡單郵件傳輸協議" 是電子郵件傳輸的標準協定。
簡單說SMTP就是用來傳送電子郵件的伺服器,也是目前郵件傳送通訊標準,它使用的是TCP/IP連接埠是25 (port 25)。
在發送電子郵件時, 電子郵件就必須經過SMTP 伺服器, 在待SMTP電郵伺服器檢驗, 然後再轉發到收件者的電郵伺服器。
那SMTP怎麼交易的呢?其實很簡單,SMTP透過如下圖交易流程,來達成郵件傳送的

 

故接下來我們可以利用telnet 指令與smtp server來寄送一封信,

首先   

  1.利用telnet smtp的hostname/ip 25  按Enter (如: telnet 127.0.0.1 25)

    此時SMTP會回應 220 xxxxx smtp server   

    (各位會發現回應前面3碼是個數字,通常smtp的交易利用前面這3碼來判斷是否正確,一般正確為2XX,若5XX開頭此時smtp交易就會中斷)

  2.打helo  xxxxxx   按Enter

    SMTP回應如   250 msr43.hinet.net Hello x-x-x-x.HINET-IP.hinet.net [x.x.x.x], pleased to meet you

  3.mail from : abc@msa.hinet.net    按Enter       <-------指這封郵件從誰寄過來的!

    SMTP回應如  250 abc@msa.hinet.net... Sender ok     <--------"確定寄件者"

  4. rcpt to : abc@msa.hinet.net    按Enter               <----------寄給誰
     SMTP回應如  250 abc@msa.hinet.net... Recipient ok         <----------"收件者確認"

  5.data  按Enter    <-------------- "開始編輯郵件內容"

     SMTP回應如  354 Enter mail, end with "." on a line by itself  <--------- "指可以開始輸入body及表頭 並且在新的一行輸入點號代表結束"
        to:abc
        subject: test
               test
         .             <--------------- "點號結束編輯郵件內容"                

    SMTP回應     250 UAA01416 Message accepted for delivery   <--------------- 使用者就會收到一封信

 

實際操作可以參考如下圖:

故我們學習這些指令後,就可以了解到SMTP郵件傳送大致方式,透過這些指令我們可以了解郵件那個部份可能出了狀況