[Postfixbuch-users] gültige Empfänger aus dem ADS CSVDE Problem
Andreas Winkelmann
ml at awinkelmann.de
Sa Sep 8 14:29:24 CEST 2007
On Saturday 08 September 2007 14:11, Yves Bilgeri wrote:
> > Als ich mich mal damit beschäftigt hatte, habe ich keinen sonderlich
> > einfachen Weg gefunden dieses Limit zu vergrössern, und da wir schon weit
> > mehr wie 1000 User hatten, habe ich mir VB-Scripte gebastelt um das AD zu
> > durchlaufen. Ist zwar etwas langsamer, aber dann ist es egal wieviele
> > Einträge gefunden werden sollen.
>
> Ja so ein VB-Script wäre in meinem Fall sicher auch besser geeignet, auf
> die Geschwindigkeit kommt es ja nicht so an. Leider habe ich nicht so
> viel Erfahrung mit VB-Scripts. Kannst Du das Vorgehen evtl. mal posten?
Habe gerade mal ein bestehendes von mir modifiziert. Ist aber ungetestet.
Speicher es als irgendwas.vbs und führe es erstmal aus einem cmd-Fenster
mit "cscript irgendwas.vbs" aus.
Das sucht im ganzen AD nach SMTP-Adressen und schreibt sie in die
Datei "mailrelay_recipients.txt" mit einem "OK" dahinter.
-----------------------------------------------------------------------------
Option Explicit
Dim objRootDSE, strRootDomain
Dim objADS, objMember
Dim objFSO, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRootDSE = GetObject("LDAP://rootDSE")
strRootDomain = "LDAP://" & objRootDSE.Get("rootDomainNamingContext")
Set objADS = GetObject( strRootDomain )
Set objFile = objFSO.CreateTextFile( "c:\mailrelay_recipients.txt", True)
ScanContainer objADS
objFile.Close
Sub ScanContainer( objContainer )
Dim objMember
If ( LCase( objContainer.Class ) = "user" ) Then
PrintMember objContainer
Elseif ( LCase( objContainer.Class ) = "contact" ) Then
PrintMember objContainer
Elseif ( LCase( objContainer.Class ) = "group" ) Then
PrintMember objContainer
Elseif ( LCase( objContainer.Class ) = "publicfolder" ) Then
PrintMember objContainer
End If
On Error Resume Next
For Each objMember In objContainer
If Err.Number <> 0 Then
Err.Clear
On Error goto 0
Exit Sub
Else
ScanContainer objMember
End IF
Next
End Sub
Sub PrintMember( objUser )
Dim strAlias
On Error Resume Next
If Not IsEmpty( objUser.proxyAddresses ) Then
For Each strAlias in objUser.proxyAddresses
If ( 0 = StrComp( Left( strAlias, Len("SMTP:")), "SMTP:", 1 )) Then
objFile.Write Mid( strAlias, Len( "SMTP:" ) + 1 ) & " OK" & vbCrLf
End If
End If
Next
End If
On Error goto 0
End Sub
-----------------------------------------------------------------------------
--
Andreas
Mehr Informationen über die Mailingliste Postfixbuch-users