This is what i have so far. I can access the text of an email, and search for keywords (simple instr() should do it) in all emails of a given users email folder. You need to run this ecript on the exchange server, and the account that you run it under needs full access to the exchange store.
Now that I can find the emails, i need to figure out what to do with them, i recall seeing some move/copy commands yesterday. perhaps copy the keyword emails to another user folder. something that i could then archive off to a cd and hand to the lawyers to make them happy 
Bryce
Code:
GetMessages("http://<server>/exchange/<user>/inbox")
Function GetMessages($szURL, optional $oconn)
DIM $ors, $szQuery, $count, $url
If VarType($oConn) <> 9
$oConn = CreateObject("ADODB.Connection")
EndIf
$oRS = CreateObject(ADODB.RecordSet)
$szQuery = 'SELECT "DAV:href", '+
'"urn:schemas:httpmail:subject",'+
'"urn:schemas:httpmail:datereceived",'+
'"urn:schemas:httpmail:textdescription"'+
' FROM SCOPE(' + "'shallow traversal of "+'"'+$szURL+'"'+"')"
$oConn.ConnectionString = $szURL
$oConn.Provider = "EXOLEDB.DataSource"
$oConn.Open
$oRS.Open($szQuery, $oConn)
While not $oRS.EOF
; Do Something with The Data
;? $oRS.Fields("urn:schemas:httpmail:subject").Value ;Dump the message Subject
;? $oRS.Fields("urn:schemas:httpmail:textdescription").value
;? $oRS.Fields("urn:schemas:httpmail:fromemail").value
;? $oRS.Fields("urn:schemas:httpmail:datereceived").value
;? $oRS.Fields("DAV:href").Value ;Dump the url to the message Item
$url = $oRS.Fields("DAV:href").Value
If not SubSTR($url,InStrRev($url,"."))
;? $url
;If you want recursive subfolders, uncomment this line.
;GetMessages($url,$oconn)
Else
? $url
? $oRS.Fields("urn:schemas:httpmail:textdescription").value
EndIf
$oRS.MoveNext
Loop
$oConn = 0
$oRS = 0
EndFunction
Bryce