[Postfixbuch-users] gültige Empfänger aus dem ADS CSVDE Problem

Hartmut Wöhrle hartmut.woehrle at mail.pcom.de
Sa Sep 8 16:01:21 CEST 2007


Hallo,

bei mir hat ein Perlscript bis jetzt wunderbare Arbeit verrichtet (2600 
Accounts). 

Ausgangspunkt ist dieses:
http://www-personal.umich.edu/~malth/gaptuning/postfix/getadsmtp.pl

dann anpassen und loslegen.

Gruss
Hartmut


Am Samstag, 8. September 2007 14:29 schrieb Andreas Winkelmann:
> 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

-- 
===========================================

    Hartmut Woehrle
    EMail: hartmut.woehrle at mail.pcom.de



Mehr Informationen über die Mailingliste Postfixbuch-users