#179635 - 2007-08-23 04:17 PM
OT - Find SMTP Mail alias
|
Witto
MM club member
   
Registered: 2004-09-29
Posts: 1828
Loc: Belgium
|
Does anybody know how to query for an smtp mail alias? I want to find the user object that has a second smtp mail address. I know the alias. How can I find the related user object? It does not have to be KiX scripted.
|
|
Top
|
|
|
|
#179636 - 2007-08-23 04:39 PM
Re: OT - Find SMTP Mail alias
[Re: Witto]
|
Witto
MM club member
   
Registered: 2004-09-29
Posts: 1828
Loc: Belgium
|
|
|
Top
|
|
|
|
#179637 - 2007-08-23 05:16 PM
Re: OT - Find SMTP Mail alias
[Re: Witto]
|
Witto
MM club member
   
Registered: 2004-09-29
Posts: 1828
Loc: Belgium
|
It is about this error message, when trying to add a second smtp address to an existing mail user object. Method one does not show me the answer. Try to follow method 2, just downloaded Microsoft Network Monitor 3.1 But no luck so far...
|
|
Top
|
|
|
|
#179649 - 2007-08-24 10:09 AM
Re: OT - Find SMTP Mail alias
[Re: Witto]
|
Arend_
MM club member
   
Registered: 2005-01-17
Posts: 1896
Loc: Hilversum, The Netherlands
|
Here, spend 30+ mins figuring it out 
$strX400Search = "X400:"
$strOutputFile = "D:\proxyaddresses.csv"
$objRootDSE = GetObject("LDAP://rootDSE")
$strDNSDomain = $objRootDSE.Get("defaultNamingContext")
;Set the ADO connection query strings
$QueryPath ="" + $strDNSDomain
$strFilter = "(&(proxyAddresses=*))"
$strAttributes = "adspath"
;Start the ADO connection
$objCommand = CreateObject("ADODB.Command")
$objConnection = CreateObject("ADODB.Connection")
$objConnection.Provider = "ADsDSOObject"
$objConnection.Open("Active Directory Provider")
$objCommand.ActiveConnection = $objConnection
;Create the Query
$strQuery = "<LDAP://" + $QueryPath + ">;" + $strFilter + ";" + $strAttributes + ";subtree"
$objCommand.CommandText = $strQuery
$objCommand.Properties("Page Size").value = 1000
$objCommand.Properties("Timeout").value = 30
$objCommand.Properties("Cache Results").value = 0
$objRecordSet = $objCommand.Execute
$objCount = 0
;objCount = $objRecordSet.RecordCount '<--not possible when 'caching results' is false
$addrCount = 0
$objRecordSet.MoveFirst
;Get the emailaddresses of all Items with a proxyaddress in the domain
While Not $objRecordset.EOF
$objCount = $objCount + 1
$strItemPath = $objRecordSet.Fields("AdsPath").Value
$objItem = GetObject($strItemPath)
$strObjClass = $objItem.class
$ProxyAddresses = $objItem.proxyAddresses
For Each $Proxy in $ProxyAddresses
If Not InStr(UCase($Proxy), $strX400Search)
$emailaddres = "present"
$addrCount = $addrCount + 1
$x = SubStr($proxy,1,4)
Select
CASE $x == UCASE("smtp")
$emailaddres = SubStr($proxy,6) + ",Primary"
CASE $x == LCASE("smtp")
$emailaddres = SubStr($proxy,6) + ",Secondary"
EndSelect
$strResult = $strResult + @Crlf + $strObjClass + "," + chr(34) + $objItem.distinguishedName + chr(34) + "," + $emailaddres
EndIf
Next
$objRecordSet.MoveNext
Loop
;Output to a text file
$objFileSystem = CreateObject("Scripting.FileSystemObject")
$objOutputFile = $objFileSystem.CreateTextFile($strOutputFile)
$objOutputFile.Write("objectClass,DistinguishedName,Emailaddress,pri/sec address,'")
$objOutputFile.Write($strResult)
$objOutputFile.close
? "Counted: " + $objCount + " records and " + $addrCount + " emailaddresses"
|
|
Top
|
|
|
|
#179655 - 2007-08-24 11:13 AM
Re: OT - Find SMTP Mail alias
[Re: Witto]
|
Arend_
MM club member
   
Registered: 2005-01-17
Posts: 1896
Loc: Hilversum, The Netherlands
|
No Problem
|
|
Top
|
|
|
|
#179659 - 2007-08-24 12:33 PM
Re: OT - Find SMTP Mail alias
[Re: Arend_]
|
Richard H.
Administrator
   
Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
|
Why not use the AD Users and Computers console?
Right click on domain, select search, click advanced tab, click "Fields" button and select "E-Mail address" and set the search criteria.
Not as much fun as scripting it, but it only took me 30 seconds to work out
|
|
Top
|
|
|
|
#179673 - 2007-08-24 02:13 PM
Re: OT - Find SMTP Mail alias
[Re: Richard H.]
|
Arend_
MM club member
   
Registered: 2005-01-17
Posts: 1896
Loc: Hilversum, The Netherlands
|
Besides, in my organization ppl have multiple email aliases and I want to know them all
|
|
Top
|
|
|
|
#179675 - 2007-08-24 02:32 PM
Re: OT - Find SMTP Mail alias
[Re: Arend_]
|
Arend_
MM club member
   
Registered: 2005-01-17
Posts: 1896
Loc: Hilversum, The Netherlands
|
Simplified my previous script a WHOLE lot, basically rewrote it entirely  Upper Case SMTP = Primary Lower Case smtp = Secondary
$=SetOption('Explicit','On')
$=SetOption('NoVarsInStrings','On')
$=SetOption('NoMacrosInStrings','On')
Dim $adsDomain, $adsUser, $cnusr, $usrnfo, $usrmail
$adsDomain = GetObject("WinNT://"+@LDOMAIN)
$adsDomain.filter = "User",""
For Each $adsUser In $adsDomain
? $adsUser.Name
$cnusr = TranslateName($adsUser.Name)
$usrnfo = GetObject("LDAP://"+$cnusr)
For Each $usrmail in $usrnfo.proxyAddresses
? $usrmail
Next
?
Next
Function TranslateName($NameToTranslate)
Dim $NameTranslate
$NameTranslate = CreateObject("NameTranslate")
$NameTranslate.Init(3,"")
$NameTranslate.Set(3, @LDOMAIN + "\" + $NameToTranslate)
$TranslateName = $NameTranslate.Get(1)
EndFunction
|
|
Top
|
|
|
|
#179682 - 2007-08-24 04:17 PM
Re: OT - Find SMTP Mail alias
[Re: Witto]
|
Arend_
MM club member
   
Registered: 2005-01-17
Posts: 1896
Loc: Hilversum, The Netherlands
|
No Problem, I love ADSI stuff
|
|
Top
|
|
|
|
#183613 - 2007-12-13 06:30 PM
Re: OT - Find SMTP Mail alias
[Re: Arend_]
|
werealldevo
Fresh Scripter
Registered: 2007-10-03
Posts: 11
|
Hi,
I just wanted to add my version as an option.
Break On
$FQDN = 'OU=users,DC=somedomain,DC=com'
$objADsPath = GetObject('LDAP://'+$FQDN)
For Each $obj in $objADsPath
if $obj.Class = 'user'
$usrDN = $obj.distinguishedName
$usrFQDN= GetObject('LDAP://'+$usrDn)
For Each $usrProxyAddr in $usrFQDN.proxyAddresses
? $usrProxyAddr
Next
endif
Next
|
|
Top
|
|
|
|
#183619 - 2007-12-13 07:58 PM
Re: OT - Find SMTP Mail alias
[Re: Witto]
|
kholm
Korg Regular
   
Registered: 2000-06-19
Posts: 714
Loc: Randers, Denmark
|
You can allso query AD directly using ADODB
CheckMailAdr("smtp:UserMail@@Domain.com")
Function CheckMailAdr($EMail)
Dim $domCN,$Conn,$sLDAP
If Not InStr($EMail,":")
$EMail = "smtp:" + $EMail
EndIf
$domCN = GetObject("LDAP://rootDSE").Get("defaultNamingContext")
$Conn = CreateObject("ADODB.Connection")
$Conn.Provider = "ADSDSOObject"
$Conn.Open("ADs Provider")
$sLDAP = "<LDAP://" + $domCN + ">;(&(objectCategory=person)(proxyAddresses=" + $Email + "));adspath;subtree"
$RecSet = $Conn.Execute($sLDAP)
If $RecSet.RecordCount = 1
$CheckMailAdr = $RecSet.Fields(0).Value
Else
$CheckMailAdr = ""
EndIf
EndFunction -Erik
|
|
Top
|
|
|
|
Moderator: Arend_, Allen, Jochen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Mart
|
0 registered
and 837 anonymous users online.
|
|
|