How to send a copy of all SMTP mails to another recipient mailbox using SMTP Event Sink

How to send a copy of all SMTP mails to another recipient mailbox using SMTP Event Sink

  • Comments 1

Sometime we need to trap all the outgoing/incoming email messages and would like to forward a copy of it to another recipient mailbox.
Here is sample script to achieve that:

Step 1: Install Exchange 2003 SDK on your Exchange Server. You can download it at the following link.
http://www.microsoft.com/downloads/details.aspx?FamilyID=a865936f-50da-47a0-9dce-f24e8307f38d&DisplayLang=en

Step 2: Open Notepad and Paste the following code to it and save it as forward.vbs

NOTE: Following programming examples is for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This sample code assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures.

 

   1:  <SCRIPT LANGUAGE="VBScript"> 
   2:   
   3:  Sub ISMTPOnArrival_OnArrival(ByVal Msg, EventStatus) 
   4:   
   5:  Dim RecpList 
   6:   
   7:  recplist = Msg.EnvelopeFields("http://schemas.microsoft.com/cdo/smtpenvelope/recipientlist")
   8:   
   9:  'Change "administrator@dc.com" to the mailbox address to which you want to send a B’cc copy
  10:  If ( Instr(recplist,"SMTP:administrator@dc.com;") =< 0) then
  11:      recplist = recplist &  "SMTP:administrator@dc.com;" 
  12:  End If
  13:  Msg.EnvelopeFields("http://schemas.microsoft.com/cdo/smtpenvelope/recipientlist") = recplist 
  14:  Msg.EnvelopeFields.update
  15:  WriteLog(Msg.EnvelopeFields("http://schemas.microsoft.com/cdo/smtpenvelope/recipientlist"))
  16:  WriteLog("Done")
  17:  End Sub
  18:   
  19:  Sub WriteLog(ByVal strMessage)
  20:      Dim fs
  21:      Set fs = CreateObject("Scripting.FileSystemObject")
  22:      Dim file
  23:   
  24:  'change "C:\bnewlog.txt" name/path of the log file
  25:      Set file = fs.opentextfile("C:\bnewlog.txt", 8, True)
  26:      file.Write strMessage
  27:      file.Close
  28:  End Sub
  29:   
  30:  </SCRIPT>

Step 3: Register the event sink
========================
1. Click Start -> Run­, Type "cmd" and Click OK
2. Type "CD C:\Program Files\Exchange SDK\SDK\Support\CDO\Scripts" and Press Enter
3. Type cscript smtpreg.vbs /add 1 onarrival SMTPScriptingHost CDO.SS_SMTPOnArrivalSink "mail from=*" and Press Enter
4. Type cscript smtpreg.vbs /setprop 1 onarrival SMTPScriptingHost Sink ScriptName "C:\forward.vbs" and Press Enter (make sure that the path to forward.vbs is correct)

Now, all the incoming/outgoing emails bcc'ed/copied to administrator@dc.com.

To unregister this event, type the following:
cscript smtpreg.vbs /remove 1 OnArrival SMTPScriptingHost

Please also refer to the following article 273233:You cannot modify MAPI messages that are trapped in an SMTP transport event sink.

Feel free to post your comments or request for messaging related development issues.

Leave a Comment
  • Please add 7 and 3 and type the answer here:
  • Post