SMTP Commands with Telnet mailserver 25

SMTP Commands

下列是 Mail Client 用來與 Server 溝通的指令。這些指令沒有大小寫的區別(not case sensitive)。

HELO

 
 

啟始與 Mail Server 之間的對話。一般來說,HELO 是 Mail client 送出的第一個指令,用途是告訴 Mail Server 來者為何,通常我們會把電腦的 domain name 告訴 Server。例如:

Helo mail.companyName.com

MAIL FROM  
  告訴 Server 發信人是誰,例如:

MAIL FROM: google@yahoo.com

注意,這邊的發信人郵件地址並不會顯示在信件的寄件者欄中,當信件無法順利送到目的地時,退回的信件就會寄到這個地方。(寄件者欄、收件者欄、標題欄、副本、密件副本欄,這些是在 Message 的 Header 中指定的。有關 Mail Message 的格式,請參考 Email Service 投影片。)

RCPT TO  
  告訴 Server 收件人是誰,例如:

RCPT TO: yahoo@google.com

如果需要同時寄一封信給很多人,多下幾次 RCPT TO 指令即可。如果給的不是完整的 e-mail address,代表要寄信到該台 Mail Server 的指定信箱,例如:

RCPT TO: kimo

意思就是要寄信到連線中這台 Mail Server 的 kimo 這個信箱。有一點要注意的是,為了避免成為發垃圾信的工具,大部份 Mail Server 是不允許你透過它寄信到其它地方的,除非先經過身份的確認

DATA  
  告訴 Server 你已經準備好要開始輸入信件的本文了(Mail Message, 包括 Message Header 與 Message Body)。要結束 Message 的輸入時,在信件結尾輸入個 . 點符號即可。
NOOP  
  NOOP 是『NO OPeration 』的縮寫,用途是請 Server 回應一下,藉此讓 Client 得以確定與 Server 的連線還在。
QUIT  
  結束對話,關閉與 Server 間的連線。

SMTP Server Reply codes

每當 Mail Client 丟出一個指令,Server 這端就會回應一個固定格式的訊息:一個 3 位數的數字,然後緊接的一串文字描述,說明 Server 收到 client 端傳來的指令之後,Server 處理完後的情形,例如:

250 ok

或是

221 Bye bye

底下列出 Mail Server 回傳的各個代碼以及文字說明(只要下的 SMTP 指令正確,底下絕大部份的代碼應該都不會遇到的!):

221

 
  A system status or help reply
214  
  Help Message
220  
  The server is ready.
221  
  The server is ending the conversation.
250  
  The requested action was completed
251  
  The specified user is not local, but the server will forward the mail message
354  
  This is a reply to the DATA command. After getting this, start sending the body of the mail message, ending with "\r\n.\r\n."
421  
  The mail server will be shut down. Save the mail message and try again later
450  
  The mailbox that you are trying to reach is busy. Wait a little while and try again.
451  
  The requested action was not done. Some error occurmiles in the mail server
452  
  The requested action was not done. The mail server ran out of system storage.
500  
  The last command contained a syntax error or the command line was too long.
501  
  The parameters or arguments in the last command contained a syntax error.
502  
  The mail server has not implemented the last command.
503  
  The last command was sent out of sequence. For example, you might have sent DATA before sending RECV
504  
  One of the parameters of the last command has not been implemented by the server.
550  
  The mailbox that you are trying to reach can't be found or you don't have access rights.
551  
  The specified user is not local; part of the text of the message will contain a forwarding address.
552  
  The mailbox that you are trying to reach has run out of space. Store the message and try again tomorrow or in a few days-after the user gets a chance to delete some messages.
553  
  The mail address that you specified was not syntactically correct
554  
  The mail transaction has failed for unknown causes.

SMTP Authentication

由於 SMTP 協定極為簡單,任何人只要懂得 SMTP 指定,就有可能寫出自動發廣告信、垃圾信的程式。為了防堵這些日益氾濫的垃圾信件,後來就出現了加強版的 ESMTP 協定 (Enhanced SMTP ),支援 ESMTP 的 Mail Server 會對那些和它連線的 Mail Client 有較為嚴格的要求,在某些狀況下,例如要透過 Server 發信到其它地方,而非寄到本地的信箱時,限制他們必須先通過身份的驗證,才允許發信出去。(換句話說,如果你透過了身份的確認,要發信到什麼地方都是可以的!)

一般而言,現在網路上的 Mail Server 主要支援兩種驗證身份的方式: 1. 明碼驗證 和 2. base64 編碼驗證。

  1. 明碼驗證

明碼驗證指的是,當 Client 要跟 Server 進行身份驗證時,傳送的 username 和 password 不需要經過任何編碼,只要送給 Server 端 AUTH PLAIN 這個指令後,再直接將 username 和 password 傳給 Server 端,Server 就會進行身份的驗證。(註:大部份 Mail Server 甚至連明碼驗證都覺得不夠安全,因而捨棄這種方式只支援 base64 編碼驗證!)

  1. base64 編碼驗證

當 Client 端送出 AUTH LOGIN 這個指令到 Server 端時,代表著要使用 base64 編碼的身份驗證。此時 Client 端就必須先將 username 和 password 以 base64 演算法編碼之後,再傳送給 Server 端,Server 這端在拿到編碼字串後先做解碼然後再進行驗證。底下是個 base64 編碼驗證成功的範例畫面,畫面上的 username 和 password 已經使用 base64 演算法編碼過。:

你可以不用自己撰寫 base64 演算法,有一些網站提供了線上 base64 編碼的服務,例如:http://www.motobit.com/util/base64-decoder-encoder.asp。在 ActiveTcl 中,也有 base64 的套件可供使用,底下是個 base64 編碼的範例:

# Load base64 package
package require base64

# encode username "maa", you'll get "bWFh"
base64::encode maa

# encode password "12345", you'll get "MTIzNDU="
base64::
encode 12345

Read more

世界越快心越慢

在晚飯後的休息時間,我特別享受在客廳瀏灠youtube上各樣各式創作者的影音作品。很大不同於傳統媒體,節目多是針對大多數族群喜好挑選的,在youtube上我會依心情看無腦的動畫、一些旅拍記錄、新聞時事談論。 尤其在看了大量的Youtube的分享後,我真的感受到會限制我的是我的無知,特別是那些我想都沒想過的實際應用,在學習後大大幫助到我的生活和工作層面。 休息在家時,我喜歡想一些沒做過的菜,動手去設計生活和工作上的解決方案,自己是真的很難閒著沒事做。 如創作文章,陪養新的習慣都能感覺到成長的喜悅,是不同於吃喝玩樂的快樂的。 創作不去限制固定的形式,文字是創作、影像聲音也是創作,記錄生活也是創作,我想留下的就是創造—》實現—》回憶,這樣子的循環過程,在留下的足跡面看到自己一路上的成長、失敗、絕望、重新再來。 雖然大部份的時候去做這些創作也不明白有什麼特別的意義,但不去做也不會留下什麼,所以呀不如反事都去試試看,也許能有不一樣的水花也許有意想不到的結果,投資自己永遠不會是失敗的決定,不是嗎?先問問自己再開始計畫下一步,未來沒人說得準。 像最近看youtube仍大一群人在為DOS開

By Phillips Hsieh

知識管理的三個步驟:一小時學會把知識運用到生活上

摘錄瓦基「閱讀前哨站」文章作為自己學習知識管理的內容 Part1「篩選資訊」 如何從海量資訊中篩選出啟發性、實用性和相關性的精華,讓你在學習過程中不再迷失方向。 1. 實用性 2. 啟發性 Part2「提高理解」 如何通過譬喻法和應用法,將抽象的知識與日常生活和工作緊密結合,建立更深刻的理解。 1. 應用法 2. 譬喻法 Part3「運用知識」 如何連結既有知識,跟自己感興趣的領域和專案產生關聯,讓你在運用知識的路途上游刃有餘。 1. 跟日常工作專案、人際活動產生連結 # 為什麼要寫日記? * 寫日記是為了忘記,忘卻瑣碎事情,保持專注力 * 寫日記就像在翻譯這個世界,訓練自己的解讀能力 * 不只是透過日記來記錄生活,而是透過日記來發展生活 #如何寫日記? * 不要寫流水帳式的日記,而是寫覆盤式的日記 當我們試著記錄活動和感受之間的關聯,有助於辦認出真正快樂的事 日記的記錄方式要以過程為主,而非結果 * 感恩日記的科學建議,每日感恩的案例

By Phillips Hsieh
2024年 3月30日 14屆美利達環彰化百K

2024年 3月30日 14屆美利達環彰化百K

這是場半小時就被秒報名額滿的經典賽事, 能順利出賽實屬隊友的功勞, 這次的準備工作想試試新買的外胎, 因為是無內胎用的外胎, 特別緊超級難安裝的, 問了其他朋友才知道, 要沾上肥皂水才容易滑入車框。 一早四點起床準備, 五點集合備好咖啡在車上飲用, 約了六點在彰化田尾鄉南鎮國小, 整好裝四人一起出發前往會場。 被排在最後一批出發, 這次的路線會繞行的員林148上139縣道, 其實在早上五點多天就開始有點飄雨, 大伙就開始擔心不會要雨戰吧! 果不其然才出發準備上148爬坡雨勢越來越大, 戴著防風眼鏡的我在身體的熱氣加上雨水冷凝效果下, 鏡面上滿是霧氣肉眼可視距離才剩不到五公尺, 只能緊依前前方的車友幫忙開路, 之後洪大跟上來我立馬請求他幫忙開路, 上了139停下車把防風眼鏡收起來, 反正下雨天又陰天完全用不到太陽眼鏡了。 雨是邊下邊打雷, 大伙都在這條139上一台一台單車好像避電針, 一時有點害怕不然想平時沒做什麼壞事, 真打到自己就是天意了。 下了139雨勢開始變小, 大伙的速度開始有所提昇, 開高鐵列車的時機己成熟, 物色好列車就跟好跟滿。 最後找了一隊似乎整團有固定在練

By Phillips Hsieh
2023 12月9號 美利達單車嘉年華

2023 12月9號 美利達單車嘉年華

第二次參加美利達環南投賽事, 還記得去年第一次參加這美利達環南投, 還特地提前一天跟車友在魚池住了一晚。 這回用上了剛在7月份剛安裝的車頂架, 安裝了二種不同的攜車架, 都樂這邊可以不用拆車輪直上車頂, YAKIMA這邊選了經濟的款式, 折掉前輪利用前叉固定在攜車架上。 約了唯一一位一起參加的朋友, 二人一早四點約見面, 幫朋友帶上了拿鐵咖啡, 開上日月潭在水社碼頭停好車, 騎往向山遊客中心, 路過美麗的日月潭簡直不要太美了拍一張。 抵達會場己是人山人海了, 跟著大伙排隊順便也看網紅也欣賞名車。 出發就先沿著日月潭順時針騎, 騎到玄裝寺很急停下來上一下廁所, 比賽時都會尿都特別的滿, 一方面是比較緊張,一方面是特別興奮。 這時己經跟車友失散了, 只能獨推沿路看有沒有車友可以一起組隊的, 很可惜在山區大家的實力不一只求平安順騎了, 原則就是有補給就停有食物就吃。 下到水里人群再次聚集起來, 光等紅綠燈就是一條車龍。 騎行了一大圈水里再回到131縣道, 這時背後傳來熟悉的聲音叫菲哥, 終於跟車友重新集合接下來就一路邊聊邊騎。 最後來幾張專業攝影師拍攝的照片 回到終點台上

By Phillips Hsieh