Exchange 5.5 에서 Exchange 2000으로 Address Book 마이그레이션.

원문 : http://www.msexchange.org/pages/articles.asp?art=331
저자 : Amit Zinman
번역처 : 최문봉님

이전 Exchange Address Book은 그리 강력하지 못하고 복잡했지만 대부분의 작업환경에서 사용되었다. Exchange 5.5에서 간편한 점은 주소 리스트를 자동으로 만들어 주는 것이었다. 당신이 할 일은 단지 File 메뉴로 가서 New Other > Address Book View 한 후 메일박스 속성을 선택하면 거의 즉시 모든 부서 또는 당신이 선택한 정렬 방식으로 Address View를 얻게 된다.



Exchange 2000은 나의 이전 글( Exchange 2000에서 사용자와 이메일 만들기(2))에서도 언급되었던 Address Lists라는 새로운 기능을 가지고 있는데, 이는 훨씬 강력하고 “관리되지 않는 멕시코의 모든 사용자”와 같은 더 상세한 룰도 만들 수 있게한다.

새 Address List를 만들기 위해서 Recipients로 가서 아무 address list나 선택하고, 메뉴의 동작 > 새로 만들기 >Address List : 그리고 이름과 기준을 써 넣는다.



매우 강력한 LDAP query engin을 사용함에도 불구하고, 자동으로 모든 부서를 위한 Access List를 만들 수는 없다. 이는 대부분의 회사들의 부서가 매일같이 변경되는 것이 아니므로 일반적으로는 문제 될게 없지만, Exchange 5.5 마이그레이션과 회사 구조가 바뀔 때는 정말 골칫거리가 된다. 이를 좀 더 명확히 하기 위해서 당신이 많은 지점을 가지고 있는 회사에 다닌다고 하자. Exchange 5.5에서는 모든 지점의 사용자들이 Custom Attribute 1에 따라 정렬된 Address Book View를 만드는데 20초가 걸린다. 만일 새 지점이 당신이 책임이 없는 어딘가에서 만들어지면 새 Address Book View가 마법처럼 나타날 것이다. Exchange 2000 마이그레이션 과정에서는 Exchange 5.5와 매치되는 300개 이상의 Address List를 수동으로 만들어 주어야 한다. 이를 상상해 보라. 나는 이 글에서 스크립트를 이용해서 이 과정을 쉽게 할 수 있는 방법을 제시할 것이다.

이 글의 스크린샷을 만들기 위해서 테스트 랩과 몇 몇 사용자들을 만들었다. 사용자들을 위해 Custom Attribute 1에 지점명을 입력하고 , 간단한 address book view를 만들었다. 전체적으로 5분이 채 안 되어서 나의 Address book 은 다섯개의 지점에 대해서 완전히 작동되었다.



이제 이것들을 어떻게 Exchange 2000(실제적으로는 Active Directory)으로 옮기는지 보여주겠다. 수동으로 또는 스크립트를 이용해서 할 수 있다. 이 글에서는 간단히 하기 위해서 이것들을 수동으로 export 하겠다.

모든 지점의 Address Book View를 export하기 위해서 오른쪽 페인에서 전부 선택하고 메뉴에서 File > Save Window Contents 를 선택한 후 Branchs.CSV라는 이름으로 정보를 저장했다.



다음 약간수정해서 지점명만 나타나도록 한 후 Branchs.txt로 이름을 바꿨다.



이제 모든 지점명을 포함한 파일을 갖게 됬고, 스크립트 마술을 보여줄 때가 되었다. Exchange 5.5의 Address Book View와는 달리 Exchange 2000의 Address List는 모든 디렉토리 필드에서 사용할 수 있으므로 실제 작업 환경에서는 지금이 어떤 변화를 주기에 가장 적절한 시기다. 예를 들어 Custom Attribute 1대신 Office 속성을 사용하기 위해 불편한 스크립트 보다는 LDIF import/export를 사용할 수 있을 것이다. Exchagne 2000 랩부분에서는 Custom Attribute 1을 사용해도 됐었는데 마치 실제로 실행을 하기라도 한 양 Office 속성을 사용 했었다.

다음 스크립트는 프로그래밍 적으로 address list를 만들기 위해 ,MSDN에서 발견한 예제에 바탕을 두고 있다. 우선 스크립트는 조금전에 만들어진 텍스트 파일을 열고 address list를 만들기 위해 전 라인에 걸쳐서 실행된다.

Set fs = CreateObject ("Scripting.FileSystemObject")
Set userFile = fs.OpenTextFile ("c:ranches.txt")
Do Until userFile.AtEndOfStream = True
CreateAL (userFile.ReadLine)
Loop

나의 서브루틴이 무엇을 했고, 내가 그것을 어떻게 만들었는지 보자.

Sub CreateAL (strBranch)
Dim sSystemFlags
Dim strCN
Dim purportedSearch
sSystemFlags = "1610612736"

지금까지 MS 개발자들이라면 더 잘 설명했을 만한 실제문과 system flag 였다. 이제 Exchange 2000 System Manager에서 지점 Address List 를 조사해서 LDAP search를 만들었다.



Address List를 만든후에 LDAP search query string을 복사했다.



이것을 스크립트에서 branches.txt 파일에서 추출된 “fakefake”라는 임의의 지점명 대신에
purportedSearch 스트링에 붙여 넣었다.

purportedSearch = "(&(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*))) (&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact)) (objectCategory=group)(objectCategory=publicFolder) )))(objectCategory=user)(extensionAttribute4=" & strBranch & ")))"
이제 Active Directory상의 address list container 의 완전한 디렉토리 명을 찾기위해 ADSIEdit를 실행했다. ADSIEdit는 윈도우 2000 CD의 Windows 2000 support tool 을 설치하면 사용할 수 있다. 실행하려면 실행상자에서 adsiedit.msc를 쳐 넣으면 된다.

다음 “Branches” Address List Container 까지 내려가서 이것의 경로를 스크립트로 복사했다.




' Get Address list container
Set AddressListCont = _
GetObject("LDAP://myserver.mydomain.com/CN=Branches,CN=Org,CN=All Address Lists,CN=Address Lists Container,CN=Org,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=leumi")
Now the following section creates the actual Address List
' Create the New Address List
WScript.Echo "Creating " & strAL & " " & strBranch
Set NewAddressList = AddressListCont.Create("addressBookContainer", "CN=" & strBranch)
NewAddressList.DisplayName = StrBranch
'this will have to be customized based on the query filter
NewAddressList.purportedSearch = purportedSearch
NewAddressList.systemflags = sSystemFlags
' Save New AL
NewAddressList.SetInfo
WScript.Echo "Created Address List" & strBranch
End Sub

이래서 스크립트가 끝났다. 이 스크립트는 새로 추가된 지점들에 대해서 텍스트 파일을 보는대신 Active Directory를 검색하도록 수정 가능하고, Exchange 5.5에서 했듯이 자동으로 지점(Branch)들을 만들도록 수정할 수 있다. 자동으로 실행되게 하기 위해서 작업 관리자에서 몇 분마다 실행되도록 설정하라.
Posted by NTFAQ

트랙백 주소 :: http://ntfaq.co.kr/trackback/15 관련글 쓰기

댓글을 달아 주세요