郵件原文詳細介紹(一)--神奇的MIME
發表于:2007-07-02來源:作者:點擊數:
標簽:
例子:(其中的文字是解釋) Received: from www2.126.com (unknown [202.108.36.181]) by mx1.163.net (Postfix) with ESMTP id 68DBD1D04ED21 for yin_jie@163.net; Wed, 10 Oct 2001 01:06:45 +0800 (CST) 最后一次轉發,從www2.126.com發出,被mx1.163.ne
例子:(其中的文字是解釋)
Received: from www2.126.com (unknown [202.108.36.181])
by mx1.163.net (Postfix) with ESMTP id 68DBD1D04ED21
for <yin_jie@163.net>; Wed, 10 Oct 2001 01:06:45 +0800 (CST)
最后一次轉發,從www2.126.com發出,被mx1.163.net接收,目標地址:yin_jie@163.net,注意此處是支持ESMTP的,也就是增強SMTP。即我們所說的發信驗證。
Received: by www2.126.com (Postfix)
id ; Tue, 9 Oct 2001 23:44:47 +0800 (CST)
中轉標志~~
Received: from china.com (unknown [61.135.144.7])
by www2.126.com (Postfix) with SMTP id 2F4B21CE6027B
for <yin_jie@126.com>; Tue, 9 Oct 2001 23:44:47 +0800 (CST)
倒數第二次轉發,由china.com發到www2.126.com.此時的目標地址是yin_jie@126.com
Received: from china.com([10.1.0.214]) by china.com(AIMC 2.9.5.3)
with SMTP id jma3bc35969; Tue, 09 Oct 2001 23:35:47 +0800
郵件的最初中繼,這里是SMTP,在域名后的字符,如:(AIMC 2.9.5.3)是服務器上所使用的郵件系統名稱。而id是郵件的編號。后面的部分是時間,最后的+0800是時區。
Content-Type: multipart/mixed;
boundary="---------=_VxiQcghCADTbNqgPm
LRpqAGvcowuwOnorRmShm";
以上表示郵件的內容類型是多種的。
charset="gb2312"
這一段是郵件的字符集,該處為GB2312。
Date: Tue, 9 Oct 2001 23:36:38 +0800 (CST)
這是發信的時間
From: "巍" <weiwei1112@china.com>
To: yin_jie@126.com
以上是發信人和收信人的地址,大家可以看出,此處的收信人地址和實際接收的地址不一樣,這就是郵件轉發。
Subject: =?gb2312?b?Rnc6ILXNuPHI7bz+tc248dOyxcy1xLCho6E=?=
這是主題,由于是GB2312的漢字,所以看不到。
MIME-Version: 1.0
這是郵件使用的MIME版本。
小知識:MIME
MIME是一種技術規范,它原來是用于電子郵件的,現在也可以用于瀏覽器上,傳送可以供瀏覽器識別的信息,關于MIME的知識并是十分難懂的,有一些基本的計算機概念就可以理解了,但如果要進一步使用,就必須注意內容。實際上,我們在上網的時候就已經接觸到了MIME,只是瀏覽器和服務器在底層實現了。
MIME有時候被錯誤地理解為多媒體Internet郵件擴展(Multimedia Internet Mail Extensions),這是一個錯誤,但是MIME在網上經常用于多媒體應用程序,所以人們以為這是它是多媒體郵件擴展,而實際上它應該被稱為多用途Internet郵件擴展(Multipurpose Internet Mail Extensions),這一點一定要注意,因為有時候內容里根本沒有非文本成份。
MIME對于郵件系統的擴展是巨大的,因為在MIME出現以前,信件內容如果要包括聲音和動畫,就必須把它變為ASCII碼或把二進制的信息變成可以傳送的編碼標準,而接收方必須經過解碼才可以獲得聲音和圖畫信息。MIME提供了一種可以在郵件中附加多種不同編碼文件的方法。這與原來的郵件是大大不同的。而現在MIME已經成為了HTTP協議標準的一個部分。
MIME是服務器通知客戶機傳送文件是什么類型的主要方法,客戶機瀏覽器也通過MIME告訴服務器它的參數。在網上,如果接收到的文件沒有MIME頭,就默認它為HTML格式。但這樣也不好,因為當MIME的包頭是text/plain時,瀏覽器將直接顯示而不關心它的什么字體,顏色之類的參數,這樣顯示出來的內容可不是很好看呀。
MIME頭是什么樣子要看它是用在電子郵件中還是用在瀏覽器上,兩者內容可能有所不同。對于郵件頭來說,版本號,內容類型聲明,編碼方式,內容描述是必不可少的。這是用于郵件頭中的格式,在下面,我們將重點說到在HTTP中傳送MIME頭,這時MIME頭要簡單一些。
下例是一個郵件的標準MIME頭:
Mime-Version: 1.0 //版本號:1.0
Content-Type: multipart/mixed; boundary="IMA.Boundary.750407228" //內容類型是多種的
--IMA.Boundary.750407228
Content-Type: text/plain; charset=US-ASCII //內容類型:文本,字符是ASCII的
Content-Transfer-Encoding: 7bit //編碼方式:7位
Content-Description:
clearcase/" target="_blank" >cc:Mail note part
在用于瀏覽器時,用戶不需要知道那么多的信息,所以MIME頭就比較簡單了。在訪問一個網頁時,瀏覽器和服務器之間產生一個會話,作為請求內容的一部分,瀏覽器發送它能夠理解的MIME類型的描述,這就告訴服務器,瀏覽器除了網頁外還可以支持什么,服務器對這個信息一般不作為什么修改。
服務器通過發向客戶機的MIME頭通知客戶瀏覽器內容是什么,我們看看下面這個頭:
Content-type: text/html
在實現的時候,一定要注意MIME頭后要跟一個空行,不然這個頭會被瀏覽器忽略,這個頭會被當作文本顯示出來。當服務器傳送GIF圖象時,頭會如下:
Content-type: image/gif
Content-transfer-encoding: BINARY
通常的MIME內容類型并不起什么作用,瀏覽器可以自己識別內容的類型,但是如果您使用一些另外的類型,這個問題可就大了,如果你使用了text/postscript,那瀏覽器會顯示
下載窗口,或就把這個東西顯示出來,那可就不好辦了。下面我們介紹一下標準MIME類型。
Text. 文本,它用于描述不同類型的文本,包括通常的文本,PostScript和HTML,雖然HTML不是一個可能的子類型。
Multipart. 多類型,指出此信息包括多種信息,不止一種類型。
Message. 用于標記不同類型的消息。
Application. 應用類型。
Image. 圖象,用于標明圖形文件。
Audio. 聲音,用于標明聲音文件。
Video. 影象,用于標明動畫文件。
每個MIME類型有不同的子類型,實際上,您不可能單獨使用類型而不使用子類型,只有一個例外,這就是"telnet"類型。IANA提供45種類型/子類型對支持。當然,標準是開放的,允許用戶自定義自己的類型,用戶自定義類型要以“X-”開始以示區別。在添加新的類型時,一定要注意,盡量使用已有的類型達到自己的目的。如果非要添加新的類型,一定要保證服務器一方支持這種類型,也要保證客戶端也能夠通過一些應用程序(如插件)來識別新類型。如果您的網站的訪問者很廣,不要輕易使用新類型,要么使用已有的類型,或者向IANA提出注冊請求。
---------------------
Message-ID: <Wy988990766361.04097@webmail1>
郵件編號
X-AIMailer: AIMC 2.9.5.3 2001.06.25
發信服務器的郵件軟件版本
X-AIMime: MIME/SMIME Lib 2.9 2.9 2001.06.25
Content-Transfer-Encoding: base64
編碼格式,此處為BASE64。
Cc: 抄送
X-Priority: 3郵件優先等級
以下是郵件的內容,以上是郵件頭
-----------=_VxiQcghCADTbNqgPmLRpqAGvcowuwOnorRmShm
Content-Type: text/plain 內容是文本
Content-Transfer-Encoding: 8bit 編碼格式
> 這個軟件要好好的看看在用啊小心小心?。。?!
> ************************************
> 留學移民,免費評估.
> http://www.mercan.com.cn/mercan2000/china.htm
>
> 定制中華網短信息(http://sms.china.com),天氣、新聞、股市行情手觸可得。
>
>
以上是郵件的文本內容
-----------=_VxiQcghCADTbNqgPmLRpqAGvcowuwOnorRmShm
Content-Type: application/octet-stream; 內容是應用,即附件
name="Qaplu504.zip" 附件應用名
Content-Transfer-Encoding: base64 編碼格式
Content-Disposition: attachment; 內容描述:附件
20031024132827.htm="Qaplu504.zip"
UEsDBBQAAAAIAEZaRBgAYp1h0EYAAE1KAAAVAAAAUUFQTFU1MDQvQ09NREVCVUcuRVhFnbd3XBPb
1y4+KYQ0klCkiRAsFFEPWBCkg1IsgIDYUb
CCCAgJiiKgIBCCiJ5zLByPgno8iIogqBSlC4KN0KQp
hGbCUJLQNmGSuTnn+95738/nvr9/fjvzrPXsZ9ZaM3sys2f2jn07ICMIgrAQiYiiHpQEBadBUXg9
hd++z9oCRXdxx0p8oKwILB+XaJ+PQfkQm0UT5FKz/FeLMgjovKe20UMIolSx1SbTBDFWKxthDm3U
......
以上還有很多,就是附件ZIP文件的BASE64編碼。
*安全
由于MIME定義了多種不同的內容類型,因此在郵件客戶端可以識別這些標準的內容說明,從而調用不同的程序插件來進行處理,如為應用,則提示下載,如為圖象,則自動打開(如OE),但由于BASE64編碼的內容看起來是一樣的,所以我們就可以把一個自己編寫的執行程序或木馬通過BASE64編碼后,附加在郵件后,并強制定義其為圖形或聲音等能被自動處理的內容說明,這樣,在郵件被打開時,這些編碼就會被自動的處理,也就是相當于運行了這些編碼解碼后的程序。這就是MIME
缺陷漏洞,在MS的網站已經就此問題做出了補救方法,請大家注意,或使用非MS的產品來接收郵件,如FOXMAIL。
有關BASE64編碼,下節再說。
原文轉自:http://www.kjueaiud.com