Friday, July 29, 2011

تعديل خصائص صندوق بريد

احتجت لتعديل خصائص صندوق بريد على Exchange 2003 وذلك لعمل ما يشبه ابطال صندوق البريد، وللقيام بهذا باستخدام VBScript قمت بكتابة الكود التالي

هذا الكود يقوم بتعديل قيمة SubmissionContLength الى 1 أي ان الحد الاقصى للرسالة المسموح بارسالها سيكون 1 كيلوبايت
يقوم الكود أيضا بتعديل قيمة DelivContLength الى 1 أي ان الحد الاقصى للرسالة المسموح باستقبالها سيكون 1 كيلوبايت
يقوم الكود باضافة zz_ قبل عناوين SMTP الخاصة بصندوق البريد
يقوم الكود بالسماح لمستخدم بفتح وحذف صندوق البريد
يقوم الكود بقراءة ملف باسم userlist.txt الذي يحوي displayname لكل المستخدمين المراد ابطال صناديق البريد الخاصة بهم ويقوم بكتابة نتيجة العملية في ملف باسم mailboxmigration.log

on error resume next
strUserFile = "userlist.txt"
logFile = "mailboxmigration.log"
set objFSO = CreateObject("Scripting.FileSystemObject")
strData = objFSO.OpenTextFile(strUserFile, 1).ReadAll
set strLog = objFSO.OpenTextFile(logFile, 8)
arrLines = Split(strData, vbCrLf)
set rootDSE=GetObject("LDAP://RootDSE")
DomainContainer=rootDSE.Get("DefaultNamingContext")
wscript.echo "strdata" & strdata
set adocommand = CreateObject("ADODB.Command")
set conn = CreateObject("ADODB.Connection")
conn.provider = "ADSDSOObject"
conn.Open "Active Directory Provider"
set adocommand.activeconnection = conn
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
set newAce = createobject("AccesscontrolEntry")
newAce.acetype=0
newAce.trustee = "domain\user"
newAce.accessmask ="131073"
newAce.aceflags=2
For each strLine in arrLines
 strLog.WriteLine "Processing email: " & strLine
 adocommand.commandtext= ";(&(ObjectClass=user)(displayname=" & strLine & "));adspath;subtree"
set rs = adocommand.execute
set userObj = getobject(rs.fields(0).value)
userobj.getinfo
userObj.put "SubmissionContLength", 1
userObj.put "DelivContLength", 1
userObj.setinfo
userobj.getinfo
i=0
vProxyAddresses = userObj.proxyaddresses
maxProxyAddresses = ubound(vProxyAddresses) + 1
while i < maxProxyAddresses
 email = vProxyAddresses(i)
 if left(email,5) = "SMTP:" then

  vProxyAddresses(i) = "SMTP:zz_" & mid(email, 6)
 elseif left(email,5) = "smtp:" then

  vProxyAddresses(i) = "smtp:zz_" & mid(email, 6)
 else
  vProxyAddresses(i) = email
 end if
 i = i + 1
wend
strLog.WriteLine "Email addresses updated successfully"
userObj.proxyaddresses = vProxyAddresses
userObj.setinfo
wscript.echo userobj.displayname & ":" & err.description
set mbRights = userObj.mailboxrights
set dacList = mbRights.discretionaryacl
strLog.WriteLine "Existing mailbox Rights:"
strLog.WriteLine "Trustee    |   Access Mask   | obj.aceflags    |   Ace Type  | Object Type  |   Inherited Objecttype " 
strLog.WriteLine "==============================="
for each obj in dacList
 strLog.WriteLine obj.trustee & " | " &  obj.accessmask & " | " &  obj.aceflags & " | " &  obj.acetype & " | " & obj.objecttype & " | " & inheritedobjecttype & " | " 
next
strLog.WriteLine "==============================="
dacList.addace newAce
mbRights.discretionaryacl =dacList
userObj.mailboxrights=array(mbRights)
userObj.setinfo
wscript.echo userobj.displayname & ":" & err.description
set userObj = Nothing
rs.Close
Next
strLog.Close
conn.close
set objFSO = Nothing
set newAce = Nothing

No comments:

Post a Comment