信息發達的今天,做爲人們工做與生活的必不可少的工具,郵件技術與相關人才是何其重要。因此按納不住,拋一塊磚,但願能引發你們的共同關注,多多共同研究郵件方面的技術。web
郵件服器軟件種類繁多,但大都離不開SMTP(簡單郵件傳輸協議),本文就從SMTP協議入手講解如何檢測通常性郵件故障。因此這裏沒必要考慮你用的是EXCHANGE仍是IMAIL等等。數據庫
故障設置案例:服務器
忽然發現:本身的公司的郵件:mymail@me.com 不能發郵件給 abc@163.com 了?網絡
老闆問你:爲何?dom
常見可能故障:koa
1.對方郵箱爆滿,附件超過對方郵箱容許容量。ide
2.對方DNS故障。工具
3.對方郵件服務器故障。學習
4.對方拒絕收取你的郵件。測試
5.其餘方面故障,爲省篇幅這裏不作討論。
開刀啦。
1、分析故障從讀NDR開始。
通常郵件傳送失敗,服務器都會給你NDR(NOT DELIVERY REPORT未送達報告)。經過閱讀報告能得到不少信息。
NDR一般是英文的,夾帶着N多數據如MSID,組織,目的地等,顯得有點亂。不過幸虧這種故障NDR都會比較容易的捕捉彙報,一般包含size exceed; data exceed等就說明對方郵箱已滿或者附件過大。
而相似:HOST NOT FIND,COMMUNICATION FAILURE的NDR或者乾脆什麼信息都沒有的呢就須要咱們進一步測試了。這也是今天我主要想說的。
2、NSLOOKUP打先鋒。
做用:他的用途很普遍,基本上做爲一個學網絡尤爲是廣域網的人要對這個命令很是熟悉。這裏咱們用他來完成如下任務:
1.測試對方的域名是否能夠解析,若是不能解析則可能這一時刻對方的DNS服務器故障。致使通信郵件發送失敗。
2.得到對方的MX(郵件)紀錄
從NDR中咱們能夠獲得一些信息,HOST NOT FIND(主機未找到),COMMUNICATION FALURE(通信失敗),這些提示都顯示着網絡的某個地方出現了故障。因此咱們就要先從這裏下手。事實上當我從DNR中得不到任何有幫助的信息的時候我也是先這樣開始的:
運行:CMD 鍵入:NSLOOKUP 命令。(WINDOWS系列需NT級系統纔有,你可使用在CMD中HELP命令得到NSLOOKUP的使用指南)。
進入操做界面,操做提示符以下:
>
表示開始接受命令狀態。
我只講解兩個有用的關鍵詞
第一個:SERVER
進入NSLOOKUP後,系統會將默認的SERVER設置爲你當前得到的DNS SERVER。顯示以下
默認服務器: localhost
Address: 127.0.0.1
>
有時候由於CACHE的緣由,咱們須要用外部更好的DNS SERVER來幫助咱們完成測試。好比我LAN網內的DNS爲127.0.0.1,爲了更快更好的得到結果,我須要用電信的DNS服務器來幫我完成測試,則敲入:
鍵入:
>server dns.cd.hn.cn
顯示爲:
默認服務器: dns.cd.hn.cn
Address: 220.168.208.3
>
表示當前默認的DNS解析服務器更改成220.168.208.3,隨後咱們敲入的請求都將從這臺服務器得到反饋。咱們能夠測試一下鍵入:
服務器: localhost
Addresses: ::1
127.0.0.1
非權威應答:
名稱: www.cache.split.netease.com
Addresses: 220.181.28.51
220.181.28.52
220.181.28.53
220.181.28.54
220.181.28.50
Aliases: www.163.com
這裏獲得的是www.163.com域名中www這個主機的IP。通常狀況下只會有一個IP紀錄。爲何有這麼多呢?這裏牽涉到DNS循環來解決服務器負擔問題。咱們不作詳細介紹。
第二個:SET TYPE=MX (SET Q=MX)
一般進入NSLOOKUP,默認操做類型爲A紀錄.可是咱們要解決的是郵件問題,固然須要查看的是郵件MX紀錄。也就是發送給 abc@163.com 的郵件會送到哪臺郵件服務器上去。 這條命令就告訴服務器,我須要得到該域名的郵件紀錄。set type=mx set q=mx 效果是同樣的。固然若是你要察看A紀錄,也能夠用set q=A 切換。
鍵入命令:
>set q=mx
再敲:
>163.com
獲得不一樣結果以下:
服務器: localhost
Addresses: ::1
127.0.0.1
非權威應答:
163.com MX preference = 50, mail exchanger = mx.mail.163.split.netease.com
mx.mail.163.split.netease.com internet address = 220.181.12.59
mx.mail.163.split.netease.com internet address = 220.181.12.60
mx.mail.163.split.netease.com internet address = 220.181.12.61
mx.mail.163.split.netease.com internet address = 220.181.12.62
mx.mail.163.split.netease.com internet address = 220.181.12.63
mx.mail.163.split.netease.com internet address = 220.181.12.64
mx.mail.163.split.netease.com internet address = 220.181.12.65
mx.mail.163.split.netease.com internet address = 220.181.12.66
mx.mail.163.split.netease.com internet address = 220.181.12.67
mx.mail.163.split.netease.com internet address = 220.181.12.68
mx.mail.163.split.netease.com internet address = 220.181.12.69
mx.mail.163.split.netease.com internet address = 220.181.12.70
mx.mail.163.split.netease.com internet address = 220.181.12.71
mx.mail.163.split.netease.com internet address = 220.181.12.72
mx.mail.163.split.netease.com internet address = 220.181.12.73
mx.mail.163.split.netease.com internet address = 220.181.12.74
mx.mail.163.split.netease.com internet address = 220.181.12.75
mx.mail.163.split.netease.com internet address = 220.181.12.76
mx.mail.163.split.netease.com internet address = 220.181.12.77
mx.mail.163.split.netease.com internet address = 220.181.12.51
mx.mail.163.split.netease.com internet address = 220.181.12.52
mx.mail.163.split.netease.com internet address = 220.181.12.53
mx.mail.163.split.netease.com internet address = 220.181.12.55
mx.mail.163.split.netease.com internet address = 220.181.12.56
mx.mail.163.split.netease.com internet address = 220.181.12.57
mx.mail.163.split.netease.com internet address = 220.181.12.58
由上可知,郵件紀錄會發送給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 [dns.cd.hn.cn] timed-out
相似的結果。請試多幾回。
好了,找到了MX郵件紀錄,下面開始真正的檢測之旅吧,若是你是新手,你必定會以爲下面的檢測竟然這麼神奇。
咱們將瞭解如何使用 telnet 來檢測運行簡單郵件傳輸協議 (SMTP) 服務的郵件服務器上,以解決 SMTP 通訊問題。默認狀況下,SMTP 偵聽端口 25。
在啓動 Telnet 會話以前,必須具備要將此測試郵件發送到的目標用戶的完整 SMTP 電子郵件地址。該電子郵件地址必須採用如下格式:
本例中對應爲:
咱們已經使用NSLOOKUP獲取 Internet 郵件交換器記錄163.com的爲:mx.mail.163.com
在CMD窗口中鍵入:
c:\>telnet mx.mail.163.com 25
TELNET 使用格式:telnet 服務器名 端口號
得到如下信息:
220 163.com Anti-spam GT for Coremail System (163com[071018])
雖然該條信息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 OK
[若是正常,則給出250消息。可能的故障爲:me.com blocked.則說明你的域名已被該服務器阻止,不能向他發送郵件。解決辦法:與對方管理員溝通將域名放行。]
mail from:mymail@me.com
[mail from: 告訴他發件人是誰:mymail@me.com 注意,有些郵件服務器會對郵件地址進行反向檢測,因此儘可能使用存在的EMAIL地址,不然可能提示錯誤。]
250 Ok
[若是正常,則給出250消息。可能的故障爲: XXX blocked/refused之類的信息.則說明你的域名或郵件地址已被該服務器阻止,不能向他發送郵件。特別說明:NORTON SMTP GATEWAY 等軟件均可以設置域名,垃圾郵件過濾,他們會參照一些大型的垃圾郵件管理組織的數據庫,若是你的IP已經被列入其中,則這些郵件服務器也會自動將你的郵件BLOCK掉,解決辦法:與對方管理員溝通將域名或郵件地址加入例外中放行,或找ISP與垃圾郵件管理組織溝通將IP解鎖]
rcpt to:abc@163.com
[若是正該域中存在這個郵件地址則給出250消息,不然550消息以下:]
550 <abc@163.com>: Invalid User
[此處,咱們獲得咱們的故障,abc@163.com不存在,或者被禁用因此不能向他發送郵件。故障解決。如下步驟咱們學習使用TELNET直接向某郵件地址發送郵件]
rcpt to:webmaster@163.com
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 (163coms[14ecc65ff3fdc52ceba9a1aac95f83d9s])
經過使用如下命令登陸到郵箱開始通信:
USER [domain / Windows_NT_account /] Exchange_mailbox
如:user abcd
隨後將顯示如下回應:
+OK core mail
輸入如下命令:
PASS 郵箱的密碼
隨後將顯示如下回應信息,根據不一樣的服務器而不一樣。:
+OK 3 message(s) [178607 byte(s)]
輸入如下命令列出郵箱中的全部郵件:
LIST
將顯示下面的迴應信息(取決於郵箱中的郵件數,該信息會有變化):
+OK 69 3286469
1 3035
2 142802
3 32770
.
郵件編號是左側的數字
輸入如下命令來檢索郵件:
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 <abcd@163.com>; 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 <abcd@163.com>; Fri, 7 Jan 2005 16:32:19 +0800 (CST)
Message-ID: <9175756.1105086779838.JavaMail.root@bj66.163.com>
From: "網易部落" <admin@bulo.163.com>
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 上的郵箱之間的通信問題。