?
第一章 電子郵件的工作原理
1. 互聯(lián)網(wǎng)TCP/IP的基本結(jié)構(gòu)
2. SMTP的基本結(jié)構(gòu)
2.1 SMTP的模型
2.2 SMTP的基本命令
3. 電子郵件的工作原理
4. 電子郵件的信頭結(jié)構(gòu)及分析
4.1 郵件的結(jié)構(gòu)
4.2 郵件的信頭
第二章 OPEN RELAY 的原理及測(cè)試
1. OPEN RELAY 的原理
2. 如何確認(rèn)郵件服務(wù)器是否RELAY
第三章 垃圾郵件的文化與歷史
1. 什么是垃圾郵件
2. 垃圾郵件的起源與歷史
3. 垃圾郵件的分類
4. 我們?yōu)槭裁匆磳?duì)垃圾郵件
5. 世界垃圾郵件狀況
6. 世界著名的反垃圾郵件組織
7. 垃圾郵件支持者
?
第一章 電子郵件的工作原理
1.互聯(lián)網(wǎng)TCP/IP的基本結(jié)構(gòu)
今天的互聯(lián)網(wǎng)(Internet)的原形是1969年建立的APARNET。在互聯(lián)網(wǎng)發(fā)展史上具有決定意義的一件事是在1983年1月1日,APARNET正式轉(zhuǎn)換成TCP/IP協(xié)議的網(wǎng)絡(luò)。正是TCP/IP的出現(xiàn),才使得互聯(lián)網(wǎng)得以在全世界的范圍內(nèi)迅速發(fā)展并具有今天的規(guī)模。 根據(jù)TCP/IP協(xié)議,互聯(lián)網(wǎng)分為4層,加上最底層的硬件層一共是5層:

物理層:
對(duì)應(yīng)于網(wǎng)絡(luò)的基本硬件,這也是Internet物理構(gòu)成,即我們可以看得見的硬件設(shè)備,如PC機(jī)、互連網(wǎng)服務(wù)器、網(wǎng)絡(luò)設(shè)備等,必須對(duì)這些硬件設(shè)備的電氣特性作一個(gè)規(guī)范,使這些設(shè)備都能夠互相連接并兼容使用。網(wǎng)絡(luò)接口層:它定義了將數(shù)據(jù)組成正確幀的規(guī)程和在網(wǎng)絡(luò)中傳輸幀的規(guī)程,幀是指一串?dāng)?shù)據(jù),它是數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)膯挝弧?br />
互聯(lián)網(wǎng)層:
本層定義了互聯(lián)網(wǎng)中傳輸?shù)摹靶畔备袷剑约皬囊粋€(gè)用戶通過(guò)一個(gè)或多個(gè)路由器到最終目標(biāo)?quot;信息包"轉(zhuǎn)發(fā)機(jī)制。
傳輸層:
為兩個(gè)用戶進(jìn)程之間建立、管理和拆除可靠而又有效的端到端連接。
應(yīng)用層:
它定義了應(yīng)用程序使用互聯(lián)網(wǎng)的規(guī)程。電子郵件的SMTP 協(xié)議就建立在這一層。Internet 的核心層是網(wǎng)絡(luò)層和傳輸層,相應(yīng)的核心協(xié)議是IP協(xié)議和TCP協(xié)議。IP 協(xié)議的主要功能包括無(wú)連結(jié)數(shù)據(jù)報(bào)傳送﹑數(shù)據(jù)報(bào)尋徑以及差錯(cuò)處理三部分。IP協(xié)議的特點(diǎn)是點(diǎn)到點(diǎn)的,IP對(duì)等實(shí)體間的通信不經(jīng)過(guò)中間機(jī)器,對(duì)等實(shí)體所在的機(jī)器位于同一物理網(wǎng)絡(luò),對(duì)等機(jī)器之間有直接的物理連接。IP層的主要功能是屏蔽下面物理層的差別,向上一層提供一致的數(shù)據(jù)格式。所有要傳輸?shù)臄?shù)據(jù),被按照一定的格式分組封裝層IP數(shù)據(jù)報(bào),數(shù)據(jù)報(bào)單元通過(guò)尋徑等機(jī)制進(jìn)行傳輸,在接收方數(shù)據(jù)報(bào)進(jìn)行重組,得到最初要傳送的數(shù)據(jù)。由于IP協(xié)議是不可靠的數(shù)據(jù)傳輸協(xié)議,由于網(wǎng)絡(luò)的擁塞而發(fā)生的數(shù)據(jù)丟失等情況是不可避免的,因此Internet 還必須有一定的控制重傳機(jī)制,這就是差錯(cuò)與控制報(bào)文協(xié)議(ICMP)。盡管計(jì)算機(jī)通過(guò)安裝IP軟件,從而保證了計(jì)算機(jī)之間可以發(fā)送和接收數(shù)據(jù),但I(xiàn)P協(xié)議還不能解決數(shù)據(jù)分組在傳輸過(guò)程中可能出現(xiàn)的問(wèn)題。因此,若要解決可能出現(xiàn)的問(wèn)題,還需要TCP協(xié)議來(lái)提供可靠的并且無(wú)差錯(cuò)的通信服務(wù)。TCP協(xié)議被稱作一種端對(duì)端協(xié)議。這是因?yàn)樗鼮閮膳_(tái)計(jì)算機(jī)之間的連接起了重要作用:當(dāng)一臺(tái)計(jì)算機(jī)需要與另一臺(tái)遠(yuǎn)程計(jì)算機(jī)連接時(shí),TCP協(xié)議會(huì)讓它們建立一個(gè)連接、發(fā)送和接收數(shù)據(jù)以及終止連接。傳輸控制協(xié)議TCP協(xié)議利用重發(fā)技術(shù)和擁塞控制機(jī)制,向應(yīng)用程序提供可靠的通信連接,使它能夠自動(dòng)適應(yīng)網(wǎng)上的各種變化。即使在 Internet 暫時(shí)出現(xiàn)堵塞的情況下,TCP也能夠保證通信的可靠.Internet 是一個(gè)龐大的國(guó)際性網(wǎng)絡(luò),網(wǎng)路上的擁擠和空閑時(shí)間總是交替不定的,加上傳送的距離也遠(yuǎn)近不同,所以傳輸數(shù)據(jù)所用時(shí)間也會(huì)變化不定。TCP協(xié)議具有自動(dòng)調(diào)整"超時(shí)值"的功能,能很好地適應(yīng) Internet 上各種各樣的變化,確保傳輸數(shù)值的正確。
IP協(xié)議只保證計(jì)算機(jī)能發(fā)送和接收分組數(shù)據(jù),而TCP協(xié)議則可提供一個(gè)可靠的、可流控的、全雙工的信息流傳輸服務(wù)。雖然IP和TCP這兩個(gè)協(xié)議的功能不盡相同,也可以分開單獨(dú)使用,但它們是在同一時(shí)期作為一個(gè)協(xié)議來(lái)設(shè)計(jì)的,并且在功能上也是互補(bǔ)的。只有兩者的結(jié)合,才能保證 Internet 在復(fù)雜的環(huán)境下正常運(yùn)行。凡是要連接到 Internet 的計(jì)算機(jī),都必須同時(shí)安裝和使用這兩個(gè)協(xié)議,因此在實(shí)際中常把這兩個(gè)協(xié)議統(tǒng)稱作TCP/IP協(xié)議。 TCP/IP 協(xié)議除了TCP協(xié)議和IP協(xié)議,還包含物理接口和IP層之間的ARP/RARP協(xié)議,應(yīng)用層的FTP協(xié)議﹑SMTP協(xié)議和BOOTP協(xié)議等,所用的這些協(xié)議構(gòu)成Intenet 的TCP/IP 協(xié)議族。
2.SMTP的基本結(jié)構(gòu)
SMTP (Simple Mail Transfer Protocol)協(xié)議是為了保證電子郵件的可靠和高效傳送。TCP/IP 協(xié)議的應(yīng)用層中包含有SMTP協(xié)議,但事實(shí)上它與傳輸系統(tǒng)和機(jī)制無(wú)關(guān),僅要求一個(gè)可靠的數(shù)據(jù)流通道。它可以工作在TCP上,也可以工作在NCP, NITS 等協(xié)議上。在TCP上,它使用端口25進(jìn)行傳輸。SMTP的一個(gè)重要特點(diǎn)是可以在可交互的通信系統(tǒng)中轉(zhuǎn)發(fā)郵件。
2.1 SMTP的模型
SMTP提供了一種郵件傳輸?shù)臋C(jī)制,當(dāng)收件方和發(fā)件方都在一個(gè)網(wǎng)絡(luò)上時(shí),可以把郵件直傳給對(duì)方;當(dāng)雙方不在同一個(gè)網(wǎng)絡(luò)上時(shí),需要通過(guò)一個(gè)或幾個(gè)中間服務(wù)器轉(zhuǎn)發(fā)。SMTP首先由發(fā)件方提出申請(qǐng),要求與接收方SMTP建立雙向的通信渠道,收件方可以是最終收件人也可以是中間轉(zhuǎn)發(fā)的服務(wù)器。收件方服務(wù)器確認(rèn)可以建立連接后,雙發(fā)就可以開始通信。下面是SMTP的模型示意圖。

發(fā)件方SMTP向收件方發(fā)處MAIL命令,告知發(fā)件方的身份;如果收件方接受,就會(huì)回答OK。發(fā)件方再發(fā)出RCPT命令,告知收件人的身份,收件方SMTP確認(rèn)是否接收或轉(zhuǎn)發(fā),如果同意就回答OK;接下來(lái)就可以進(jìn)行數(shù)據(jù)傳輸了。通信過(guò)程中,發(fā)件方SMTP與收件方SMTP 采用對(duì)話式的交互方式,發(fā)件方提出要求,收件方進(jìn)行確認(rèn),確認(rèn)后才進(jìn)行下一步的動(dòng)作。整個(gè)過(guò)程由發(fā)件方控制,有時(shí)需要確認(rèn)幾回才可以。

為了保證回復(fù)命令的有效,SMTP要求發(fā)件方必須提供接收方的服務(wù)器及郵箱。郵件的命令和答復(fù)有嚴(yán)格的語(yǔ)法定義,并且回復(fù)具有相應(yīng)的數(shù)字代碼。所有的命令由ASCII碼組成。命令代碼是大小寫無(wú)關(guān)的,如MAIL和 mail ﹑mAIL是等效的。
2.2 SMTP的基本命令
SMTP定義了14個(gè)命令,它們是:
HELO <SP> <domain> <CRLF>
MAIL <SP> FROM:<reverse-path> <CRLF>
RCPT <SP> TO:<forward-path> <CRLF>
DATA <CRLF>
RSET <CRLF>
SEND <SP> FROM:<reverse-path> <CRLF>
SOML <SP> FROM:<reverse-path> <CRLF>
SAML <SP> FROM:<reverse-path> <CRLF>
VRFY <SP> <string> <CRLF>
EXPN <SP> <string> <CRLF>
HELP [<SP> <string>] <CRLF>
NOOP <CRLF>
QUIT <CRLF>
TURN <CRLF>
其中使得SMTP工作的基本的命令有7個(gè),分別為:HELO﹑MAIL﹑RCPT﹑DATA﹑REST﹑NOOP和QUIT.下面分別介紹如下。
HELO--發(fā)件方問(wèn)候收件方,后面是發(fā)件人的服務(wù)器地址或標(biāo)識(shí)。收件方回答OK時(shí)標(biāo)識(shí)自己的身份。問(wèn)候和確認(rèn)過(guò)程表明兩臺(tái)機(jī)器可以進(jìn)行通信,同時(shí)狀態(tài)參量被復(fù)位,緩沖區(qū)被清空。
MAIL--這個(gè)命令用來(lái)開始傳送郵件,它的后面跟隨發(fā)件方郵件地址(返回郵件地址)。它也用來(lái)當(dāng)郵件無(wú)法送達(dá)時(shí),發(fā)送失敗通知。為保證郵件的成功發(fā)送,發(fā)件方的地址應(yīng)是被對(duì)方或中間轉(zhuǎn)發(fā)方同意接受的。這個(gè)命令會(huì)清空有關(guān)的緩沖區(qū),為新的郵件做準(zhǔn)備。
RCPT --這個(gè)命令告訴收件方收件人的郵箱。當(dāng)有多個(gè)收件人時(shí),需要多次使用該命令,每次只能指明一個(gè)人。如果接收方服務(wù)器不同意轉(zhuǎn)發(fā)這個(gè)地址的郵件,它必須報(bào)550錯(cuò)誤代碼通知發(fā)件方。如果服務(wù)器同意轉(zhuǎn)發(fā),它要更改郵件發(fā)送路徑,把最開始的目的地(該服務(wù)器)換成下一個(gè)服務(wù)器。
DATA--收件方把該命令之后的數(shù)據(jù)作為發(fā)送的數(shù)據(jù)。數(shù)據(jù)被加入數(shù)據(jù)緩沖區(qū)中,以單獨(dú)一行是"<CRLF>.<CRLF>"的行結(jié)束數(shù)據(jù)。結(jié)束行對(duì)于接收方同時(shí)意味立即開始緩沖區(qū)內(nèi)的數(shù)據(jù)傳送,傳送結(jié)束后清空緩沖區(qū)。如果傳送接受,接收方回復(fù)OK。
REST--這個(gè)命令用來(lái)通知收件方復(fù)位,所有已存入緩沖區(qū)的收件人數(shù)據(jù),發(fā)件人數(shù)據(jù)和待傳送的數(shù)據(jù)都必須清除,接收放必須回答OK.
NOOP--這個(gè)命令不影響任何參數(shù),只是要求接收放回答OK, 不會(huì)影響緩沖區(qū)的數(shù)據(jù)。
QUIT--SMTP要求接收放必須回答OK,然后中斷傳輸;在收到這個(gè)命令并回答OK前,收件方不得中斷連接,即使傳輸出現(xiàn)錯(cuò)誤。發(fā)件方在發(fā)出這個(gè)命令并收到OK答復(fù)前,也不得中斷連接。
下面是SMTP答復(fù)中用到的代碼和含義:
500 Syntax error, command unrecognized
[This may include errors such as command line too long]
501 Syntax error in parameters or arguments
502 Command not implemented
503 Bad sequence of commands
504 Command parameter not implemented
211 System status, or system help reply
214 Help message
[Information on how to use the receiver or the meaning of a
particular non-standard command; this reply is useful only to the human user]
220 <domain> Service ready
221 <domain> Service closing transmission channel
421 <domain> Service not available, closing transmission channel
[This may be a reply to any command if the service knows it must shut down]
250 Requested mail action okay, completed
251 User not local; will forward to <forward-path>
450 Requested mail action not taken: mailbox unavailable
[E.g., mailbox busy]
550 Requested action not taken: mailbox unavailable
[E.g., mailbox not found, no access]
451 Requested action aborted: error in processing
551 User not local; please try <forward-path>
452 Requested action not taken: insufficient system storage
552 Requested mail action aborted: exceeded storage allocation
553 Requested action not taken: mailbox name not allowed
[E.g., mailbox syntax incorrect]
354 Start mail input; end with <CRLF>.<CRLF>
554 Transaction failed
最后,讓我們看一個(gè)RFC821中給出的例子。這封信是Smith在主機(jī)Alpha.ARPA 發(fā)給主機(jī)Beta.ARPA上的
Jones,Green和 Brown.并且假定兩臺(tái)主機(jī)在同一個(gè)網(wǎng)絡(luò)上。
S: MAIL FROM:<Smith@Alpha.ARPA>
R: 250 OK
S: RCPT TO:<Jones@Beta.ARPA>
R: 250 OK
S: RCPT TO:<Green@Beta.ARPA>
R: 550 No such user here
S: RCPT TO:<Brown@Beta.ARPA>
R: 250 OK
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: <CRLF>.<CRLF>
R: 250 OK
郵件最后被對(duì)方接受。
3.電子郵件的工作原理
電子郵件與普通郵件有類似的地方,發(fā)信者注明收件人的姓名與地址(即郵件地址),發(fā)送方服務(wù)器把郵件傳到收件方服務(wù)器,收件方服務(wù)器再把郵件發(fā)到收件人的郵箱中。如下圖所示:

更進(jìn)一步的解釋涉及到以下幾個(gè)概念:
MUA -- Mail User Agent, 郵件用戶代理,幫助用戶讀寫郵件;
MTA -- Mail Transport Agent, 郵件傳輸代理,負(fù)責(zé)把郵件由一個(gè)服務(wù)器傳到另一個(gè)服務(wù)
器或郵件投遞代理;
MDA -- Mail Delivery Agent, 郵件投遞代理,把郵件放到用戶的郵箱里。
整個(gè)郵件傳輸過(guò)程如下:
目前使用的SMTP 協(xié)議是存儲(chǔ)轉(zhuǎn)發(fā)協(xié)議,意味著它允許郵件通過(guò)一系列的服務(wù)器發(fā)送到最終目的地。服務(wù)器在一個(gè)隊(duì)列中存儲(chǔ)到達(dá)的郵件,等待發(fā)送到下一個(gè)目的地。下一個(gè)目的地可以是本地用戶,或者是另一個(gè)郵件服務(wù)器,如下圖所示。

如果下游的服務(wù)器暫時(shí)不可用,MTA 就暫時(shí)在隊(duì)列中保存信件,并在以后嘗試發(fā)送。
4. 電子郵件的信頭結(jié)構(gòu)及分析
4.1 郵件的結(jié)構(gòu)
在最高層,郵件的結(jié)構(gòu)是非常簡(jiǎn)單的,用戶從終端機(jī)上看到的郵件格式一般為:
1. From: user1@domain1.com
2. To: user2@domain2.com
3. Subject: Explaination of mail format
4. Date: Thu, 1 Apr 1999. 10:00:00 GMT
5. Hi, Jack
7. This mail is to explain you the mail format
8. - - - -
9. Thanks
10. Bob
其中, 1~~4 行稱作信件信頭(message header) 6~~10行描述信件要表達(dá)的內(nèi)容,稱為信體 (message body)。第5行是空行,根據(jù)RFC822的要求,信頭和信體之間必須加入一空行。[i]信頭通常包含字段From, To, Subject 和Date,有的郵件還包含cc,bcc等字段。
4.2 郵件的信頭
事實(shí)上,郵件在傳輸過(guò)程中,服務(wù)器要把它打包成一個(gè)數(shù)據(jù)對(duì)象,包括上面的信件和一個(gè)信封。郵件的投遞是依靠信封上的地址或信封信頭(envelop address 或envelop header),而不是上面講的信件上的地址。
從表面上看,一封郵件是從發(fā)件人的機(jī)器直接傳送到收件人的機(jī)器,但通常這并不正確,一封郵件發(fā)送和接受過(guò)程至少要經(jīng)過(guò)四臺(tái)計(jì)算機(jī)。參考下圖所示。用戶通常在自己的電腦前編寫閱讀郵件,我們把它叫做客戶端 (client 1~~4 )。大部分組織里,都是用一臺(tái)專門的機(jī)器處理郵件,稱作郵件服務(wù)器 (SMTP1, SMTP2). 如果用戶是從家里撥號(hào)上網(wǎng),那末郵件服務(wù)器是ISP 提供的。

當(dāng)某個(gè)用戶在自己的電腦 Client1 前編寫完一個(gè)郵件,然后把它發(fā)送到他的ISP 的郵件服務(wù)器SMTP1。此時(shí)她的機(jī)器已經(jīng)完成了所有的工作,但郵件服務(wù)器SMTP1還必須想法把郵件發(fā)送到目的地。SMTP1 通過(guò)閱讀信頭或信封上的地址,找到收件認(rèn)得郵件服務(wù)器SMTP2, 然后與該服務(wù)器建立連接,把郵件發(fā)到收件人的服務(wù)器上,等待收件人來(lái)取閱。
下面我們將通過(guò)一個(gè)例子說(shuō)明整個(gè)郵件傳送過(guò)程及郵件的信頭變化。假設(shè)發(fā)件人的名字叫 Sender, email地址是 sender@domain1.com 使用的電腦名字叫 client1, IP 地址是 [111.11.1.1] (假設(shè)的地址)。 收件人的名字叫 receipt, email 地址是 receipt@domain2.com, 使用的電腦的名字叫 client2,IP 地址是 [222.22.2.2] (假設(shè)的地址)。當(dāng)郵件編輯完傳送給其郵件服務(wù)器mail.domain1.com 時(shí),郵件的信頭格式為:
From: sender@domain1.com
To: receipt@domain2.com
Date: Tue, Mar 18 1998 15:36:24 GMT
X-mailer:Sendmail 8.9.0
Subject: Greetings
當(dāng)郵件服務(wù)器 mail.domain1.com 把郵件傳到接收方的服務(wù)器 mail.domain2.com 時(shí),接受方服務(wù)器會(huì)在信頭上記錄下有關(guān)的計(jì)算機(jī)信息,郵件的信頭變成:
Received: from client1.domain1.com (client1.domain1.com [111.11.1.1]) by mail.domain1.com (8.8.5) id 004A21; Tue, Mar 18 1998 15:3 7:24 GMT
From: sender@domain1.com
To: receipt@domain2.com
Date: Tue, Mar 18 1998 15:36:24 GMT
Message-Id: <client1254556544-45556454@mail.domain1.com>
X-mailer:Sendmail 8.9.0
Subject: Greetings
當(dāng)收件人服務(wù)器mail.domain2.com 把郵件接收并存初下來(lái),等待收件人來(lái)閱讀時(shí),郵件的信頭將會(huì)再加入一條記錄:
Received: from mail.domain1.com (mail.domain1.com [111.11.1.0] ) by mail.domain2.com (8.8.5/8.7.2) with ESMTP id LAA20869; Tue, Mar 18 1998 15:39:44 GMT
Received: from client1.domain1.com (client1.domain1.com [111.11.1.1]) by mail.domain1.com (8.8.5) id 004A21; Tue, Mar 18 1998 15:37:24 GMT
From: sender@domain1.com
To: receipt@domain2.com
Date: Tue, Mar 18 1998 15:36:24 GMT
Message-Id: <client1254556544-45556454@mail.domain1.com>
X-mailer:Sendmail 8.9.0
Subject: Greetings
上面整個(gè)記錄就將是收件人看到的完整的郵件信頭。讓我們逐行看一下信頭中各行的含義:
Received: from mail.domain1.com (mail.domain1.com [111.11.1.0] ) by mail.domain2.com (8.8.5/8.7.2) with ESMTP id LAA20869; Tue, Mar 18 1998 15:39:44 GMT
這封信是從一臺(tái)自稱為 mail.domain1.com 的機(jī)器上接收的;這臺(tái)機(jī)器的IP 地址是[111.11.1.0],真實(shí)名字就是標(biāo)稱名字 mail.domain1.com; 接收方的機(jī)器名稱是 mail.domain2.com, 運(yùn)行的郵件服務(wù)器是 Sendmail, 版本(8.8.5/8.7.2) 。接收方機(jī)器給郵件的編號(hào)是ESMTP id LAA20869, 接收到的時(shí)間是 Tue, Mar 18 1998 15:39:44 GMT。
Received: from client1.domain1.com (client1.domain1.com [111.11.1.1]) by mail.domain1.com (8.8.5) id 004A21; Tue, Mar 18 1998 15:37:24 GMT
這條記錄表明信件是由機(jī)器client1.domain1.com ( IP 地址是 [111.11.1.1]) 在Tue, Mar 18 1998 15:37:24 GMT交給mail.domain1.com,并賦給編號(hào)id 004A21。
From,TO ,Date和Subject 都易于理解,分別指明發(fā)件人,收件人,信件編輯日期及信件主題。
Message-Id: <client1254556544-45556454@mail.domain1.com>
這是由發(fā)件方郵件服務(wù)器賦給這封郵件的編號(hào)。與其它編號(hào)不同,這個(gè)編號(hào)自始至終跟隨郵件。
第二章 OPEN RELAY 的原理及測(cè)試
1.OPEN RELAY 的原理
由于技術(shù)的原因,在80年代前,網(wǎng)絡(luò)還不是很健全,機(jī)器之間很少能直接對(duì)話發(fā)送郵件,人們必須得找出一條有效的連接通路來(lái),然后信件沿著通路一步一步傳送到目的地。SMTP協(xié)議中就明確指出當(dāng)郵件在不同的網(wǎng)絡(luò)間傳送時(shí),需要借助中間服務(wù)器的RELAY。
郵件在收件方和發(fā)件方之間會(huì)經(jīng)過(guò)毫不相干的第三方服務(wù)器,這就是郵件轉(zhuǎn)發(fā) (RELAY)。 如下圖所示:

圖中的 MAIL SERVER 是可以對(duì)要求轉(zhuǎn)發(fā)的郵件進(jìn)行限制的,如只轉(zhuǎn)發(fā)來(lái)自某個(gè)域的郵件或來(lái)自于某些IP 得郵件。如果轉(zhuǎn)發(fā)沒(méi)有任何限制,就被稱為 OPEN RELAY 或 THIRD PARTY RELAY。
從歷史上看,relay 曾經(jīng)發(fā)揮過(guò)重要作用。而且當(dāng)時(shí)這些工作主要靠手工來(lái)做,就像我們今天通過(guò)郵局發(fā)一封信一樣。假如我想從沈陽(yáng)發(fā)一封信件到深圳,我再信封上寫好收信地址深圳,郵局就需要找到定義的運(yùn)送路線: 沈陽(yáng),北京,鄭州,長(zhǎng)沙,廣州,深圳。甚至還要長(zhǎng)一些。其中很重要一點(diǎn)是每一個(gè)中繼站都能很好的理解這封信將被送到哪里,下一個(gè)接收站是誰(shuí)。在電子郵件里,這就相當(dāng)于每個(gè)中繼服務(wù)器清楚下一個(gè)服務(wù)起是誰(shuí),這就是郵件的轉(zhuǎn)發(fā)。
目前,正常郵件轉(zhuǎn)發(fā)已經(jīng)不再必要,相反,無(wú)限制轉(zhuǎn)發(fā)常常被發(fā)送垃圾郵件的人利用,隱藏真實(shí)的郵件來(lái)源,讓別人以為是從另外的ISP 發(fā)出的信件;同時(shí),也把大量的處理工作轉(zhuǎn)移到別人機(jī)器上。
由于前面提到的歷史的原因,最初的絕大多數(shù)郵件服務(wù)器都允許OPEN RELAY的。今天,大部分郵件服務(wù)器升級(jí)版本已經(jīng)在缺省設(shè)置中關(guān)閉了OPEN RELAY, 如Sendmail 從8.9.3版本開始,Exchange Server從5.5版本開始關(guān)閉了open relay。有的服務(wù)器雖然沒(méi)有相應(yīng)的升級(jí)版本,也都提供了關(guān)閉open relay 的方法,如在NOTES SERVER的配置文件notes.ini 中加入一行:SMTPMTA_REJECT_RELAYS=1。但由于很多服務(wù)器管理員的疏忽而沒(méi)能及時(shí)的修補(bǔ)這些安全漏洞,被利用來(lái)轉(zhuǎn)發(fā)垃圾郵件。
2 如何確認(rèn)郵件服務(wù)器是否RELAY
假設(shè)要測(cè)試的IP是202.112.0.0. 可以使用下列命令進(jìn)行測(cè)試,文中的綠色斜題字為測(cè)試郵件服務(wù)器的反饋信息:
#telnet 202.112.0.0 25
Trying 202.112.0.0...
Connected to 202.112.0.0.
Escape character is '^]'.
220 dns.ccert.edu.cn ESMTP Sendmail 8.11.1/8.11.1; Sat, 30 Jun 2001 21:07:10 +0800
helo mydomain
250 dns.ccert.edu.cn Hello point.ccert.edu.cn [202.112.50.3], pleased to meet you
mail from:nobody@yahoo.com
250 2.1.0 nobody@#yahoo.com... Sender ok
rcpt to:nobody@hotmail.com
550 5.7.1 nobody@hotmail.com... Relaying denied
最后的Relaying denied 表明該服務(wù)器已經(jīng)安全設(shè)置,不會(huì)再relay無(wú)關(guān)郵件了。如果顯示的結(jié)果是下面的樣子,這表明服務(wù)器可以轉(zhuǎn)發(fā)任何人的郵件。
rcpt to:nobody@hotmail.com
250 nobody@hotmail.com... Recipient ok
data
354 Enter mail, end with "." on a line by itself
this is a test of the relay
.
250 VAA00289 Message accepted for delivery
除了用上面的命令行的方法測(cè)試外,下面的鏈接提供了一個(gè)測(cè)試工具,只需輸入IP即可。 http://www.abuse.net/relay.html
第三章 垃圾郵件的文化與歷史
1. 什么是垃圾郵件
經(jīng)常上網(wǎng)的人和經(jīng)常使用電子郵件的人可能會(huì)收到一些莫名其妙的電子郵件,內(nèi)容大都是一些產(chǎn)品介紹,發(fā)財(cái)之道等。開始你可能并不在意,刪掉了之;但你可能會(huì)發(fā)現(xiàn)你還會(huì)不斷收到類似的郵件,常常令你煩惱不已。這就是我們這里要研究的垃圾郵件。垃圾郵件就是那些你并不希望收到,并且你也沒(méi)有訂閱過(guò),但卻被人利用電子郵件的特點(diǎn)強(qiáng)行塞入你的郵箱的商業(yè)廣告,產(chǎn)品介紹,發(fā)財(cái)之道等內(nèi)容的電子郵件。垃圾郵件一次發(fā)給很多人,在Internet 上同時(shí)傳送很多副本。
垃圾郵件和那些強(qiáng)行塞入你家門縫或信箱中的傳單又有本質(zhì)的區(qū)別。這些傳單的印刷和分發(fā)的成本由生產(chǎn)該產(chǎn)品的廠家來(lái)承擔(dān)。而這些電子垃圾郵件的成本卻是由你來(lái)支付的。這些垃圾郵件通常是盜用別人的服務(wù)器(也可能是你的服務(wù)器),使用別人的帶寬來(lái)傳送的。這也就是為是什么垃圾郵件遭到了如此強(qiáng)烈的譴責(zé),而那些散發(fā)傳單的人卻沒(méi)有。
2.垃圾郵件的起源與歷史
垃圾郵件是Internet 技術(shù)發(fā)展的產(chǎn)物。。與其它先進(jìn)技術(shù)一樣,在為人類服務(wù)的同時(shí),不可避免的被另外一些人用作相反目的。
首次關(guān)于垃圾郵件的記錄是1985年8月一封通過(guò)電子郵件發(fā)送的鏈鎖信,一直持續(xù)到1993年。 1993年6月份,在 Internet上出現(xiàn)了"發(fā)財(cái)之道(Make Money Fast)"的電子郵件。歷史上比較著名的事件是1994年4月份,Canter 和Siegel的法律事務(wù)所把一封信發(fā)到 6000 多個(gè)新聞組,宣傳獲得美國(guó)國(guó)內(nèi)綠卡的法律支持。這是第一次使用 Spam (垃圾郵件)一詞,用來(lái)描述新聞或電子郵件的主動(dòng)性發(fā)布。同時(shí),垃圾郵件也開始引起了人們的注意和反感。一些觸覺敏銳的商人立刻意識(shí)到了電子郵件帶來(lái)的商機(jī),許多人開始利用電子郵件作商業(yè)廣告,95年5月有人寫出了第一個(gè)專門的應(yīng)用程序 Floodgate,一次可以自動(dòng)把郵件發(fā)給很多人。緊接著在8月份,就有人拿兩百萬(wàn)個(gè)郵件地址出售。垃圾郵件越來(lái)越多與商業(yè)聯(lián)系起來(lái),96年的4月份,人們開始使用 UCE(Unsolicited Commercial Email) 來(lái)稱呼垃圾郵件,并開始積極想辦法阻止垃圾郵件在Internet 上泛濫。到了96年3月,有人提出了SpamBlock的方法,例如使用 REMOVE.TO.REPLY 的工具來(lái)過(guò)濾郵件地址。隨著過(guò)濾垃圾郵件技術(shù)的發(fā)展以及人們對(duì)發(fā)送垃圾郵件者的譴責(zé),垃圾郵件的制造者不得不采取更為隱蔽的技術(shù),比如偽造信頭中的發(fā)件人,域名,郵件地址等。然而這些方法還是逃不出IP的地址的過(guò)濾。于是,垃圾郵件的制造者又開始尋找更為安全的做法,97年3月,他們開始把目光轉(zhuǎn)向OPEN RELAY。OPEN RELAY是當(dāng)時(shí)解決Internet 路由的一種很好的方法,當(dāng)然存在以上安全漏洞。很快,大部分商業(yè)垃圾郵件就開始利用別人的服務(wù)器使用郵件轉(zhuǎn)發(fā)的辦法發(fā)送。這樣做的另一個(gè)原因是可以節(jié)省郵件發(fā)送者的錢,盜用別人的資源。在過(guò)去的幾年里,人們已經(jīng)越來(lái)越多的意識(shí)到控制Internet 上垃圾郵件的重要性,世界各地成立了很多組織反對(duì)垃圾郵件,如MAPS,ORBS, SpamCorp. Junckemail.org等,從技術(shù)上,法律上做著努力。
3. 垃圾郵件的分類
垃圾郵件從內(nèi)容上看,主要是商業(yè)廣告性質(zhì)的郵件;另外,由少量政治,團(tuán)體組織的宣傳郵件。
從郵件的發(fā)送形式上看,有直接發(fā)送和第三方轉(zhuǎn)發(fā)兩種。所謂直接發(fā)送,就是郵件的發(fā)送者使用自己的服務(wù)器,IP 地址,自己的網(wǎng)絡(luò)資源傳送這些郵件。對(duì)于接收者來(lái)說(shuō),如果長(zhǎng)期收到這樣的郵件,可以采取過(guò)濾該IP地址的辦法或者根據(jù)郵件內(nèi)容過(guò)濾的方法;但如果只是偶爾收到,就很難找到有效的方法了。使用這種方法,郵件發(fā)送人的真實(shí)情況很容易被查出來(lái),因此也很少有人使用。目前使用更多的是使用第三方服務(wù)器轉(zhuǎn)發(fā)。當(dāng)然大多都是未經(jīng)該服務(wù)器管理員同意情況下使用的。由于歷史的原因,Internet 上有很多服務(wù)器可以轉(zhuǎn)發(fā)第三方郵件。對(duì)于這種垃圾郵件,只要關(guān)閉有關(guān)服務(wù)器的轉(zhuǎn)發(fā)功能就可以了。
4.我們?yōu)槭裁匆磳?duì)垃圾郵件
在討論這個(gè)問(wèn)題之前,讓我們看一下為什么會(huì)有人采用這種方式做廣告。總結(jié)一下,大致歸于兩點(diǎn)原因:低成本和易于匿名。發(fā)送10萬(wàn)封電子郵件的成本低于200美圓,花100美圓就可以買到100萬(wàn)個(gè)郵件地址列表。一個(gè)業(yè)余的郵件廣告人只需要一臺(tái)普通的電腦,一個(gè)Internet帳戶加上一個(gè)免費(fèi)的郵件客戶端軟件就足夠了。更為專業(yè)一點(diǎn)的,投資幾百美圓就可以買到專門的應(yīng)用軟件,每小時(shí)可以發(fā)送25萬(wàn)個(gè)郵件,并且自動(dòng)偽裝了郵件的信頭;并且還可以不斷的從WEB 上截獲郵件地址。由于低廉的成本,即使只有很少很少的部分得到了反饋,就足以支付這些費(fèi)用了,比起昂貴的其它方式的廣告自然很劃算。然而,事實(shí)上成本低只是針對(duì)于那些用郵件做廣告的人,其他的成本由ISP和收件人承擔(dān)了。
另外,從整個(gè) Internet 的資源利用來(lái)看,目前帶寬資源還比較有限。垃圾郵件里的信息幾乎沒(méi)有什么價(jià)值,每次發(fā)送上萬(wàn),百萬(wàn),甚至上億份,占用了大量的帶寬資源,嚴(yán)重時(shí)甚至擁塞整個(gè)Internet 鏈路,中斷 Internet 的部分線路的運(yùn)營(yíng)。 這是 ISP 和服務(wù)器管理員所不希望看到的。據(jù)CAUCE組織統(tǒng)計(jì),消除垃圾郵件可為全世界小型企業(yè)和個(gè)人每年節(jié)省940萬(wàn)美圓。
其次,從個(gè)人用戶來(lái)看,垃圾郵件浪費(fèi)了人們的大量時(shí)間。一般人們需要至少10秒鐘時(shí)間來(lái)判斷是否為垃圾郵件,如果每天收到幾十份垃圾郵件,就得花大約十分鐘的時(shí)間來(lái)處理它們,實(shí)在是比較痛苦的事情。
垃圾郵件也威脅網(wǎng)絡(luò)的安全,特別是那些利用別人的服務(wù)器轉(zhuǎn)發(fā)郵件的情況。今年3月份,我們就收到兩起來(lái)自CERNET用戶的有關(guān)事故報(bào)告。其中一個(gè)是網(wǎng)絡(luò)管理員發(fā)現(xiàn)他們的服務(wù)器在以每秒60封的速度轉(zhuǎn)發(fā)郵件,占用了大量的系統(tǒng)資源,其他正常運(yùn)作被迫終止。另外一起是管理員發(fā)現(xiàn)出國(guó)流量突然增加,一查發(fā)現(xiàn)該服務(wù)器轉(zhuǎn)發(fā)了200萬(wàn)封國(guó)外的來(lái)源不名的郵件,而且發(fā)現(xiàn)時(shí)還在轉(zhuǎn)發(fā)。
從法律的角度來(lái)看,發(fā)送垃圾郵件屬于言論自由的濫用,不但得不到法律的支持,相反,很多地方正積極之制定相關(guān)法律來(lái)禁止垃圾郵件。
5. 世界垃圾郵件狀況
正如上一節(jié)講到的,垃圾郵件并不受人們的歡迎。從垃圾郵件的產(chǎn)生之初,人們就開始了反垃圾郵件的工作,并取得了一定的進(jìn)展。我們不妨回顧一下過(guò)去的幾年中取得的進(jìn)展:
95.7 在英語(yǔ)中開始使用spam 以此來(lái)表示垃圾郵件,表明垃圾郵件已成為一個(gè)正式的課題;
95.10~11,行業(yè)內(nèi)開始使用專門的郵件賬戶 abuse@domain 來(lái)討論垃圾郵件,并開始出現(xiàn)所謂的黑名單,把一些已知的發(fā)送垃圾郵件的 IP 列入其中,人們可以用來(lái)過(guò)濾垃圾郵件;
97.5 CAUCE (Coalition Against Unsolicited Commercial E-mail) 組織成立,倡議建立法律來(lái)同垃圾郵件做斗爭(zhēng);
98.4 Interner 協(xié)會(huì) ISOC (Internet Society) 召開會(huì)議專門討論了垃圾郵件;
99.2 發(fā)布了RFC2502, Anti-Spam Recommendations for SMTP MTAs, 標(biāo)志垃圾郵件已正式成為Internet 的重要研究課題。
另外一種比較辦法用 OPEN RELAY 服務(wù)器的數(shù)量。以美國(guó) IMC(Internet Mail Consortium)組織在美國(guó)的統(tǒng)計(jì)結(jié)果來(lái)看,OPEN RELAY 服務(wù)器數(shù)量已有1998年的55% 迅速下降到 2001年初的 6% 左右。 如下圖所示 :

在其他國(guó)家和地區(qū),狀況雖然不會(huì)有這樣好,但隨著越來(lái)越多的人們意識(shí)到垃圾郵件的危害,隨著相關(guān)技術(shù)的不斷成熟,網(wǎng)絡(luò)安全意識(shí)的不斷提高,垃圾郵件的活動(dòng)空間將越來(lái)越小。
6 世界著名的反垃圾郵件組織
世界各地成立了許多組織開展反垃圾郵件的工作。目前幾個(gè)著名的組織有MAPS,ORBS, SpamCorp 等,他們從技術(shù)角度著手解決垃圾郵件,他們都各自維護(hù)了一個(gè)發(fā)送或轉(zhuǎn)發(fā)垃圾郵件的數(shù)據(jù)庫(kù),幫助用戶過(guò)濾垃圾郵件。另外,CAUCE等組織則積極推動(dòng)建立相關(guān)的法律體系以徹底清除垃圾郵件。
7 垃圾郵件支持者
目前大量發(fā)送垃圾郵件的主要是一些中小企業(yè),以此來(lái)進(jìn)行廣告商業(yè)宣傳。同時(shí),也有一些大的組織機(jī)構(gòu)出于自己的商業(yè)目的而支持垃圾郵件。據(jù)Spamhaus 統(tǒng)計(jì),90% 的垃圾郵件來(lái)自于知名的盈利機(jī)構(gòu) ,Spamhoue收集了100 多家主要的支持垃圾郵件的 ISP, 其中甚至包括著名的跨國(guó)公司。 有的公司甚至把支持垃圾郵件作為自己的經(jīng)營(yíng)策略。還有一些公司是專門提供發(fā)送垃圾郵件的應(yīng)用程序。正因?yàn)槿绱耍旁黾恿私估舌]件的難度。目前,一些公司主要從以下幾個(gè)方面從事或支持垃圾郵件,盡管他們不一定直接發(fā)送這些郵件:
制作并銷售具有特殊功能的垃圾郵件發(fā)送軟件,這些軟件具有"隱蔽功能",能夠逃避普通的過(guò)濾器;
制作和銷售從網(wǎng)絡(luò)上截獲 email 地址的工具;
銷售從網(wǎng)絡(luò)上獲取的 email 地址列表;
銷售具有發(fā)送垃圾郵件特征的服務(wù),媒體或軟件;
提供發(fā)送垃圾郵件的商業(yè)服務(wù);
為垃圾郵件的制造者提供防攻擊(bulletproof)的服務(wù);
提供到以上站點(diǎn)的鏈接或把鏈接轉(zhuǎn)向以上站點(diǎn)。
目前,有656個(gè)上述網(wǎng)站被 Spamhaus 記錄并仍在從事支持垃圾郵件的行為,3149個(gè)站點(diǎn)被關(guān)閉或被迫停止類似業(yè)務(wù)。
,