字體:小 中 大 | |
|
|
2009/10/05 20:01:15瀏覽10187|回應0|推薦1 | |
電子郵件 (e-mail) 是許多人認識網際網路的開始,也是所有網際網路服務中最普遍的一項應用。雖然既新且夯的服務如 Twitter、Plurk、Facebook 等不斷被推出,但這個發明了幾十年的服務永遠老神在在,無法被取代。
用過電子郵件的人都有類似經驗,三不五時總會遇到被退信或寄出的信件石沉大海,其發生的原因很多,可能是打字錯誤,也可能是自己或對方的主機有問題,很多時候別人幫不上忙,因此最好學個幾招自己解決問題。 現在廣為使用的電子郵件是仿效真實世界的郵務系統的,使用者用來讀取自己信箱的協定為 POP 或 IMAP;使用者與主機間,以及主機與主機間用來傳送信件的協定為 SMTP。信件被退或遺失代表自己或對方的主機無法處理送出的信件,因此必須測試 SMTP 主機。 更由於我們發現問題時,信件早已從己端的 SMTP 主機寄出,這表示己端的 SMTP 服務應屬正常,因此問題可能在彼端,測試的範圍便著重在收件人端的 SMTP 主機。 《測試前準備一》:SMTP 主機資訊 有幾種方式可以獲得收件人的 SMTP 主機的資訊。 方法一、經由口頭詢問或其它管道得知。 方法二、測試郵件地址 usernam@xxxxxx 的右半部,例如:xxxx@ms1.hinet.net 其中 ms1.hinet.net 即為 SMTP 主機,此可利用測試 TCP 25 埠 (telnet ms1.hinet.net 25) 驗證之(後詳)。 方法三、利用 nslookup 查詢 MX 紀錄。步驟如下:【看範例】 1. 執行 "開始 -> 執行 -> cmd" 進入 DOS 命令提示字元。 2. 輸入 nslookup。 3. 在提示號 > 下輸入 set query=mx 4. 輸入對方郵件地址的主機。 出現的 MX (mail exchanger)紀錄即是該網域的 SMTP 主機。 《測試前準備二》:測試命令稿 測試時,由於須重複輸入相同的內容,因此將所有 SMTP 命令及測試信內容暫存在任何文字編輯器內,利用複製剪貼的方式以節省時間。 SMTP 交談命令: helo [domain name] mail from: [sender's address] rcpt to: [receiver's address] data (以句點及換行做為結束) quit 測試信內容: Reply-To: [sender's address] From: [sender's address] To: [receiver's address] Subject: Test mail Hello. I'm sending this test mail to verify the correctness of your email box. If you receive this message, please reply. Thanks. ※ 若無須測試信,則可跳過 data 命令。 《測試方法》: 我們以 GMail 端 c??????g@gmail.com 當作是寄件人(測試者),HiNet 端 c??????g@ms1.hinet.net 當作收件人(被測者),進行包括成功和失敗的各種測試。測試時以 telnet 程式連接到彼端 SMTP 主機的 TCP 25 埠【看範例】,然後逐項輸入 SMTP 交談命令及測試信內容。 測試一、c??????g@gmail.com 寄給 c??????g@ms1.hinet.net。寄件人和收件人都正確,信件正確到達。【看過程】【看結果】 測試二、c??????g@gmail.com 寄給 c??????g@hinet.net。收件人地址之主機錯誤,但信件石沉大海,也無退信。【看過程】 測試三、c??????g@gmail.com 寄給 c??????g@ms1.hinet。收件人之主機錯誤,信件被退信,錯誤訊息為 Host Unknown。【看過程】【看結果】 測試四、c??????g@gmail.com 寄給 c!!!!!!g@ms1.hinet.net。收件人之名稱錯誤,信件被退信,錯誤訊息為 User Unknown。【看過程】【看結果】 由於某些 SMTP 主機為避免被當成跳板轉寄垃圾信,可能採取不同的管理策略管制信件的傳送,例如身份認證、網域反查等,另外對傳送失敗的信件也可能直接捨棄,因此測試結果可能視不同主機而有差異。 《網路上的測試工具》: 基於相同原理,網路上有許多現成可用的測試工具,可以省去不少麻煩。 |
|
( 興趣嗜好|電腦3C ) |