通用快速檢測郵件故障思路方法

通用快速檢測郵件故障思路方法(一)

發一篇我幾年前寫的一些文章。因爲看見很多朋友對於郵件故障的檢測不是很熟。所以希望我的文章內對大夥有啓發。

最早發表於2005年一個朋友的網站。

信息發達的今天,作爲人們工作與生活的必不可少的工具,郵件技術與相關人才是何其重要。所以按納不住,拋一塊磚,希望能引起大家的共同關注,多多共同研究郵件方面的技術。
郵件服器軟件種類繁多,但大都離不開SMTP(簡單郵件傳輸協議),本文就從SMTP協議入手講解如何檢測一般性郵件故障。所以這裏不必考慮你用的是EXCHANGE還是IMAIL等等。
故障設置案例:

突然發現:自己的公司的郵件:[email protected] 不能發郵件給 [email protected] 了?
老闆問你:爲什麼?
常見可能故障:
1.對方郵箱爆滿,附件超過對方郵箱允許容量。
2.對方DNS故障。
3.對方郵件服務器故障。
4.對方拒絕收取你的郵件。
5.其他方面故障,爲省篇幅這裏不做討論。
開刀啦。

一、分析故障從讀NDR開始。

一般郵件傳送失敗,服務器都會給你NDR(NOT DELIVERY REPORT未送達報告)。通過閱讀報告能獲得很多信息。

NDR通常是英文的,夾帶着N多數據如MSID,組織,目的地等,顯得有點亂。不過幸好這種故障NDR都會比較容易的捕捉彙報,通常包含size exceed; data exceed等就說明對方郵箱已滿或者附件過大。

而類似:HOST NOT FIND,COMMUNICATION FAILURE的NDR或者乾脆什麼信息都沒有的呢就需要我們進一步測試了。這也是今天我主要想說的。
二、NSLOOKUP打先鋒。

作用:他的用途很廣泛,基本上作爲一個學網絡尤其是廣域網的人要對這個命令非常熟悉。這裏我們用他來完成以下任務:

1.測試對方的域名是否可以解析,如果不能解析則可能這一時刻對方的DNS服務器故障。導致通訊郵件發送失敗。
2.獲得對方的MX(郵件)紀錄
從NDR中我們可以得到一些信息,HOST NOT FIND(主機未找到),COMMUNICATION FALURE(通訊失敗),這些提示都顯示着網絡的某個地方出現了故障。所以我們就要先從這裏下手。事實上當我從DNR中得不到任何有幫助的信息的時候我也是先這樣開始的:

運行:CMD 鍵入:NSLOOKUP 命令。(WINDOWS系列需NT級系統纔有,你可以使用在CMD中HELP命令獲得NSLOOKUP的使用指南)。
進入操作界面,操作提示符如下:
>
表示開始接受命令狀態。

我只講解兩個有用的關鍵詞

第一個:SERVER

進入NSLOOKUP後,系統會將默認的SERVER設置爲你當前獲得的DNS SERVER。顯示如下
>Default Server:  dns.me.com
>Address:  10.10.10.2

>

有時候因爲CACHE的原因,我們需要用外部更好的DNS SERVER來幫助我們完成測試。比如我LAN網內的DNS爲10.10.10.2,爲了更快更好的獲得結果,我需要用廣東省的鐵通的DNS服務器來幫我完成測試,則敲入:

鍵入:
>SERVER 211.98.2.4

顯示爲:
>Default Server:  ns.cn-railway.net
>Address:  211.98.2.4

>
表示當前默認的DNS解析服務器更改爲211.98.2.4,隨後我們敲入的請求都將從這臺服務器獲得反饋。我們可以測試一下鍵入:
> 163.com
Server:  [ ns.cn-railway.net]
Address:   211.98.2.4
Non-authoritative answer:
Name:    163.com
Addresses:  202.106.168.103, 202.106.168.104, 202.106.168.109, 202.106.168.121
          202.108.36.153

這裏得到的是163.com域名中www這個主機的IP。一般情況下只會有一個IP紀錄。爲什麼有這麼多呢?這裏牽涉到DNS循環來解決服務器負擔問題。我們不做詳細介紹。

第二個:SET TYPE=MX (SET Q=MX)

通常進入NSLOOKUP,默認操作類型爲A紀錄.但是我們要解決的是郵件問題,當然需要查看的是郵件MX紀錄。也就是發送給 [email protected] 的郵件會送到哪臺郵件服務器上去。 這條命令就告訴服務器,我需要獲得該域名的郵件紀錄。set type=mx set q=mx 效果是一樣的。當然如果你要察看A紀錄,也可以用set q=A 切換。
鍵入命令:
>set q=mx
再敲:
>163.com
得到不同結果如下:
Server:  [ ns.cn-railway.net]
Address:   211.98.2.4
Non-authoritative answer:
163.com MX preference = 50, mail exchanger = mx.mail.163.com

mx.mail.163.com internet address = 202.108.44.208
mx.mail.163.com internet address = 202.108.44.209
mx.mail.163.com internet address = 202.108.44.210
mx.mail.163.com internet address = 202.108.44.211
mx.mail.163.com internet address = 202.108.44.215
mx.mail.163.com internet address = 202.108.44.223
mx.mail.163.com internet address = 202.108.44.224
mx.mail.163.com internet address = 202.108.44.228
mx.mail.163.com internet address = 202.108.44.133
mx.mail.163.com internet address = 202.108.44.154
mx.mail.163.com internet address = 202.108.44.155
mx.mail.163.com internet address = 202.108.44.180
mx.mail.163.com internet address = 202.108.44.203
mx.mail.163.com internet address = 202.108.44.207

由上可知,郵件紀錄會發送給mx.mail.163.com這臺服務器。同樣下面列出很多條紀錄對應到不同IP,都是處於緩解服務器負擔,以及備用,分流作用。

特別注意:
1.請多更換幾臺DNS服務器進行測試,因爲不同的DNS會因CACHE不同而得到不同的結果。這樣比較準確的判斷是否爲對方的DNS故障,或者是自己的DNS服務故障。
2.如果使用NSLOOKUP在同一DNS服務器上測試多次以及在不同的服務器上測試多次,如果無法得到A紀錄或者無法得到MX紀錄。則說明對方的DNS出現問題。所以導致無法通訊,發送郵件。某些時候因爲網絡原因會得到
DNS request timed out.
    timeout was 2 seconds.
*** Request to [211.98.4.1] timed-out

類似的結果。請試多幾次。

好了,找到了MX郵件紀錄,下面開始真正的檢測之旅吧,如果你是新手,你一定會覺得下面的檢測居然這麼神奇。下一節你在檢測的同時,你也會明白垃圾郵件,匿名郵件產生的原理了。
 
 
 

通用快速檢測郵件故障思路方法(二)

上一篇文章我說到,如何判定DNS是否故障,以及如何獲得對方域名的MX紀錄。如果我們能正確獲得上述信息也就說明不存在該類問題。則我們進行下一步的檢測。
本章我將介紹如何使用 telnet 來檢測運行簡單郵件傳輸協議 (SMTP) 服務的郵件服務器上,以解決 SMTP 通信問題。默認情況下,SMTP 偵聽端口 25。

在啓動 Telnet 會話之前,必須具有要將此測試郵件發送到的目標用戶的完整 SMTP 電子郵件地址。該電子郵件地址必須採用以下格式:
[email protected]
本例中對應爲:
[email protected]
我們已經使用NSLOOKUP獲取 Internet 郵件交換器記錄163.com的爲:mx.mail.163.com
在CMD窗口中鍵入:

c:\>telnet mx.mail.163.com 25

TELNET 使用格式:telnet 服務器名 端口號

獲得以下信息:

220 Coremail SMTP(Anti Spam) System (163com[20050206])

雖然該條信息220後面的信息可能根據運行的郵件服務器軟件不同而不同,但是符合運行有SMTP服務,並且已經正常啓動了的話,那麼都會給出220消息。所以,如果你已經獲得了220信息,則說明已經成功連接到該服務器。

如果得到其他信息如:
Could not open connection to the host, on port 25: Connection failed
其他信息,則可以說明對方郵件服務存在故障,如服務器當機,相關服務沒有啓動等。導致郵件發送失敗。

假設現在不存在該故障,我們獲得了220信息。我們將進一步檢測故障。

注意:
1.Microsoft Telnet 不允許您使用 Backspace 鍵。如果在鍵入時出錯,必須按 Enter 鍵,然後開始鍵入新的命令。
2.有些 Telnet 應用程序要求您打開本地回顯功能,以查看鍵入的命令。要在 Microsoft Telnet 會話中執行此操作,請在命令提示符處鍵入 set local_echo。
在 Microsoft Windows XP 中,應鍵入 set localecho 而不是 set local_echo。
3.提示:500 Command not recognized
檢查該命令並再次鍵入它,或者驗證您是否正在與 Microsoft SMTP 服務器直接通信。

請按照我的說明觀察以下步驟,紅色字體爲我敲入的命令。黑色部分爲顯示結果,中括號中是我寫的說明:

220 Coremail SMTP(Anti Spam) System (163com[20050206])

helo me.com
[ helo是SMTP動詞集中的一個動詞,me.com是告訴他將與他通訊的是me.com這個域名]

250 mx11   

[如果正常,則給出250消息。可能的故障爲:me.com blocked.則說明你的域名已被該服務器阻止,不能向他發送郵件。解決辦法:與對方管理員溝通將域名放行。]

mail from:[email protected]

[mail from: 告訴他發件人是誰:[email protected]
注意,有些郵件服務器會對郵件地址進行反向檢測,所以儘量使用存在的EMAIL地址,否則可能提示錯誤。]

250 Ok

[如果正常,則給出250消息。可能的故障爲: XXX blocked/refused之類的信息.則說明你的域名或郵件地址已被該服務器阻止,不能向他發送郵件。特別說明:NORTON SMTP GATEWAY 等軟件都可以設置域名,垃圾郵件過濾,他們會參照一些大型的垃圾郵件管理組織的數據庫,如果你的IP已經被列入其中,則這些郵件服務器也會自動將你的郵件BLOCK掉,解決辦法:與對方管理員溝通將域名或郵件地址加入例外中放行,或找ISP與垃圾郵件管理組織溝通將IP解鎖]

rcpt to:[email protected]

[如果正該域中存在這個郵件地址則給出250消息,否則550消息如下:]

550 <[email protected]>: Invalid User

[此處,我們得到我們的故障,[email protected]不存在,或者被禁用所以不能向他發送郵件。故障解決。以下步驟我們學習使用TELNET直接向某郵件地址發送郵件]

rcpt to:
[email protected]

250 Ok

data

[表示下面爲郵件內容]

354 End data with <CR><LF>.<CR><LF> [如果提示郵件內容結束時需要以" . "(半角句號)+回車 結束]

subject:test mail form me.com

[subject: 表示後面是郵件的標題,兩次回車(爲什麼?參見相關SMTP相關文檔)後開始輸入郵件正文。]

as the title.

. [一個回車後輸入 . 號一定要有哦]

250 Ok: queued as SkDBJDx3U0IpFdsF.1
[郵件已放入發送隊列中,有些服務器直接發送出去]
quit
號[退出TELNET]

221 Bye
Connection to host lost.

好了。如果通過以上步驟,我們基本上可以瞭解到郵件發送到各個環節是是否存在故障,如果順利通過而你仍然不能通過OUTLOOK或者其他軟件向該郵箱地址發送郵件的話,則說明故障存在與其他部分,這裏我們就不討論了。留給後面的同志跟上吧。

第三節中我們將講如何測試POP3協議是否運行正常。

設置問題:不能使用POP3協議接受郵件是我的問題,還是服務器問題?
 
 

通用快速檢測郵件故障思路方法(三)

第三節中我們將講如何測試POP3協議是否運行正常。

設置問題:不能使用POP3協議接受郵件是我的問題,還是服務器問題?
本文介紹如何遠程登錄 (Telnet) 到郵件服務器的 110 端口。

備註: 輸入每一行之後請按 ENTER 鍵:
運行以下命令啓動 Telnet 會話,格式如下:
Telnet 服務器IP或域名 110
如telnet pop3.163.com 110
如果建立了連接,將顯示來自服務器的一個說明服務器版本的信息,它類似如下:
+OK Welcome to coremail Mail Pop3 Server (163com[20050206]) ( server_name . domain .com)
通過使用以下命令登錄到郵箱開始通訊:
USER [domain / Windows_NT_account /] Exchange_mailbox

如:user abcd
隨後將顯示以下回應:
+OK core mail
輸入以下命令:
PASS 郵箱的密碼
隨後將顯示以下回應信息,根據不同的服務器而不同。:
+OK 9 message(s) [5622801 byte(s)]
輸入以下命令列出郵箱中的所有郵件:
LIST
將顯示下面的迴應信息(取決於郵箱中的郵件數,該信息會有變化):
+OK
1 2895
2 1160
3 11050
4 126278
5 1503752
6 2858596
7 3352
8 54042
9 1061676
郵件編號是左側的數字
輸入以下命令來檢索郵件:
RETR message number
如:
retr 1
使用郵件編號選中的郵件將顯示在迴應信息中,類似如下:
+OK 1160 octets
Received: from bj.163.com (unknown [202.108.248.91])
        by mx10 (Coremail) with SMTP id GMDGY+9I3kEY8KsE.1
        for <[email protected]>; Fri, 07 Jan 2005 16:31:43 +0800 (CST)
X-Originating-IP: [202.108.248.91]
Received: from bj66.163.com (unknown [202.108.248.66])
        by bj.163.com (Postfix) with ESMTP id CEA05180A2
        for <[email protected]>; Fri,  7 Jan 2005 16:32:19 +0800 (CST)
Message-ID: <[email protected]>
From: "網易部落" <[email protected]>
To: [email protected]
Subject: =?GBK?B?u7bTrcT6vNPI68340teyv8LkoaM=?=
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
charset: gb2312
Date: Fri,  7 Jan 2005 16:32:19 +0800 (CST)
下面是郵件的徵文省略。
退出
quit
+OK core mail
這個過程有助於診斷和解決 POP3 客戶端和位於 Exchange Server 上的郵箱之間的通訊問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章