欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Exchange傳輸組件大揭秘(上)
作者/喻勇
導讀:
本文根據筆者在微軟Technet Webcast上的講稿整理而成。文章介紹了微軟Exchange Server中的核心傳輸組件以及它們的工作原理,闡述了SMTP協(xié)議的內容和使用SMTP發(fā)送郵件時(shí)的詳細過(guò)程;深入地討論了郵件傳輸和路由的工作機制,分析了SMTP報文的組成和Exchange在傳輸郵件時(shí)的路由過(guò)程(包括AQ, Routing Engine等組件)。本文可以供Exchange管理員深入的了解郵件傳輸組件的內部工作方式。
STMP協(xié)議規范和命令字
SMTP協(xié)議是隨著(zhù)Internet的發(fā)展逐漸規范化和進(jìn)一步完善的。SMTP協(xié)議最早在RFC821中被定義,它提供了Internet上兩個(gè)節點(diǎn)之間傳送信息的一種方式。SMTP協(xié)議非常的簡(jiǎn)單和直觀(guān),在RFC821中,STMP由一些通過(guò)ASCII碼表示的命令字組成,通過(guò)這些命令字,兩個(gè)節點(diǎn)之間(客戶(hù)機和服務(wù)器)可以建立SMTP連接,并進(jìn)行信息傳遞。SMTP的標準命令字和其作用如表一:
SMTP命令
作用
HELO
用于開(kāi)始會(huì )話(huà),通常在HELO后跟客戶(hù)機的主機名(hostname)
MAIL
用于指出發(fā)起會(huì )話(huà)的發(fā)件人,通常在MAIL后面跟From參數來(lái)指定發(fā)件人
RCPT
用于指定該消息的接收人,通常在RCPT后面跟To參數來(lái)指定收件人
DATA
表示客戶(hù)端開(kāi)始向服務(wù)器端發(fā)送消息(郵件) 正文
RSET
放棄當前的數據傳輸
VRFY
用以確定指定的收件人在服務(wù)器端是合法的(在發(fā)送郵件正文之前確定郵箱是否存在),考慮到這個(gè)功能有一定的安全隱患(可能導致組織的郵件地址泄漏),此命令在包括Exchange在內的大部分企業(yè)郵件系統中不被支持,SMTP服務(wù)器對VRFY請求,總是會(huì )返回”非法地址”
TURN
交換客戶(hù)端和服務(wù)器角色,允許客戶(hù)端觸發(fā)服務(wù)器端的郵件傳送(此命令也很少被使用)
QUIT
關(guān)閉當前會(huì )話(huà)
表一:SMTP標準命令字和其作用
SMTP服務(wù)器監聽(tīng)TCP 25號端口,并對客戶(hù)端發(fā)送的合法命令做出響應。我們可以通過(guò)Telnet的方式演示一下最簡(jiǎn)單的SMTP郵件傳送過(guò)程。表二中列出了使用Windows Telnet客戶(hù)端跟Exchange SMTP Server通信的過(guò)程:(粗體表示用戶(hù)輸入,斜體表示服務(wù)器回應)
Telnet過(guò)程
注釋
c:\telnet win2003.msft.com 25
220 win2003.msft.com Microsoft ESMTP Mail Service, Version 6.0.3790.0 ready at Tue, 18 Oct 2005 19:21:55 -0700
客戶(hù)端通過(guò)TCP 25號端口連接服務(wù)器,SMTP服務(wù)器返回連接成功信息,并返回服務(wù)器操作系統類(lèi)型,版本和當前時(shí)間。
HELO
250 win2003.msft.com Hello [192.168.1.100]
客戶(hù)端通過(guò)HELO命令跟服務(wù)器開(kāi)始通信,服務(wù)器以250回應表示服務(wù)器做好了進(jìn)行通信的準備。
MAIL FROM:tom@msft.com
250 2.1.0 tom@msft.com...Sender OK
客戶(hù)端提供發(fā)信人地址。
RCPT TO:mike@msft.com
250 2.1.5 mike@msft.com
客戶(hù)端提供收信人地址。
DATA
354 Start mail input; end with
客戶(hù)端輸入DATA命令,DATA之后的字符都將作為郵件的正文。正文以.終止。
Hello Mike,
Let’s have dinner together.
Tom
.
250 2.6.0 <###@win2003.msft.com> Queued mail for delivery
.表示連續的回車(chē)-換行-點(diǎn)號-回車(chē)-換行。正文傳送完畢以后,服務(wù)器端會(huì )生成郵件并進(jìn)行下一步的傳送。
QUIT
221 2.0.0 win2003.msft.com Service closing transmission channel
使用QUIT命令結束當前會(huì )話(huà)。
表二:使用Telnet進(jìn)行SMTP會(huì )話(huà)
通過(guò)Telnet進(jìn)行SMTP會(huì )話(huà)在診斷一些郵件傳輸問(wèn)題時(shí)非常有用,微軟在其知識庫文檔中詳細描述了使用Telnet進(jìn)行SMTP會(huì )話(huà)的過(guò)程。(XFOR:Telnet 到端口 25 以測試 SMTP 通信,http://support.microsoft.com/default.aspx?scid=kb;zh-cn;153119
在Exchange Server中,SMTP是郵件系統傳輸模塊的核心,SMTP負責了組織內部郵件服務(wù)器間郵件的傳送和對外發(fā)送郵件的重任。圖一表示了SMTP模塊在Exchange整個(gè)系統結構中的位置。SMTP協(xié)議棧運行在IIS的進(jìn)程中,在IIS中,還有AQE和Routing模塊協(xié)助SMTP的工作。Exchange的數據庫模塊(Information Store)通過(guò)EXIPC作為橋梁,跟SMTP進(jìn)行通信。
圖一:SMTP模塊在Exchange中的位置
用戶(hù)可以通過(guò)多種方式向Exchange服務(wù)器提交需要發(fā)送的郵件,例如,用戶(hù)可以使用Outlook的MAPI方式,把郵件提交到Information Store中,也可以使用Outlook Express的SMTP方式,向SMTP服務(wù)器直接傳送需要發(fā)送的郵件。Exchange上的SMTP模塊,在不同的情況下承擔的角色是不一樣的,我們可以通過(guò)如下的情景分析,來(lái)透徹的了解SMTP服務(wù)器的工作方式。
圖二:SMTP服務(wù)器在不同情況下?lián)蔚慕巧?div style="height:15px;">
如圖二,我們分6種情況來(lái)討論SMTP服務(wù)器的不同角色。
連接1,2,3,4代表了Inbound連接(其中連接1中的MAPI客戶(hù)端是把郵件直接提交到Information Store中,不屬于SMTP連接),當處理inbound連接時(shí),圖中的郵件服務(wù)器起到的是SMTP Server的角色。請注意,Inbound連接有兩種類(lèi)型,一種是客戶(hù)端提交的郵件(連接2),這種通常表示組織內的用戶(hù)通過(guò)在Outlook Express軟件中指定SMTP服務(wù)器IP地址,來(lái)向服務(wù)器提交需要發(fā)送的郵件;另一種類(lèi)型是其他的SMTP服務(wù)器轉發(fā)過(guò)來(lái)的郵件(連接3,4),這通常表示當前郵件服務(wù)器是網(wǎng)關(guān),或者是信件中收件人的郵箱所在的服務(wù)器。
連接5,6代表了Outbound連接,當處理outbound連接時(shí),郵件服務(wù)器起到的是SMTP Client的角色,不管是發(fā)到外部,還是內部郵件的轉發(fā),都是由SMTP Client發(fā)起會(huì )話(huà),并且由遠端的服務(wù)器來(lái)響應。
由此我們可以發(fā)現,一臺SMTP主機,它在運行過(guò)程中,既會(huì )承擔SMTP Server的角色來(lái)接收Inbound連接所提交的SMTP報文,同時(shí)也會(huì )作為SMTP Client來(lái)向遠程的服務(wù)器發(fā)送SMTP請求(Outbound)。只有分清楚了這些不同角色的含義,才可能透徹的了解Exchange的郵件傳輸過(guò)程。
如果把一封郵件的發(fā)送過(guò)程比喻為一次長(cháng)途旅程,那么SMTP在其中只是扮演了交通工具的作用。大家可能已經(jīng)注意到,對于一個(gè)給定的收件人地址(例如,abc@microsoft.com),SMTP并沒(méi)有定義到底與目標域中哪一個(gè)主機來(lái)建立連接來(lái)完成郵件的傳輸過(guò)程,也就是說(shuō),RFC 821中的SMTP并沒(méi)有定義“尋址”的方法(下面提到的MX記錄及郵件選路和域名系統的規范,在RFC 974中被詳細定義)。
在Internet中,我們是通過(guò)DNS里面的MX記錄來(lái)實(shí)現郵件的尋址的。當一個(gè)組織或者公司購買(mǎi)了一個(gè)Internet域名并且建立了郵件服務(wù)器以后,往往會(huì )把某一臺或者幾臺服務(wù)器發(fā)布到外網(wǎng),作為郵件網(wǎng)關(guān),接收來(lái)自Internet的郵件。同時(shí),需要在該域名DNS系統(這里指此域名在Internet上的DNS,而不是內網(wǎng)活動(dòng)目錄的DNS,千萬(wàn)不能混淆)的MX記錄字段中,注冊這些主機的名字,這樣當給這個(gè)域中的郵箱發(fā)郵件時(shí),發(fā)送方通過(guò)向Internet上DNS服務(wù)器查詢(xún)該域名的MX記錄,再確定有哪些服務(wù)器可以建立SMTP連接。我們可以使用NSLOOK這個(gè)命令,在查詢(xún)特定域名下面注冊的MX記錄。如表三,我們查到了微軟公司現有的MX記錄。在輸出的結果中,我們發(fā)現微軟公司注冊了三個(gè)主機名來(lái)作為接收外部郵件的服務(wù)器,并且當進(jìn)一步解析DNS主機記錄時(shí),我們可以發(fā)現這三個(gè)主機名分別對應6個(gè)IP地址,通過(guò)這種做法,可以實(shí)現SMTP流量的負載均衡。(仔細看會(huì )發(fā)現這些IP地址屬于兩個(gè)不同的網(wǎng)段,應該是由不同的ISP提供的網(wǎng)絡(luò )鏈路,這也在某種程度上實(shí)現了線(xiàn)路的互相備份和冗余。)
當我們架設郵件服務(wù)器系統時(shí),只有正確的在ISP的DNS上設置了MX記錄,才能夠收到從外部發(fā)來(lái)的郵件。關(guān)于MX記錄的更多信息,可以參考微軟的知識庫文檔。(XFOR: DNS MX Records and CNAMEhttp://support.microsoft.com/default.aspx?scid=kb;en-us;153001)
H:\>nslookup
>set q=mx
>microsoft.com
DNS Server: ns-pxb.online.sh.cn
Address: 202.96.209.6
microsoft.com MX preference = 10, mail exchanger = maila.microsoft.com
microsoft.com MX preference = 10, mail exchanger = mailb.microsoft.com
microsoft.com MX preference = 10, mail exchanger = mailc.microsoft.com
maila.microsoft.com      internet address = 131.107.3.125
maila.microsoft.com      internet address = 131.107.3.124
mailb.microsoft.com      internet address = 207.46.121.51
mailb.microsoft.com      internet address = 131.107.3.123
mailc.microsoft.com      internet address = 207.46.121.53
mailc.microsoft.com      internet address = 207.46.121.52
-----------Query Result-----------
表三:微軟公司的MX記錄設置
SMTP標準命令字最初定義在RFC821標準中,隨著(zhù)Internet的發(fā)展,這些命令逐漸無(wú)法滿(mǎn)足一些特殊的郵件發(fā)送要求,比如,發(fā)送方身份的認證,數據加密,報文的傳輸優(yōu)化等等。在RFC 1869中,國際標準化組織定義了擴展SMTP協(xié)議(Extended SMTP,簡(jiǎn)稱(chēng)ESMTP),在原有的命令字基礎之上,增加了如下表(表四)所示的的擴展命令:
ESMTP命令
作用
EHLO
作為標準HELO的替代者,客戶(hù)端發(fā)送EHLO來(lái)跟服務(wù)器確定其對ESMTP的支持程度,服務(wù)器會(huì )返回一個(gè)它所支持的ESMTP命令字列表給客戶(hù)端。
ATRN
TURN命令的增強,在啟用TURN之前需要身份認證。
ETRN
TURN命令的增強,功能上與TURN類(lèi)似,但是通過(guò)創(chuàng )建另外一個(gè)獨立的會(huì )話(huà)完成TURN報文傳送。
Pipelining
允許SMTP客戶(hù)端在服務(wù)器響應之前以異步的方式連續發(fā)送若干的命令字。例如,可以在獲得服務(wù)器確認之前,連續發(fā)送多個(gè)RCPT命令字,這樣可以實(shí)現在慢速網(wǎng)絡(luò )上的高效通信。
BDAT
此命令字替代DATA,允許客戶(hù)端采用批量的方式傳送消息報文,可以在一定程度上降低接收方的負載。
AUTH
允許客戶(hù)端使用基本驗證、Windows集成驗證(NTLM和Kerberos)與服務(wù)器進(jìn)行身份認證,進(jìn)行身份認證也是避免SMTP服務(wù)器被relay的重要手段。
STARTTLS
用來(lái)表示客戶(hù)端希望能夠與服務(wù)器建立一個(gè)基于TLS的加密會(huì )話(huà)。
XEXCH50
用以傳送Exchange服務(wù)器間專(zhuān)用的報頭數據。這個(gè)命令會(huì )在下文講解Exchange分類(lèi)器的時(shí)候提到。
表四:ESMTP的擴展命令集
標準SMTP(RFC 821)和擴展SMTP(RFC 1869)都得到了當今主流郵件服務(wù)器的廣泛支持,Exchange服務(wù)器完全兼容這兩種類(lèi)型的SMTP協(xié)議,并且還增加了一些用于Exchange服務(wù)器間通信的特殊SMTP命令字(非國際標準)。在一些特殊情況下(比如跟比較舊版本的郵件服務(wù)器進(jìn)行SMTP通信),我們也可以關(guān)閉Exchange Server上的ESMTP,使其只提供最簡(jiǎn)單和標準的RFC 821 SMTP協(xié)議,具體請參考:How to turn off ESMTP verbs in Exchange Server,http://support.microsoft.com/default.aspx?scid=kb;en-us;257569。
SMTP報文格式
現在我們來(lái)分析SMTP的報文格式。如圖三,一個(gè)合法的SMTP報文由信封和正文這兩部分所組成。在傳遞過(guò)程中,郵件每經(jīng)過(guò)一臺SMTP服務(wù)器,該服務(wù)器就會(huì )在信封這一部分上留下轉發(fā)的痕跡(轉發(fā)時(shí)間,服務(wù)器IP地址等等)。正文(既SMTP DATA命令后所做的輸入)部分由信頭和信體組成,信頭中包含發(fā)件人和收件人地址以及其他的一些信息,信體為郵件的具體內容。
信封上有發(fā)件人和收件人地址,不同的是,信封上的發(fā)件人收件人地址由MAIL FROM和RCPT TO命令寫(xiě)入,是用來(lái)給郵件服務(wù)器進(jìn)行信件傳送的,而信頭上的發(fā)件人收件人是用來(lái)顯示在Outlook中的。這兩組地址,是可以不相同的!我們跟傳統的書(shū)信比較一下:當給女朋友寫(xiě)情書(shū)的時(shí)候,大家一般都在信封上寫(xiě)她的真實(shí)姓名,而在信紙的開(kāi)頭冠以“親愛(ài)的。。?!敝?lèi)的親切稱(chēng)呼。情書(shū)在被郵局投遞時(shí),工作人員會(huì )在信封上敲郵戳,以反映投遞的過(guò)程。
信封和信體上的地址可以不相同,這有什么好處呢?我們舉一個(gè)簡(jiǎn)單的例子。當我們采用BCC的方式發(fā)一封郵件給A,B,C三個(gè)人時(shí),BCC的特點(diǎn)就要求隱藏郵件的收件人。這時(shí),Exchange就會(huì )把原來(lái)的郵件拆分成三封獨立的郵件,然后分別生成SMTP報文,在發(fā)給每個(gè)人的信封中,寫(xiě)入他的地址,在正文的信頭中,把收件人表示為空。這樣,每個(gè)收件人都回收到BCC的郵件,但是都無(wú)法知道這封信還BCC了哪些其他人。
圖三:SMTP的報文格式
我們可能已經(jīng)注意到,在RFC 821和1869中,我們定義了SMTP中用于建立連接和傳輸報文的命令字。在DATA命令后,我們可以傳送由ASCII字符組成的數據流(即前面所提到的正文部分)到遠端的SMTP主機,可這遠遠不能滿(mǎn)足日常email通信的要求。郵件發(fā)送者往往需要在信件中使用非ASCII字符(例如,中文和其他非羅馬字母語(yǔ)言),還需要插入各種類(lèi)型的附件。為了能通過(guò)email發(fā)送非ASCII數據,IETF定義了多用途Internet郵件擴充MIME(Multipurpose Internet Mail Extension)標準。MIME并非為了改動(dòng)SMTP或者取代它,而是允許使用ASCII碼對任意數據進(jìn)行編碼,然后使用SMTP的DATA命令進(jìn)行傳送。
我們可以通過(guò)如下的例子來(lái)深入了解MIME編碼在郵件中的作用。如圖四,如果郵件中包含由MIME編碼的數據,一般會(huì )在信頭中指定MIME版本和分隔符(例子中的boundary=98766789,通過(guò)此分隔符來(lái)分隔不同的MIME內容)。當信件正文中有圖文混排,或者中英文交叉在一起的情況,就需要把不同的內容分別進(jìn)行MIME編碼。下圖中所表示的郵件由一段文本和一張jpeg圖片組成,所以就會(huì )生成兩段獨立的MIME編碼。每段MIME編碼起始位置,都會(huì )指明這段編碼所代表的數據類(lèi)型和使用的編碼算法,以方便客戶(hù)端軟件進(jìn)行解碼。我們可以在Outlook軟件中把郵件另存為以EML為擴展名的文件,然后用寫(xiě)字板打開(kāi),這樣可以看到所有的郵件結構和MIME編碼。
圖四:MIME編碼在郵件中的作用
至此我們簡(jiǎn)單的介紹了SMTP協(xié)議的傳輸命令和其編碼方式,正如我們在開(kāi)篇所提到的,SMTP協(xié)議是隨著(zhù)Internet的發(fā)展和用戶(hù)的需求逐漸完善和優(yōu)化的,其標準的形成經(jīng)歷了一定的過(guò)程,下面簡(jiǎn)單的列出了跟SMTP有關(guān)的幾個(gè)RFC標準。
標準定義時(shí)間
RFC編號
作用
1982年8月
821
簡(jiǎn)單郵件傳送協(xié)議和基本的SMTP命令字
1982年8月
822
郵件報文的確切格式,定義了信封加正文的結構
1986年1月
974
郵件選路和域名系統的關(guān)系
1986年2月
976
用于UNIX UUCP的郵件系統標準
1993年9月
1521
MIME標準,包括信頭說(shuō)明語(yǔ)法,內容類(lèi)型和編碼算法
1993年9月
1522
為非ASCII文本定義了MIME信頭的擴充
1994年3月
1590
描述了新MIME內容和編碼類(lèi)型的登記過(guò)程
1995年11月
1869
擴展SMTP標準
Exchange傳輸引擎架構
在花了大量篇幅討論過(guò)SMTP協(xié)議的細節之后,我們來(lái)看一看微軟是如何設計Exchange的傳輸模塊,使其既滿(mǎn)足SMTP協(xié)議的規則,又能夠在微軟的特定系統架構環(huán)境下高效地工作。Exchange Server是一個(gè)非常復雜的大型軟件,它涉及到了活動(dòng)目錄、高性能數據庫、各種類(lèi)型的網(wǎng)絡(luò )協(xié)議(MAPI、RPC、HTTP、SMTP、NNTP等等)以及很多Windows底層的技術(shù),做為傳輸模塊核心的SMTP服務(wù),需要在實(shí)現自身功能的基礎上,跟上述模塊緊密、高效、安全的運行在一起,這是微軟的Exchange開(kāi)發(fā)者所面臨的巨大挑戰。
在微軟發(fā)布Exchange 2000之前,SMTP協(xié)議的實(shí)現作為IIS 5.0的一部分,已經(jīng)隨著(zhù)Windows 2000一起發(fā)布了。Windows中的SMTP服務(wù)是嚴格按照RFC標準所開(kāi)發(fā)的,實(shí)現了其中的絕大部分要求。但是對于Exchange Server來(lái)說(shuō),這個(gè)版本的SMTP還需要進(jìn)一步的增強,以實(shí)現跟微軟Exchange相關(guān)的郵件數據庫和活動(dòng)目錄的接口。Exchange Server的SMTP是在Windows SMTP的基礎之上進(jìn)行了一定的擴展和增強。從圖一中我們可以看出來(lái),SMTP是運行在IIS的進(jìn)程空間(inetinfo.exe)的,在安裝Exchange Server時(shí),安裝程序接管Windows SMTP,并對其進(jìn)行改造。首先,安裝程序把SMTP的工作目錄轉移到“\Exchsrvr\mailroot\vsi 1”下面,并且重新設置這些目錄的若干屬性;然后,安裝程序注冊了一些COM組件(DLL文件),這些組件作為Exchange SMTP的擴展,將擴展和覆蓋Windows SMTP原有的模塊,并和IIS無(wú)縫的集成在一起進(jìn)行郵件的傳輸工作。概括來(lái)說(shuō),Exchange對Windows SMTP一共做了如下五個(gè)方面的擴展:
1.       高級隊列引擎(Advanced Queuing Engine,下文簡(jiǎn)稱(chēng)AQE)。作為傳輸模塊的心臟,高級隊列引擎控制著(zhù)SMTP服務(wù)器上郵件的處理流程,所有提交到SMTP服務(wù)器的郵件,都無(wú)一例外的要經(jīng)過(guò)AQE的處理。
2.       增強型郵件分類(lèi)器(Enhanced Categorizer)。郵件分類(lèi)器負責郵件的收件人地址解析。在Windows SMTP中,Windows在其自帶的CAT.DLL中實(shí)現了郵件分類(lèi)器的基本功能,但是這個(gè)功能在Windows下默認是關(guān)閉的。Exchange安裝時(shí),安裝程序激活了郵件分類(lèi)器,并且使用其自帶的PHATCAT.DLL來(lái)接管CAT.DLL實(shí)現Exchange SMTP郵件分類(lèi)器的功能。PHATCAT.DLL由Exchange開(kāi)發(fā)小組編寫(xiě),有更加復雜的功能,并且與活動(dòng)目有很好的集成。
(Link State Protocol)。鏈路狀態(tài)協(xié)議用于Exchange組織中的路由信息更新。Exchange服務(wù)器、路由組和路由組連接器的任何狀態(tài)變化,都由鏈路狀態(tài)協(xié)議負責在整個(gè)組織環(huán)境中進(jìn)行廣而告之。這些功能也是由Exchange SMTP來(lái)協(xié)助實(shí)現的,服務(wù)器使用特定的X-LINK2STATE命令字來(lái)傳送路由表的變化。
4.       數據庫驅動(dòng)程序接口(Information Store Driver)。數據庫驅動(dòng)程序接口允許SMTP中的組件對Exchange數據庫中的郵件進(jìn)行直接的讀取,這在進(jìn)行郵件的本地投遞和獲取郵件屬性時(shí)非常有用。
5.       Exchange SMTP專(zhuān)用命令字(Extended Command Verbs)。為了滿(mǎn)足自身的要求,微軟在SMTP命令字的基礎上,增加了X-LINK2STATE、Chunking和Pipelining等等特殊的關(guān)鍵字,以實(shí)現服務(wù)器間通信和特定的性能優(yōu)化。
Exchange的SMTP之所以建立在Windows SMTP的基礎之上,除了為了接管Windows SMTP原有的功能之外,另一個(gè)重要的原因是為了獲得IIS所提供的安全、高效的網(wǎng)絡(luò )通信平臺。在IIS中,用戶(hù)身份認證,底層網(wǎng)絡(luò )通信這些模塊已經(jīng)完成并且技術(shù)成熟度也很高,因此不需要Exchange的開(kāi)發(fā)者再重新花力氣去另起爐灶。圖五顯示了SMTP在IIS和整個(gè)Windows平臺中的位置。SMTP可以同時(shí)響應很多并發(fā)的連接,其中一個(gè)很重要的原因就是SMTP借助了IIS所提供的異步線(xiàn)程隊列技術(shù)(Asynchronous Thread Queue),該技術(shù)允許并發(fā)連接可以被系統以平行、異步的方式高速的處理,在Windows平臺上盡最大的可能性提高了系統的吞吐量。
圖五:SMTP在IIS和整個(gè)Windows平臺中的位置
前文所提到的Exchange SMTP擴展模塊,是采用COM組件和Event Sink技術(shù)來(lái)完成的。當IIS中的線(xiàn)程運行SMTPSVC.DLL中的SMTP協(xié)議處理代碼,或者運行PHATQ.DLL中的SMTP傳輸過(guò)程處理代碼時(shí),被傳送的郵件會(huì )經(jīng)歷一個(gè)又一個(gè)的“事件”。SMTP使用微軟服務(wù)器擴展對象(Server Extension Object,SEO.DLL)這個(gè)COM組件來(lái)觸發(fā)這一系列的事件,并且隨后使用COM激活技術(shù)去實(shí)例化跟這些事件所關(guān)聯(lián)的相應代碼(調用Event Sink)。SMTP常常用事件來(lái)表示一個(gè)SMTP命令的提交(如客戶(hù)端發(fā)送一個(gè)EHLO命令給服務(wù)器),也用事件表示把一封郵件提交給傳輸子系統。一些諸如SMTP協(xié)議擴展、郵件分類(lèi)器、路由引擎的模塊,這些都是微軟所開(kāi)發(fā)的Event Sink,他們分別注冊并跟SMTP中相應的事件相關(guān)聯(lián)。Event和Event Sink是互相關(guān)聯(lián)的,Event被觸發(fā)后,事先注冊好的Event Sink中的代碼就會(huì )被調用。Event觸發(fā)與調用Event Sink和編程技術(shù)中的回調函數是同樣的道理。值得一提的是,Exchange的Event Sink接口技術(shù)是公開(kāi)的,也就是說(shuō)任何開(kāi)發(fā)者都可以編寫(xiě)自己的事件響應代碼,來(lái)擴展SMTP的功能。(常見(jiàn)的在郵件結尾自動(dòng)添加公司保密聲明、郵件自動(dòng)歸檔、郵件查毒過(guò)濾、垃圾郵件判別等等功能,都是通過(guò)二次開(kāi)發(fā)的Event Sink來(lái)實(shí)現的)。在進(jìn)一步討論之前,我們來(lái)看一看SMTP中事件的種類(lèi)和他們相應的作用。如下圖,SMTP觸發(fā)的事件一般分為4個(gè)大類(lèi)別。
圖六:SMTP觸發(fā)的事件類(lèi)別
1.       SMTP協(xié)議事件(SMTP protocol events)。
這些事件針對SMTP協(xié)議本身,其注冊的事件響應代碼(Event Sink)通過(guò)修改、禁用或增加一些特殊的命令字,來(lái)改變SMTP協(xié)議引擎對標準SMTP命令字的響應行為。舉例來(lái)說(shuō),進(jìn)行X-LSA鏈路狀態(tài)協(xié)議(此協(xié)議用于更新服務(wù)器路由拓撲)處理的Event Sink會(huì )針對其自定義的X-LINK2STATE這一SMTP命令字做出響應,執行相應的路由更新操作。SMTP協(xié)議事件的Event Sink也能夠更改標準SMTP和ESMTP命令字的回應和處理過(guò)成功,例如,當用戶(hù)提交MAIL FROM命令時(shí),預先定義的Event Sink可以檢查FROM字段中的郵件地址是否在黑名單中,如果是,可以采取屏蔽操作。
2.       SMTP存儲事件(SMTP store events)。
這些存儲事件允許其Event Sink(通常在數據庫驅動(dòng)中被實(shí)現)去獲取在數據庫或者文件系統中的郵件內容。傳輸子系統使用此Event Sink來(lái)完成郵件的本地投遞工作。(郵件最終目的地就是當前SMTP服務(wù)器時(shí),SMTP執行本地投遞,把信件保存到數據庫中)
3.       SMTP傳輸事件(SMTP transport events)。
當郵件到達服務(wù)器、在傳輸系統中被處理、投遞給收件人或向外轉發(fā)時(shí),都會(huì )觸發(fā)一連串的SMTP傳輸事件。在Exchange 2003中,微軟使用SMTP傳輸事件來(lái)調用郵件的分類(lèi)器和路由組件(這兩部分會(huì )在下一期的文章中進(jìn)行非常細致的討論)。
4.       SMTP系統事件(SMTP system events)。
與此事件相關(guān)聯(lián)的Event Sink負責進(jìn)行日志記錄等工作,該Event Sink往往以異步的方式被觸發(fā),執行Event Log和SMTP診斷日志的記錄工作。
我們再從全局的角度看一下Exchange的傳輸模塊。如圖七,Exchange郵件傳輸流程大致可以從這張圖上反映出來(lái)。
郵件可以從兩個(gè)來(lái)源進(jìn)入傳輸模塊,通過(guò)SMTP協(xié)議引擎(圖二中的2、3、4,當使用Outlook Express的SMTP/POP3方式收發(fā)郵件時(shí),屬于這種情況)或者通過(guò)數據庫(Web Storage System)直接向傳輸模塊提交(前文圖二中的1,當使用Outlook MAPI方式,或者OWA發(fā)信時(shí),屬于這種情況)。需要注意的是,當信件由數據庫引擎提交時(shí),它是不經(jīng)過(guò)SMTP協(xié)議模塊處理的,而是直接放入到分類(lèi)器的隊列里面了。因此,一般的反垃圾郵件和反病毒程序,都不會(huì )去通過(guò)注冊Event Sink來(lái)監聽(tīng)SMTP協(xié)議事件來(lái)工作,因為這樣會(huì )漏掉通過(guò)數據庫直接提交的郵件,這種類(lèi)型的程序,往往注冊監聽(tīng)AQ中分類(lèi)器所產(chǎn)生的事件。請牢記,只有高級隊列中的分類(lèi)器是Exchange系統中傳送郵件時(shí)唯一的一個(gè)必經(jīng)之路,其它模塊都有可能在特定的情況下被跳過(guò)。
郵件經(jīng)過(guò)分類(lèi)器和路由引擎進(jìn)行處理,來(lái)分析收件人地址并進(jìn)行下一跳(next hop)的投遞路由判斷和選擇,然后就會(huì )交給SMTP向外投遞。當下一跳的目的地恰好是本地服務(wù)器時(shí),SMTP調用Store Driver中定義的Local Delivery把郵件投遞到數據庫中,當下一跳目的地是其他遠程服務(wù)器時(shí),根據目的地服務(wù)器的類(lèi)型,郵件依次被放置到不同的遠程隊列中進(jìn)行投遞處理,此時(shí),SMTP承擔圖二中5、6的角色,以SMTP Client的身份,向遠程SMTP主機發(fā)起會(huì )話(huà)請求。郵件就是這樣在一臺臺的服務(wù)器間被傳遞,直到被Local Delivery到目標數據庫中(或者被退信)。
總結和下期介紹
本文介紹了SMTP協(xié)議的工作方式,基本命令字和MIME的基礎知識,同時(shí)也闡明了Exchange Server SMTP模塊的組成方式。作為連載,筆者會(huì )在下一篇文章中從郵件投遞過(guò)程的動(dòng)態(tài)角度,深入地討論Exchange是如何在內部處理郵件傳輸的。下期要目如下:
1.         基于事件觸發(fā)機制的郵件傳輸過(guò)程
2.         Exchange Categorizer
3.         隊列和MailMsg對象
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
第8章 因特網(wǎng)的應用
電子郵件協(xié)議綜述
Exchange 2010部署配置詳細指南
Exchange 2003/2007 常見(jiàn)問(wèn)題之一
Exchange 接收連接器(Client、Default)區別,OUtlook實(shí)際測試
Telnet到端口25以測試SMTP通信
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久