最近遇到很多郵件傳輸的問題,但是因自己本身無法接觸到Exchange,所以想說去了解一下SMTP Services好了,反正寄信的基本功能應該不會差太遠吧。
有時候看一些Services,有LOG看才知道到底有沒有在運作,也比較清楚它作了什麼,但是一開始看SMTP的LOG,我可是愈看愈模糊啊,原來是我沒把全部的LOG資訊都啟用,所以建議啟用全部的LOG紀錄吧,尤其是擴充內容喔。
首先,參考微軟的使用 SMTP 來傳送外送訊息,裡面有提到SMTP 如何運作?我就不多做說明了,自己去看吧。
那怎麼測試SMTP Services呢,就用Telnet來檢視與SMTP交談的訊息吧,可參考微軟的這篇Telnet 至 IMC 連接埠 25 以測試 IMC 通訊。
假設安裝有SMTP Services伺服器為srv004t,發信的電腦為tst33,IP為192.168.1.1,寄件者為SHAQ.ADALF@GMAIL.COM,收件者為ADALF@CATHAY-INS.COM.TW,使用命令列來溝通,以下是用Telnet命令與SMTP回應的訊息,其中藍字是輸入的命令,紫字是SMTP回應的訊息,綠字是我補充的
telnet srv004t 25
220 srv004t.test.com Microsoft ESMTP MAIL Service, Version: 5.0.2195.6713
ready at Sat, 2 Jan 2010 09:49:48 +0800
EHLO CHEAT.COM <--騙它說來自cheat.com
250-srv004t.test.com Hello [192.168.1.1] <--別假了,你ip是192.168.1.1
250-AUTH GSSAPI NTLM LOGIN
250-AUTH=LOGIN
250-TURN
250-ATRN
250-SIZE 2097152
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250 OK
MAIL FROM: SHAQ.ADALF@GMAIL.COM
250 2.1.0 SHAQ.ADALF@GMAIL.COM....Sender OK
RCPT TO: ADALF@CATHAY-INS.COM.TW
250 2.1.5 ADALF@CATHAY-INS.COM.TW
DATA
354 Please start mail input.
Subject:test message
<--這邊注意要多按一次ENTER喔
This is a test.
. <--這邊注意是按一句點喔,別按Del鍵
250 Mail queued for delivery.QUIT
221 Closing connection. Good bye.
從上面與SMTP交談的紀錄中,可以看到有趣的事情,我最上面綠字補充的地方,我騙SMTP說我從CHEAT.COM來的,但是SMTP卻用我的真實IP回應我,這表示你可以欺騙SMTP,但是實際上與真實IP去對照一下,很容易知道這封信是不是偽造的囉。
然後我們可以去對照一下SMTP的Log,我這邊只擷取部分資訊,如下圖
c-ip是用戶端ip,cs-username是使用者名稱,cs-method是SMTP命令,cs-uri-query裡面是剛剛溝通的內容,分上下兩塊來看這個Log吧,上面的就是剛剛用Telnet交談的內容,有告訴Smtp我來自哪裡,我要寄到哪,連剛欺騙的紀錄都一目了然,我比較不解的是為什麼MAIL與RCPT要重複兩次,我明明命令只下一次啊,怪怪﹔下面的部分則是SMTP收到你的訊息後,因為發現不是Local的郵件,所以會再幫你轉出去,內容是跟目的SMTP Server通訊的紀錄,這邊就呼應了SMTP運作的內容了,它真的有幫你把信轉出去囉,OutboundConnection開頭的只是SMTP名稱而已,不是SMTP命令,這時的192.168.1.99就是目的SMTP Server的IP囉。
接著我去把信收下來,看一下Mail Header吧,內容如下,看一下Receieves Header再與之前的紀錄對照,應該清楚了吧
Received: from srv004t.test.com (192.168.1.55) by
testmail.qqq.com.tw (192.168.1.99) with Microsoft SMTP Server id
8.1.375.2; Sat, 2 Jan 2010 09:51:44 +0800
Received: from CHEAT.COM ([192.168.1.1]) by srv004t.test.com with
Microsoft SMTPSVC(5.0.2195.6713); Sat, 2 Jan 2010 09:51:42 +0800
From: "SHAQ.ADALF@GMAIL.COM" <>
Date: Sat, 2 Jan 2010 09:51:42 +0800
Subject: TEST MESSAGE
Thread-Topic: TEST MESSAGE
Thread-Index: AcqQBSM/e5NhZJNITfyMgWG3RpksCw==
Message-ID: <>
Accept-Language: zh-TW
Content-Language: zh-TW
X-MS-Exchange-Organization-AuthAs: Anonymous
X-MS-Exchange-Organization-AuthSource: HCS06.qqq.local
X-MS-Has-Attach:
X-MS-Exchange-Organization-SCL: 0
X-MS-TNEF-Correlator:
x-originalarrivaltime: 02 Jan 2010 01:51:42.0650 (UTC)
FILETIME=[206979A0:01CA9005]
Content-Type: text/plain; charset="big5"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
對了...忘了提...這篇裡面的domain,電腦名稱與ip之類的我都有替換過,是虛構的喔,其他的內容應該都是真實的
有時候看一些Services,有LOG看才知道到底有沒有在運作,也比較清楚它作了什麼,但是一開始看SMTP的LOG,我可是愈看愈模糊啊,原來是我沒把全部的LOG資訊都啟用,所以建議啟用全部的LOG紀錄吧,尤其是擴充內容喔。
首先,參考微軟的使用 SMTP 來傳送外送訊息,裡面有提到SMTP 如何運作?我就不多做說明了,自己去看吧。
那怎麼測試SMTP Services呢,就用Telnet來檢視與SMTP交談的訊息吧,可參考微軟的這篇Telnet 至 IMC 連接埠 25 以測試 IMC 通訊。
假設安裝有SMTP Services伺服器為srv004t,發信的電腦為tst33,IP為192.168.1.1,寄件者為SHAQ.ADALF@GMAIL.COM,收件者為ADALF@CATHAY-INS.COM.TW,使用命令列來溝通,以下是用Telnet命令與SMTP回應的訊息,其中藍字是輸入的命令,紫字是SMTP回應的訊息,綠字是我補充的
telnet srv004t 25
220 srv004t.test.com Microsoft ESMTP MAIL Service, Version: 5.0.2195.6713
ready at Sat, 2 Jan 2010 09:49:48 +0800
EHLO CHEAT.COM <--騙它說來自cheat.com
250-srv004t.test.com Hello [192.168.1.1] <--別假了,你ip是192.168.1.1
250-AUTH GSSAPI NTLM LOGIN
250-AUTH=LOGIN
250-TURN
250-ATRN
250-SIZE 2097152
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250 OK
MAIL FROM: SHAQ.ADALF@GMAIL.COM
250 2.1.0 SHAQ.ADALF@GMAIL.COM....Sender OK
RCPT TO: ADALF@CATHAY-INS.COM.TW
250 2.1.5 ADALF@CATHAY-INS.COM.TW
DATA
354 Please start mail input.
Subject:test message
<--這邊注意要多按一次ENTER喔
This is a test.
. <--這邊注意是按一句點喔,別按Del鍵
250 Mail queued for delivery.QUIT
221 Closing connection. Good bye.
從上面與SMTP交談的紀錄中,可以看到有趣的事情,我最上面綠字補充的地方,我騙SMTP說我從CHEAT.COM來的,但是SMTP卻用我的真實IP回應我,這表示你可以欺騙SMTP,但是實際上與真實IP去對照一下,很容易知道這封信是不是偽造的囉。
然後我們可以去對照一下SMTP的Log,我這邊只擷取部分資訊,如下圖
c-ip是用戶端ip,cs-username是使用者名稱,cs-method是SMTP命令,cs-uri-query裡面是剛剛溝通的內容,分上下兩塊來看這個Log吧,上面的就是剛剛用Telnet交談的內容,有告訴Smtp我來自哪裡,我要寄到哪,連剛欺騙的紀錄都一目了然,我比較不解的是為什麼MAIL與RCPT要重複兩次,我明明命令只下一次啊,怪怪﹔下面的部分則是SMTP收到你的訊息後,因為發現不是Local的郵件,所以會再幫你轉出去,內容是跟目的SMTP Server通訊的紀錄,這邊就呼應了SMTP運作的內容了,它真的有幫你把信轉出去囉,OutboundConnection開頭的只是SMTP名稱而已,不是SMTP命令,這時的192.168.1.99就是目的SMTP Server的IP囉。
接著我去把信收下來,看一下Mail Header吧,內容如下,看一下Receieves Header再與之前的紀錄對照,應該清楚了吧
Received: from srv004t.test.com (192.168.1.55) by
testmail.qqq.com.tw (192.168.1.99) with Microsoft SMTP Server id
8.1.375.2; Sat, 2 Jan 2010 09:51:44 +0800
Received: from CHEAT.COM ([192.168.1.1]) by srv004t.test.com with
Microsoft SMTPSVC(5.0.2195.6713); Sat, 2 Jan 2010 09:51:42 +0800
From: "SHAQ.ADALF@GMAIL.COM" <>
Date: Sat, 2 Jan 2010 09:51:42 +0800
Subject: TEST MESSAGE
Thread-Topic: TEST MESSAGE
Thread-Index: AcqQBSM/e5NhZJNITfyMgWG3RpksCw==
Message-ID: <>
Accept-Language: zh-TW
Content-Language: zh-TW
X-MS-Exchange-Organization-AuthAs: Anonymous
X-MS-Exchange-Organization-AuthSource: HCS06.qqq.local
X-MS-Has-Attach:
X-MS-Exchange-Organization-SCL: 0
X-MS-TNEF-Correlator:
x-originalarrivaltime: 02 Jan 2010 01:51:42.0650 (UTC)
FILETIME=[206979A0:01CA9005]
Content-Type: text/plain; charset="big5"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
對了...忘了提...這篇裡面的domain,電腦名稱與ip之類的我都有替換過,是虛構的喔,其他的內容應該都是真實的
0 意見:
張貼留言