国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

郵件頭文字
2007-09-24   網絡

一、簡介

這一部分內容將詳細討論email頭的方方面面。主要為用戶架設郵件服務器提供理論基礎并為管理員在出現電子郵件垃圾騷擾時提供發現垃圾郵件的真正源頭。根據郵件頭的知識有助于發現偽造的郵件。對于希望了解郵件是如何在網絡中傳輸的用戶同樣會有幫助。

雖然在討論中盡量有意避免如何偽造一封郵件的討論,但是在討論中的內容可能被惡意讀者用作創建偽造郵件的基礎。因為要在文章中舉例說明,因此在文章中有若干虛構的域名和隨意分配的IP地址作為示例使用。這些域名和IP都是任意任意選擇和偽造的,和Internet上真實的域名和IP沒有任何關系。

二、Email的傳輸過程

這部分包含一個簡單的對一個電子郵件生命周期的分析。這對于理解郵件頭能為你提供哪些信息是非常重要的背景信息。

從表面上看來郵件似乎是直接從發送者機器傳遞到接收者地址,但通常情況下事情并不是這樣。一個典型的電子郵件在其生命周期中至少要經過四臺計算機。

這是因為大多數企業或組織都有一個被稱為“郵件服務器”專用服務器來處理電子郵件,而這一般并不是用戶閱讀郵件的計算機。對于ISP來說,用戶從家里面的計算機撥號接入ISP網絡,這里將用戶家中的計算機稱為客戶機,而將ISP專門處理郵件的計算機稱為郵件服務器。當一個用戶發送郵件,他一般是在自己的計算機上編輯郵件,然后將郵件發送到ISP的郵件服務器上。客戶機就此已經完成了自己的工作,而后面的工作則由ISP的郵件服務器來完成。首先ISP郵件服務器查找接收者指定的郵件服務器的IP地址,然后將郵件發送給該目的服務器。現在郵件則存儲在接收者郵件服務器上等待接收者收取。當接收者從接受郵件服務器取得發送給他的郵件到自己的PC機以后,通常該郵件將被刪除。

假設若干個虛構的用戶<zhangsan@263.net>和<lisi@zky.ac.cn>。zhangsan是263這個ISP的撥號用戶。使用outook express這個郵件客戶程序收發郵件。lisi是中科院的一個虛構用戶,他使用工作站通過單位局域網連接進入互聯網。

如果lisi想給zhangsan發送郵件,他在工作站(假設名字為alpha.zky.ac.cn)上編輯郵件,編輯好的信件從工作站發送到中科院的郵件服務器:mail.zky.ac.cn。一旦信件被發送到mail.zky.ac.cn,以后的信件發送過程就和zhangsan沒有關系了。中科院的郵件服務器發現這是發送給263.net的某個用戶的信件,則和263的郵件服務器-比如說是mail.263.net-通信,并將郵件傳送給它。現在郵件則被存儲在mail.263.net之上直到zhangsan在自己的PC機上撥號連接到263網絡察看并收取信件,這時mail.263.net將存儲的郵件傳送到zhangsan的個人PC機上。

在這個過程中,郵件頭將三次被加到郵件中:在編輯時由郵件客戶程序加入;當郵件傳輸到mail.zky.ac.cn時被mail.zky.ac.cn加入;當從mail.zky.ac.cn傳送到mail.263.net時被mail.263.net加入;通常來說客戶收取信件時并不添加郵件頭。下面我們就仔細看看這些郵件頭是如何產生的。

當lisi的郵件客戶程序編輯郵件并將其發送給mail.zky.ac.cn時,郵件內容如下.這些內容都是由郵件編輯程序(outlook express)添加的:

From: lisi@zky.ac.cn (Li Si)
To: zhangsan@263.net
Date: Tue, Mar 18 1997 14:36:14 PST
X-Mailer: Outlook Express 5.5
Subject: 中午搓飯?

當郵件從mail.zky.ac.cn傳送到mail.263.net后,郵件內容變為(新添加的內容是由mail.zky.ac.cn):

Received: from alpha.zky.ac.cn (alpha.zky.ac.cn [124.211.3.11]) by mail.zky.ac.cn (8.8.5) id 004A21; Tue, Mar 18 1997 14:36:17 -0800 (PST)
From: lisi@zky.ac.cn (Li Si)
To: zhangsan@263.net
Date: Tue, Mar 18 1997 14:36:14 PST
Message-Id: <lisi031897143614-00000298@mail.zky.ac.cn>
X-Mailer: Outlook Express 5.5
Subject: 中午搓飯?

當mail.263.net收到信件并存儲等待zhangsan收取時,郵件內容變為,(新添加的內容是由mail.263.com添加的):

Received: from mail.zky.ac.cn (mail.zky.ac.cn [124.211.3.78]) by mail.263.net (8.8.5/8.7.2) with ESMTP id LAA20869 for <zhangsan@263.net>; Tue, 18 Mar 1997 14:39:24 -0800 (PST)
Received: from alpha.zky.ac.cn (alpha.zky.ac.cn [124.211.3.11]) by mail.zky.ac.cn (8.8.5) id 004A21; Tue, Mar 18 1997 14:36:17 -0800 (PST)
From: lisi@zky.ac.cn (Li Si)
To: zhangsan@263.net
Date: Tue, Mar 18 1997 14:36:14 PST
Message-Id: <lisi031897143614-00000298@mail.zky.ac.cn>
X-Mailer: Outlook Express 5.5
Subject: 中午搓飯?

最后這封信的內容才是zhangsan收取并閱讀的內容。下面是對其中內容的詳細分析:

Received: from mail.zky.ac.cn

上面的內容表示該郵件是來自于自稱是mail.zky.ac.cn的服務器。

(mail.zky.ac.cn [124.211.3.78])

這句話表示該服務器的真實名字的確是mail.zky.ac.cn,也就是說它自稱的身份是正確的,其IP地址為124.211.3.78。

by mail.263.net (8.8.5/8.7.2)

接收這封郵件的機器是mail.263.net。其運行的郵件程序為sendmail,版本為8.8.5/8.7.2。

with ESMTP id LAA20869

接收郵件的服務器為該郵件賦有ID號LAA20869(通常該號碼是郵件服務器內部使用的,但是管理員可以根據該ID號在log文件中查找關于該信件的相關信息,但是通常該號都是沒有意義的)。

for <zhangsan@263.net>;

該郵件是發送給地址zhangsan@263.net的。可以看到該郵件頭沒有To:相關內容。

Tue, 18 Mar 1997 14:39:24 -0800 (PST)

這次郵件傳輸發生時間為:太平洋時間Tuesday, March 18, 1997, at 14:39:24(太平洋時間,因為它比格林威治時間晚8個小時,因此是"-0800")。 

Received: from alpha.zky.ac.cn (alpha.zky.ac.cn [124.211.3.11]) by mail.zky.ac.cn (8.8.5) id 004A21; Tue, Mar 18 1997 14:36:17 -0800 (PST)

該郵件頭記錄了郵件是從alpha.zky.ac.cn(lisi的工作站)傳送到到郵件服務器mail.zky.ac.cn的。傳送發生在太平洋時間14:36:17。發送計算機自稱是alpha.zky.ac.cn,其真實名經dns查詢的確是alpha.zky.ac.cn,其IP地址為124.211.3.11,郵件服務器軟件為sendmail v8.8.5。該信件被郵件服務器的mail.zky.ac.cn賦給的ID號為004A21。

From: lisi@zky.ac.cn (Li Si)

該郵件是由lis@zky.ac.cn發送的,其名字為Li Si。

To: zhangsan@263.net

郵件目的地址為:zhangsan@263.net。 

Date: Tue, Mar 18 1997 14:36:14 PST

郵件編輯時間為14:36:14 Pacific Standard Time on Tuesday, March 18, 1997。

Message-Id: <lisi031897143614-00000298@mail.zky.ac.cn

mail.zky.ac.cn給該郵件分配了這個號碼來標識它。它和Received頭中的SMTP機ESMTP ID號是不一樣的。因為該號碼是一直伴隨整個郵件的。而其它ID則僅僅在特定的郵件服務器上的郵件傳輸階段相關聯。因此該機器ID號對其它機器來說沒有任何意義。有時候Message-ID包含了發送者郵件地址在其中。
X-Mailer: Outlook Express 5.5

該消息是使用Outlook Express發送的,版本號為5.5。

Subject: 中午搓飯?

郵件標題。

郵件協議

這部分內容相對其它部分來說具有更多原理性內容,主要討論郵件是如何從一點傳輸到另外一點的細節。你不需要理解每一句話,但是熟悉這方面的內容有助于在郵件傳輸出現奇怪現象時弄明白問題所在。由于垃圾電子郵件發送者常常故意制造一些奇怪的情況以掩飾自己的身份,因此能理解這些奇怪的現象對對付這些家伙是非常有用的。

為了在網絡上傳輸數據,計算機網絡協議使用了稱為端口的訪問入口,你可以將端口看做是一個通道,通過它計算機可以監聽網絡通信以提供服務。為了同時監聽多個通信,計算機需要有使用端口號碼標識多個不同的端口以區別這些通信。而和電子郵件傳輸相關的端口是25。

正常情況

讓我們重新討論上面的例子,但是這次我們僅僅關心mail.zky.ac.cn到mail.263.net之間的通信過程。首先mail.zky.edu.c打開一個到mail.263.net的25號端口的連接,然后通過該連接發送郵件,當然在發送郵件過程中會有一些管理命令交互過程。交互中的命令和相應都或多或少的是可讀的。命令是SMTP協議規定的。如果監聽兩者之間的通信,可能有以下內容:(粗體部分是mail.zky.ac.cn發出的)

220 mail.263.net ESMTP Sendmail 8.8.5/1.4/8.7.2/1.13; Tue, Mar 18 1997 14:38:58 -0800 (PST)
HELO mail.zky.ac.cn
250 mail.263.net Hello mail.zky.ac.cn [124.211.3.78], pleased to meet you
MAIL FROM: lisi@zky.ac.cn
250 lisi@zky.ac.cn... Sender ok
RCPT TO: zhangsan@263.net
250 zhangsan@263.net... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Received: from alpha.zky.ac.cn (alpha.zky.ac.cn [124.211.3.11]) by mail.zky.ac.cn (8.8.5) id 004A21; Tue, Mar 18 1997 14:36:17 -0800 (PST)
From: lisi@zky.ac.cn (R.T. Hood)
To: zhangsan@263.net
Date: Tue, Mar 18 1997 14:36:14 PST
Message-Id: <lisi031897143614-00000298@mail.zky.ac.cn>
X-Mailer: Outlook Express 5.5
Subject: 中午搓飯?

Do you have time to meet for lunch?

--lisi
.
250 LAA20869 Message accepted for delivery
QUIT
221 mail.263.net closing connection

整個傳輸依賴于五個SMTP核心命令(當然SMTP還有一些其它命令,但是它們并不是用來完成真正的郵件傳輸):HELO,MAIL FROM,RCPT TO,DATA和QUIT。

郵件發送者HELO命令用來標識自己的身份。HELO mail.zky.ac.cn可以被解讀為"嗨,我是mail.zky.ac.cn"。當然這里發送者可能會撒謊,但是沒有任何機制能防止發送者mail.zky.ac.cn說"嗨,我是mail.xxx.com"或是"嗨,我是mail.yyy.com"。然而在大多數情況下接收者都有一些方法來確認發送者的真實身份。

MAIL FROM命令標識開始郵件傳輸,含義是"我有從某人發送來的郵件",該命令后跟的地址就是所謂的“信封地址”(在后面我們將深入討論),信封from地址不一定是發送者自己的地址。這個明顯的安全漏洞是不可避免的(因為接收者并不知道發送者機器上有哪些地址),但是在特定的情況下這又是一個有用處的特色。

RCPT TO和MAIL FROM是相輔相成的。其指定郵件接收者。通過多個RCPT TO命令一個郵件可以被發送給多個接收者。(在后面的郵件中繼部分將解釋該特色可能針對某些不安全的系統濫用)。該命令后跟的地址稱為"envelope to"地址。其指定了郵件將被投遞給哪些用戶,而和信件中的To:指定的地址沒有關系。

DATA命令指示開始實際的郵件內容傳輸。DATA命令后輸入的任何內容都被看做是郵件的一部分。而格式并沒有任何限制。以一個英文單詞加冒號開始的行一般被郵件程序看做是郵件頭。以英文句號符號(.)開始的行被認為是郵件內容結束。

QUIT命令終止連接。

SMTP協議規范定義在RFC 821中。

非正常情況

上面的例子有些過于簡單。上面的例子有一個假設前提:兩個組織的郵件服務器相互之間能直接訪問,而不需要經過代理、防火墻等安全設備。這在當前Internet環境下情況往往是這樣的。但由于安全對于某些組織來說非常重要,而且網絡或組織可能變得越來越龐大,情況就不那么簡單了。對于具有代理型防火墻系統的郵件傳輸來說,區別就在于在郵件的頭中多了一次轉發過程的記錄,也就是郵件首先從發送者郵件服務器發送到防火墻上,然后再從防火墻發送到目的郵件服務器。

郵件中繼

中繼

對于某些具有特殊的“生命”周期的郵件頭可能和前面討論的情況完全不同:

Received: from unwilling.intermedia.com (unwilling.intermedia.com [98.134.11.32]) by mail.zky.ac.cn (8.8.5) id 004B32 for <lisi@zky.ac.cn>; Wed, Jul 30 1997 16:39:50 -0800 (PST)
Received: from linuxaid.com.cn ([202.99.11.120]) by unwilling.intermedia.com (8.6.5/8.5.8) with SMTP id LAA12741; Wed, Jul 30 1997 19:36:28 -0500 (EST)
From: Anonymous Spammer <junkmail@linuxaid.com.cn>
To: (recipient list suppressed)
Message-Id: <w45qxz23-34ls5@unwilling.intermedia.com>
X-Mailer: Massive Annoyance
Subject: WANT TO MAKE ALOT OF MONEY???

這個郵件頭和以前的不同之處可能會令你認為這是一封垃圾郵件,但是這里引起你的懷疑的是"Received:"頭。從"Received:"頭看來,郵件是來自linuxaid.com.cn,然后從這里傳輸給unwilling.intermedia.com,然后從這里再次傳輸到最終目的地址:mail.zky.ac.cn。從"Received:"頭看來事情就是這樣的,但是中間為什么會出現unwilling.intermedia.com呢?因為它和發送者和接收者都沒有直接的關系。

要理解原因需要對SMTP協議進行一些了解。本質上來講,傳輸過程是這樣的:linuxaid.com.cn連接unwilling.intermedia.com的SMTP端口。告訴它“請發送這封郵件到rth@zky.ac.cn。它可能是以最直接的方法來實現:RCPT TO: rth@zky.ac.cn。到現在為止,unwilling.intermedia.com接管對該郵件的處理。因為它被告知將該信件轉發給其他一個域:zky.ac.cn,它就查找對于域名zky.ac.cn的郵件服務器然后將郵件轉發給zky.ac.cn。這個過程通常被稱作郵件中繼(mail relaying)。

出現郵件中繼是由于歷史的原因,使用郵件中繼是有它的好處的。到八十年代末期,很多網絡中的計算機都不是直接通信來傳輸郵件。而是通過郵件路由來傳遞郵件,通過郵件路由服務器一步一步地進行郵件傳輸。這樣做是非常麻煩的,發送者往往需要手工指定一封郵件需要經過哪些郵件路由服務器,比如需要從San Francisco發送一封郵件到New York,則需要在信封中添加如下內容:

San Francisco, Sacramento, Reno, Salt Lake City, Rock Springs, Laramie, North Platte, Lincoln, Omaha, Des Moines, Cedar Rapids, Dubuque, Rockford, Chicago, Gary, Elkhart, Fort Wayne, Toledo, Cleveland, Erie, Elmira, Williamsport, Newark, New York City, Greenwich Village, #12 Desolation Row, Apt. #35, R.A. Zimmermann

如果從郵局工作人員的角度來考慮,這種模型是非常有用的。在Gary的郵局只需要知道如何和臨近的郵局Chicago和Elkhart通信,而無需消耗資源計算如何將郵件發送到New York(這時候就很清楚為什么這種模式對于郵件發送者來說非常糟糕,為什么這種方法被拋棄了)。但是這就是郵件被傳輸的過程。因此服務器具有這樣的中繼的能力在那時是很重要的。
而現在中繼通常被用作不道德的廣告商用來隱藏它們的原始地址,將埋怨轉嫁給被用來中繼的服務器而不是其所在ISP的技術。同樣通過中繼可以實現將發送信件的負載轉移到中繼服務器上,從而實現盜用中繼服務器的服務資源。在這里最重要的一點是理解郵件內容是在發送點linuxaid.com.cn被編輯。中間的服務器unwilling.intermedia.com只是參加了中間的傳輸工作,它并不能對發送者有任何的約束力。

在上面的例子中應該注意的另外一點是"Message-Id:"并不是由發送者服務器(linuxaid.com.cn)而是中繼計算機(unwilling.intermedia.com)填寫的。這是被中繼的郵件的一個典型特性,該特性反映了發送服務器并沒有提供Message-Id的事實。

信封頭

上面關于SMTP的討論部分提到了“消息”頭和“信封”頭的不同之處。這種區別和導致的后果將在這里詳細地討論。

簡單地說,“信封”頭實際上是由接收消息的郵件服務器產生的,而不是發送者服務器。按照這個定義,“Received:”頭是信封頭,而一般來說常常使用"envelope From"和"envelope To"來指示它們。

"envelope From"頭是從MAIL FROM命令得到的。如發送者郵件服務器發出命令MAIL FROM: ideal@linuxaid.com.cn,則接收者服務器則產生一個"envelope From"頭:>From ideal@linuxaid.com.cn

注意這里少了一個冒號—"From"而不是"From:"。也就是說信封頭在其后沒有冒號。當然這個慣例并不是標準,但是這時一個值得注意的慣例。

對應的是"envelope To"同樣來自于RCPT TO命令。如果發送者服務器發出命令RCPT TO: ideal@btamail.net.cn。則"envelope To"為ideal@btamail.net.cn。一般來說實際上并沒有這樣一個郵件頭,它常常是包含在Received:頭中。

存在信封信息的一個重要結果就是消息From:和To:變得毫無意義。From:頭是由發送者提供的,同樣To:也是由發送者提供的。因此郵件僅僅基于"envelope To"來進行轉發路由,而不是基于消息To:。

為了從實際中理解這個概念,看看下面這樣的郵件傳輸:

HELO galangal.org
250 mail.zky.ac.cn Hello linuxaid.com.cn [202.99.11.120], pleased to meet you
MAIL FROM: forged-address@galangal.org
250 forged-address@galangal.org... Sender ok
RCPT TO: lisi@zky.ac.cn
250 lisi@zky.ac.cn... Recipient OK
DATA
354 Enter mail, end with "." on a line by itself
From: another-forged-address@lemongrass.org
To: (這里你的地址被隱瞞以實現秘密郵件轉發和騷擾)
.
250 OAA08757 Message accepted for delivery

下面是對應的郵件頭:

>From forged-address@galangal.org
Received: from galangal.org ([202.99.11.120]) by mail.zky.ac.cn (8.8.5) for <tmh@zky.ac.cn>...
From: another-forged-address@lemongrass.org
To: (your address suppressed for stealth mailing and annoyance)
注意到"envelope From"的內容和消息From:的內容和消息To:的內容都是發送者指定的,因此他們都是不可靠的。這個例子說明了為什么信封From、消息From:及消息To:在可能是偽造的郵件中是不可靠的,因為它們太容易偽造了。

"Received:"頭的重要性
在上面的例子中我們已經看到,"Received:"頭提供了詳細的消息傳輸歷史記錄,因此即使在其他郵件頭是被偽造的情況下也可能根據"Received:"頭得到某些關于該信件原始出處和傳輸過程的結論。這部分將詳細探討某些和異常的重要消息頭相關的問題,特別是如何挫敗那些常見的偽造技術。

毫無疑問的是,在"Received:"頭中唯一重要且有價值的偽造防護就是由接收服務器記錄的那些信息。前面提到發送者能偽造自己的身份(通過在HELO命令中報告錯誤的身份)。幸運的是現代郵件服務器程序都可以檢測到這種錯誤信息并加以修正。

如果服務器linuxaid.com.cn的真實IP地址是202.99.11.120,發送郵件給mail.zky.ac.cn,但是使用HELO galangal.org命令來偽造自己的身份,則對應該次傳輸的"Received:"可能如下所示:

Received: from galangal.org ([202.99.11.120]) by mail.zky.ac.cn (8.8.5)...
(后面的其他信息被省略以更加清晰)。注意雖然zky.ac.cn沒有明確地說galangal.org不是發送者的真實身份,但是它記錄了發送者正確的IP地址。如果某接收者認為消息頭中的galangal.org是偽造者偽造的身份,他可以查看IP地址202.99.11.120來得到對應的正確域名是linuxaid.com.cn,而不是galangal.org。也就是說記錄發送服務器的IP地址提供了足夠的信息來確認可以的偽造行為。
很多現代郵件程序實際上將根據IP查看對應域名的過程自動化了。(這種查看過程被稱為反向DNS解析)。如果mail.zky.ac.cn使用這種軟件,則"Received:"頭則變為

Received: from galangal.org (linuxaid.com.cn [202.99.11.120]) by mail.zky.ac.cn...

從這里可以清楚地看到偽造行為。這個消息頭明確地說linuxaid.com.cn的IP地址是202.99.11.120,但是卻宣稱自己的身份為galangal.org。這樣的信息對于對于驗證和追蹤偽造信件是非常有用的。(因此,垃圾郵件發送者往往避免使用那些記錄發送者地址的郵件服務器進行垃圾郵件轉發。有時候它們可以找到不記錄發送者服務器,但是現在網落上這樣的服務器已經很少了)
偽造者偽造郵件的另外一個日益常見的技巧是在發送垃圾郵件以前添加偽造的"Received:"頭。這意味著從linuxaid.com.cn發送的假設的郵件的"Received:"頭的內容可能為:

Received: from galangal.org ([202.99.11.120]) by mail.zky.ac.cn (8.8.5)...
Received: from nowhere by fictitious-site (8.8.3/8.7.2)...
Received: No Information Here, Go Away!

很明顯,最后兩行內容完全是毫無疑義的,是由發送者編寫并在發送以前附在郵件中的。由于一旦郵件離開linuxaid.com.cn,發送者對郵件完全失去了控制。而且新的"Received:"頭總是出現添加在消息的頭部,因此偽造的"Received:"頭總是出現在"Received:"頭列表的尾部。這意味著任何人從頭到尾讀取"Received:"頭列表,追蹤郵件傳輸歷史,都能安全地剔除在第一個偽造頭以后的內容。即使"Received:"頭看上去似乎是真實的,但是實際上都是偽造的。
當然,發送者不一定會用明顯的垃圾信息來迷惑你,一個處心積慮的偽造者可能創建如下所示的看似真實的"Received:"頭列表:

Received: from galangal.org ([202.99.11.120]) by mail.zky.ac.cn (8.8.5)...
Received: from lemongrass.org by galangal.org (8.7.3/8.5.1)...
Received: from graprao.com by lemongrass.org (8.6.4)...

這里泄漏偽造問題的唯一地方是第一個"Received:"頭中的galangal.org的IP地址。如果偽造者這里填寫了lemongrass.org和graprao.com的真實IP地址,則這樣的偽造偽造仍然非常難以檢測。但是第一個"Received:"頭中的域名和IP的不匹配仍然揭露了消息是偽造的,并且該郵件是有網絡中地址為202.99.11.120的服務器注入到網絡中。然而大多數郵件頭偽造者一般都沒有這么狡猾,一般額外添加的"Received:"頭一般都很明顯地是偽造的垃圾。

熱詞搜索:

上一篇:如何利用OutLook漏洞編寫病毒腳本
下一篇:.SMTP是工作在兩種情況下

分享到: 收藏
主站蜘蛛池模板: 乐东| 新河县| 宝鸡市| 张家界市| 肃宁县| 夏河县| 阿克| 万山特区| 巴楚县| 金沙县| 时尚| 固安县| 吉安市| 卫辉市| 镇沅| 禄劝| 乌拉特前旗| 葫芦岛市| 乾安县| 沙田区| 易门县| 武宣县| 江山市| 金沙县| 宁阳县| 闻喜县| 衢州市| 邮箱| 阿图什市| 长汀县| 交城县| 乐亭县| 犍为县| 汝阳县| 洛阳市| 太白县| 闻喜县| 樟树市| 六安市| 积石山| 黑河市|