郵件故障查詢及解決方法
信息發(fā)達(dá)的今天,作為人們工作與生活的必不可少的工具,郵件技術(shù)與相關(guān)人才是何其重要。所以按納不住,拋一塊磚,希望能引起大家的共同關(guān)注,多多共同研究郵件方面的技術(shù)。 郵件服器軟件種類繁多,但大都離不開SM
信息發(fā)達(dá)的今天,作為人們工作與生活的必不可少的工具,郵件技術(shù)與相關(guān)人才是何其重要。所以按納不住,拋一塊磚,希望能引起大家的共同關(guān)注,多多共同研究郵件方面的技術(shù)。 郵件服器軟件種類繁多,但大都離不開SMTP (簡單郵件傳輸協(xié)議),本文就從SMTP 協(xié)議入手講解如何檢測一般性郵件故障。所以這里不必考慮你用的是EXCHANGE 還是IMAIL 等等。
故障設(shè)置案例:
突然發(fā)現(xiàn):自己的公司的郵件:mymail@me.com 不能發(fā)郵件給 abc@163.com 了? 老板問你:為什么?
常見可能故障:
1. 對方郵箱爆滿,附件超過對方郵箱允許容量。
2. 對方DNS 故障。
3. 對方郵件服務(wù)器故障。
4. 對方拒絕收取你的郵件。
5. 其他方面故障,為省篇幅這里不做討論。
開刀啦。
一、分析故障從讀NDR 開始。
一般郵件傳送失敗, 服務(wù)器都會給你NDR(NOT DELIVERY REPORT未送達(dá)報告) 。通過閱讀報告能獲得很多信息。
NDR 通常是英文的,夾帶著N 多數(shù)據(jù)如MSID ,組織,目的地等,顯得有點亂。不過幸好這種故障NDR 都會比較容易的捕捉匯報,通常包含size exceed; data exceed等就說明對方郵箱已滿或者附件過大。
而類似:HOST NOT FIND,COMMUNICATION FAILURE的NDR 或者干脆什么信息都沒有的呢就需要我們進(jìn)一步測試了。這也是今天我主要想說的。
二、NSLOOKUP 打先鋒。
作用:他的用途很廣泛,基本上作為一個學(xué)網(wǎng)絡(luò)尤其是廣域網(wǎng)的人要對這個命令非常熟悉。這里我們用他來完成以下任務(wù):
1. 測試對方的域名是否可以解析,如果不能解析則可能這一時刻對方的DNS 服務(wù)器故障。導(dǎo)致通訊郵件發(fā)送失敗。
2. 獲得對方的MX (郵件)紀(jì)錄
從NDR 中我們可以得到一些信息,HOST NOT FIND (主機(jī)未找到),COMMUNICATION FALURE (通訊失?。?,這些提示都顯示著網(wǎng)絡(luò)的某個地方出現(xiàn)了故障。所以我們就要先從這里下手。事實上當(dāng)我從DNR 中得不到任何有幫助的信息的時候我也是先這樣開始的:
運行:CMD 鍵入:NSLOOKUP 命令。(WINDOWS 系列需NT 級系統(tǒng)才有,你可以使用在CMD 中HELP 命令獲得NSLOOKUP 的使用指南)。
進(jìn)入操作界面,操作提示符如下:
>
,表示開始接受命令狀態(tài)。
我只講解兩個有用的關(guān)鍵詞
第一個:SERVER
進(jìn)入NSLOOKUP 后,系統(tǒng)會將默認(rèn)的SERVER 設(shè)置為你當(dāng)前獲得的DNS SERVER 。顯示如下
>Default Server: dns.me.com
>Address: 10.10.10.2
>
有時候因為CACHE 的原因,我們需要用外部更好的DNS SERVER 來幫助我們完成測試。比如我LAN 網(wǎng)內(nèi)的DNS 為10.10.10.2,為了更快更好的獲得結(jié)果,我需要用廣東省的鐵通的DNS 服務(wù)器來幫我完成測試,則敲入:
鍵入:
>SERVER 211.98.2.4
顯示為:
>Default Server: ns.cn-railway.net
>Address: 211.98.2.4
>
表示當(dāng)前默認(rèn)的DNS 解析服務(wù)器更改為211.98.2.4,隨后我們敲入的請求都將從這臺服務(wù)器獲得反饋。我們可以測試一下鍵入:
> 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 這個主機(jī)的IP 。一般情況下只會有一個IP 紀(jì)錄。為什么有這么多呢?這里牽涉到DNS 循環(huán)來解決服務(wù)器負(fù)擔(dān)問題。我們不做詳細(xì)介紹。
第二個:SET TYPE=MX (SET Q=MX)
通常進(jìn)入NSLOOKUP ,默認(rèn)操作類型為A 紀(jì)錄. 但是我們要解決的是郵件問題,當(dāng)然需要查看的是郵件MX 紀(jì)錄。也就是發(fā)送給 abc@163.com 的郵件會送到哪臺郵件服務(wù)器上去。 這條命令就告訴服務(wù)器,我需要獲得該域名的郵件紀(jì)錄。set type=mx set q=mx 效果是一樣的。當(dāng)然如果你要察看A 紀(jì)錄,也可以用set q=A 切換。
,鍵入命令:
>set q=mx
再敲:
>163.com
得到不同結(jié)果如下:
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
由上可知,郵件紀(jì)錄會發(fā)送給mx.mail.163.com 這臺服務(wù)器。同樣下面列出很多條紀(jì)錄對應(yīng)到不同IP ,都是處于緩解服務(wù)器負(fù)擔(dān),以及備用,分流作用。
特別注意:
1. 請多更換幾臺DNS 服務(wù)器進(jìn)行測試,因為不同的DNS 會因CACHE 不同而得到不同的結(jié)果。這樣比較準(zhǔn)確的判斷是否為對方的DNS 故障,或者是自己的DNS 服務(wù)故障。
2. 如果使用NSLOOKUP 在同一DNS 服務(wù)器上測試多次以及在不同的服務(wù)器上測試多次,如果無法得到A 紀(jì)錄或者無法得到MX 紀(jì)錄。則說明對方的DNS 出現(xiàn)問題。所以導(dǎo)致無法通訊,發(fā)送郵件。某些時候因為網(wǎng)絡(luò)原因會得到
DNS request timed out.
timeout was 2 seconds.
*** Request to [211.98.4.1] timed-out
類似的結(jié)果。請試多幾次。
好了,找到了MX 郵件紀(jì)錄,下面開始真正的檢測之旅吧,如果你是新手,你一定會覺得下面的檢測居然這么神奇。下一節(jié)你在檢測的同時,你也會明白垃圾郵件,匿名郵件產(chǎn)生的原理了。
,上一篇文章我說到,如何判定DNS 是否故障,以及如何獲得對方域名的MX 紀(jì)錄。如果我們能正確獲得上述信息也就說明不存在該類問題。則我們進(jìn)行下一步的檢測。
本章我將介紹如何使用 telnet 來檢測運行簡單郵件傳輸協(xié)議 (SMTP) 服務(wù)的郵件服務(wù)器上,以解決 SMTP 通信問題。默認(rèn)情況下,SMTP 偵聽端口 25。
在啟動 Telnet 會話之前,必須具有要將此測試郵件發(fā)送到的目標(biāo)用戶的完整 SMTP 電子郵件地址。該電子郵件地址必須采用以下格式:
User@Site.Domain.com
本例中對應(yīng)為:
abc@163.com
我們已經(jīng)使用NSLOOKUP 獲取 Internet 郵件交換器記錄163.com 的為:mx.mail.163.com 在CMD 窗口中鍵入:
c:>telnet mx.mail.163.com 25
TELNET 使用格式:telnet 服務(wù)器名 端口號
獲得以下信息:
220 Coremail SMTP(Anti Spam) System (163com[20050206])
雖然該條信息220后面的信息可能根據(jù)運行的郵件服務(wù)器軟件不同而不同,但是符合運行有SMTP 服務(wù),并且已經(jīng)正常啟動了的話,那么都會給出220消息。所以,如果你已經(jīng)獲得了220信息,則說明已經(jīng)成功連接到該服務(wù)器。
如果得到其他信息如:
Could not open connection to the host, on port 25: Connection failed
其他信息,則可以說明對方郵件服務(wù)存在故障,如服務(wù)器當(dāng)機(jī),相關(guān)服務(wù)沒有啟動等。導(dǎo)致郵件發(fā)送失敗。
假設(shè)現(xiàn)在不存在該故障,我們獲得了220信息。我們將進(jìn)一步檢測故障。
注意:
1.Microsoft Telnet 不允許您使用 Backspace 鍵。如果在鍵入時出錯,必須按 Enter 鍵,然后開始鍵入新的命令。
2. 有些 Telnet 應(yīng)用程序要求您打開本地回顯功能,以查看鍵入的命令。要在 Microsoft Telnet 會話中執(zhí)行此操作,請在命令提示符處鍵入 set local_echo。
在 Microsoft Windows XP 中,應(yīng)鍵入 set localecho 而不是 set local_echo。
3. 提示:500 Command not recognized
檢查該命令并再次鍵入它,或者驗證您是否正在與 Microsoft SMTP 服務(wù)器直接通信。
請按照我的說明觀察以下步驟,紅色字體為我敲入的命令。黑色部分為顯示結(jié)果,中括號中是我寫的說明:
,220 Coremail SMTP(Anti Spam) System (163com[20050206])
helo me.com
[ helo是SMTP 動詞集中的一個動詞,me.com 是告訴他將與他通訊的是me.com 這個域名]
250 mx11
[如果正常,則給出250消息。可能的故障為:me.com blocked. 則說明你的域名已被該服務(wù)器阻止,不能向他發(fā)送郵件。解決辦法:與對方管理員溝通將域名放行。]
mail from:mymail@me.com
[mail from: 告訴他發(fā)件人是誰:mymail@me.com 注意,有些郵件服務(wù)器會對郵件地址進(jìn)行反向檢測,所以盡量使用存在的EMAIL 地址,否則可能提示錯誤。]
250 Ok
[如果正常,則給出250消息??赡艿墓收蠟椋?XXX blocked/refused之類的信息. 則說明你的域名或郵件地址已被該服務(wù)器阻止,不能向他發(fā)送郵件。特別說明:NORTON SMTP GA TEWAY 等軟件都可以設(shè)置域名,垃圾郵件過濾,他們會參照一些大型的垃圾郵件管理組織的數(shù)據(jù)庫,如果你的IP 已經(jīng)被列入其中,則這些郵件服務(wù)器也會自動將你的郵件BLOCK 掉,解決辦法:與對方管理員溝通將域名或郵件地址加入例外中放行,或找ISP 與垃圾郵件管理組織溝通將IP 解鎖]
rcpt to:abc@163.com
[如果正該域中存在這個郵件地址則給出250消息,否則550消息如下:]
550 
[此處,我們得到我們的故障,abc@163.com不存在,或者被禁用所以不能向他發(fā)送郵件。故障解決。以下步驟我們學(xué)習(xí)使用TELNET 直接向某郵件地址發(fā)送郵件]
rcpt to:webmaster@163.com
250 Ok
data
[表示下面為郵件內(nèi)容]
354 End data with 
subject:test mail form me.com
[subject: 表示后面是郵件的標(biāo)題, 兩次回車(為什么?參見相關(guān)SMTP 相關(guān)文檔) 后開始輸入郵件正文。]
as the title.
. [一個回車后輸入 . 號一定要有哦]
250 Ok: queued as SkDBJDx3U0IpFdsF.1
[郵件已放入發(fā)送隊列中,有些服務(wù)器直接發(fā)送出去]
quit
號[退出TELNET]
221 Bye
Connection to host lost.
好了。如果通過以上步驟,我們基本上可以了解到郵件發(fā)送到各個環(huán)節(jié)是是否存在故障,如果順利通過而你仍然不能通過OUTLOOK 或者其他軟件向該郵箱地址發(fā)送郵件的話,則說明故障存在與其他部分,這里我們就不討論了。留給后面的同志跟上吧。
第三節(jié)中我們將講如何測試POP3協(xié)議是否運行正常。
設(shè)置問題:不能使用POP3協(xié)議接受郵件是我的問題,還是服務(wù)器問題?
第三節(jié)中我們將講如何測試POP3協(xié)議是否運行正常。
設(shè)置問題:不能使用POP3協(xié)議接受郵件是我的問題,還是服務(wù)器問題?
本文介紹如何遠(yuǎn)程登錄 (Telnet) 到郵件服務(wù)器的 110 端口。
備注: 輸入每一行之后請按 ENTER 鍵:
運行以下命令啟動 Telnet 會話,格式如下:
Telnet 服務(wù)器IP 或域名 110
如telnet pop3.163.com 110
如果建立了連接,將顯示來自服務(wù)器的一個說明服務(wù)器版本的信息,它類似如下:
OK Welcome to coremail Mail Pop3 Server (163com[20050206]) ( server_name . domain .com) 通過使用以下命令登錄到郵箱開始通訊:
USER [domain / Windows_NT_account /] Exchange_mailbox
如:user abcd
隨后將顯示以下回應(yīng):
OK core mail
輸入以下命令:
PASS 郵箱的密碼
,隨后將顯示以下回應(yīng)信息,根據(jù)不同的服務(wù)器而不同。:
OK 9 message(s) [5622801 byte(s)]
輸入以下命令列出郵箱中的所有郵件:
LIST
將顯示下面的回應(yīng)信息(取決于郵箱中的郵件數(shù),該信息會有變化):
OK
1 2895
2 1160
3 11050
4 126278
5 1503752
6 2858596
7 3352
8 54042
9 1061676
郵件編號是左側(cè)的數(shù)字
輸入以下命令來檢索郵件:
RETR message number
如:
retr 1
使用郵件編號選中的郵件將顯示在回應(yīng)信息中,類似如下:
OK 1160 octets
Received: from bj.163.com (unknown [202.108.248.91])
by mx10 (Coremail) with SMTP id GMDGY 9I3kEY8KsE.1
for 
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 
Message-ID: <9175756.1105086779838.JavaMail.root@bj66.163.com>
From: "網(wǎng)易部落" 
To: abcd@163.com
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 上的郵箱之間的通訊問題。