文章編號: 313404 - 上次校閱: 2007年12月3日 - 版次: 6.4

如何在 Exchange 2000 Server 中 「 SMTP 服務註冊傳輸事件接收器

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文將逐步告訴您,如何透過傳輸事件接收器的方式延伸簡易郵件傳輸通訊協定 (SMTP) 服務。Microsoft Visual Basic 指令碼版 (VBScript) 程式碼會檢查傳入 SMTP 郵件包含病毒 」 這個字的主旨行,以及具有.vbs 副檔名的附件。在這兩種情況下被封鎖可疑郵件的傳遞。

若為 SMTP 服務註冊傳輸事件接收器

  1. 啟動 Windows 檔案總管]。
  2. 建立一個稱為 EventSink 根目錄 C (C:\EventSink) 下的新資料夾。
  3. 從 Exchange 軟體開發人員套件的 Smtpreg.vbs 將檔案複製到新建立的資料夾。
  4. 在 Windows 檔案總管中開啟 [C:\EventSink] 資料夾,將游標左邊的窗格上按一下滑鼠右鍵、 接著指向 [新增],然後再按一下 [文字文件]。
  5. 新的檔案 Smtpmsgcheck.vbs 命名。如果出現 [重新命名] 對話方塊,按一下 [是]
  6. 在新的檔案上按一下滑鼠右鍵,然後按一下 [編輯]。在文字編輯器 (Notepad.exe) 中, 輸入下列的 VBScript 程式碼:
    <SCRIPT LANGUAGE="VBScript"> 
    
    Sub IEventIsCacheable_IsCacheable() 
    	'To implement the interface, and return S_OK implicitly 
    End Sub
    
    Sub ISMTPOnArrival_OnArrival(ByVal Msg, EventStatus) 
    	Dim envFlds 
    	Dim colAttachs 
    	Dim iFound 
    	Set envFlds = Msg.EnvelopeFields 
    
    	If Msg.Subject = "" Or Len(Msg.Subject) < 5 Then 
    		iFound = 0 
    	Else 
    		iFound = Instr(1, Msg.Subject, "VIRUS", 1) ' First position of the word VIRUS 
    	End If
     
    	'Check whether the message contains a VBS attachment 
    	Set colAttachs = Msg.Attachments 
    	For Each oAttach in colAttachs 
    		If InStrRev(oAttach.FileName, ".vbs",-1, 1) = (Len(oAttach.FileName)-3) Then
    			iFound = 1 
    		End If
    	Next
    
    	If iFound > 0 Then 
    		'Do not deliver, place message in the Badmail directory. 
    		envFlds ("http://schemas.microsoft.com/cdo/smtpenvelope/messagestatus") = 3 
    		envFlds.Update  'Commit the changes of the message status 'Skip remain event sinks 
    		EventStatus = 1
    	End If 
    End Sub 
    
    </SCRIPT>
  7. 儲存所作變更,然後關閉 「 記事本 」。
  8. 建立另一個文字檔案、 命名檔案 Instsink.bat]、 在檔案上按一下滑鼠右鍵,然後按一下 [編輯]。在 [記事本] 中, 輸入下列行:
    @Echo Off
    
    REM*********** The following 2 lines install the Event Sink to log SMTP Messages ***********
    Cscript smtpreg.vbs /add 1 onarrival SMTPMessageCheck CDO.SS_SMTPOnArrivalSink "mail from=*"
    Cscript smtpreg.vbs /setprop 1 onarrival SMTPMessageCheck Sink ScriptName "C:\EventSink\SMTPMsgCheck.vbs"
    
    REM ***** Remove the 'REM' tag from the following line *****
    REM ***** If you want to deinstall the Event Sink again *****
    REM cscript smtpreg.vbs /remove 1 onarrival SMTPMessageCheck
    					
  9. 儲存所作變更,然後關閉 「 記事本 」。
  10. 按一下 [開始],再按一下 [執行]、 輸入 cmd,然後再按一下 [確定] 以啟動 Windows 2000 命令提示字元]。輸入 cd \EventSink 若要變更為 C:\EventSink 資料夾。
  11. 輸入 instsink.bat,然後按下 ENTER 以執行批次檔和登錄 EventSink 範例記錄訊息。請確認事件接收器註冊正確,然後鍵入 [結束 並 ENTER,以結束命令提示字元。
  12. 按一下 [開始],按一下 [程式集]、 按一下 Microsoft Exchange,然後再按一下 [系統管理員]。
  13. 按一下 [伺服器]、 展開您的伺服器]、 按一下 SMTP,並重新啟動 預設 SMTP 虛擬伺服器]。
  14. 藉由使用 Telnet 測試傳輸事件接收器。

這篇文章中的資訊適用於:
  • Microsoft Exchange Server 2003 Enterprise Edition
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Windows Small Business Server 2003 Premium Edition
  • Microsoft Windows Small Business Server 2003 Standard Edition
關鍵字:?
kbmt kbhowtomaster KB313404 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:313404? (http://support.microsoft.com/kb/313404/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。