사용자가 모바일 장치 또는 공유 사서함 Exchange Server 2003 및 Exchange 2000 Server에서에서 전자 메일 메시지를 보낼 수 없습니다.

기술 자료 번역 기술 자료 번역
기술 자료: 912918 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

Microsoft Exchange에서 전자 메일 메시지를 보낼 하려고 하는 경우 2000 서버 또는 Microsoft Exchange Server 2003에서 전자 메일을 보낼 수 없습니다 메시지입니다. 또한 다음 오류 메시지 중 하나가 나타날 수 있습니다 또는 다음 배달 못 함 보고서 (Ndr) 중 하나입니다.

오류 메시지

  • 액세스가 거부 되었습니다.
  • 충분 한 권한이 없습니다. 이 개체에는이 작업을 수행. 폴더 연락처 또는 시스템을 참조 하십시오. 관리자입니다.
  • 목록에 없는 메시지 오류
  • MAPI_E_NO_ACCESS -2147024891
  • 메일 메시지를 전송 하지 못했습니다. 사용자 사용자 이름 (HRESULT:-2147024891) 일시 중지 사용자 사용자 이름입니다. (보안 오류- 사용자가 사서함에 액세스할 수 없습니다.)
  • 리소스가 없습니다 찾을 수합니다
참고 "액세스가 거부 되었습니다" 오류 메시지 또는 "리소스를 받을 다음 이름으로 로그인 할 때 Outlook Web Access Microsoft에서에서 찾을 수 없습니다"오류 메시지는 계정을 위임 합니다.

Ndr

  • 이 받는 사람에이 게 보낼 수 있는 권한이 없습니다. 에 대 한 에 도움이 필요 하면 시스템 관리자에 게 문의 하십시오.
  • 사서함을 사용 하 여 메시지를 보낼 수 없습니다. 이렇게 지정한 사용자 대신 메시지를 보낼 권한이 없습니다.

영향을 받는 제품

이 문제는 다음 타사에 영향을 미치는 알려져 제품:
  • 연구 모션 (테두리) BlackBerry Enterprise Server (BES)
  • 좋은 기술 GoodLink 무선 메시징
이 문제는 사용자 지정 MAPI 또는 공동 작업 데이터 영향을 미칠 수 있습니다. 개체 (CDO)-전자 메일 메시지를 보내는 프로그램을 기반으로 합니다.

기타 서비스 계정을 사용 하 여 전자 메일 메시지를 보내려면 타사 제품도 있습니다. 영향을 받을 수 있습니다. 이것에 의해 영향을 받는 타사 제품을 실행 하는 경우 이 문제를 이렇게 해결 도움말에 대 한 공급 업체 문의 좋습니다. 문제입니다.

그러나 확인 된는 다음 타사 제품에이 문제의 영향을 받지 않습니다.
  • Cisco Unity 통합 메시징
  • Exchange에 대 한 퀘스트 마이그레이션 제품군
  • Exchange 용 Microsoft ExMerge 유틸리티

원인

다음 조건 중 하나가 있는 경우이 문제가 발생할 수 있습니다. true:
  • 전자 메일 메시지로 보낼 수 있는 권한이 있는 전자 메일을 보내려면 사용 중인 계정에 사서함 소유자 메시지입니다.
  • Microsoft Exchange 2000 Server 서비스 팩을 실행 하는 Store.exe 파일 버전 또는 이후 버전 같습니다 함께 3 (SP3) 6619.4. 6619.4 버전 먼저 다음 Microsoft에서 사용할 수 기술 자료:
    915358 핫픽스를 Exchange 2000 Server에서 전체 사서함 액세스 권한의 동작을 변경할 수 있습니다.
  • Microsoft Exchange Server 2003 SP1 이후 버전 보다 크거나 같습니다 Store.exe 파일 버전을 함께 실행 하는 7233.51입니다.
  • Exchange Server 2003 s p 2는 store.exe와 함께 실행 됩니다. 파일 버전 또는 7650.23 버전 보다 이후입니다. 7650.23 버전 먼저 다음 Microsoft 기술 자료에서 사용할 수 있었던 문서를 참조 하십시오.
    895949 Exchange 2003 "다음으로 보내기" 권한 동작 변경
    이 변경 Exchange Server 2003 s p 2에 포함 됩니다. Exchange Server 2003 SP1 버전의이 변경 내용이 포함 된 Store.exe 파일 실행 및 Exchange Server 2003 s p 2로 업그레이드 하는 경우 SP2 버전의 새 동작을 유지 하려면이 핫픽스를 설치 해야 합니다. 이 변경 Microsoft Exchange Server 2003 s p 3에 포함 됩니다.

보안 문제

앞에 나와 있는 Store.exe 파일 버전은 "원인 섹션에서 암시적으로 부여 되는 전체 사서함 액세스 권한을 부여 합니다." 사서함 소유자 이름으로 보내기 권한입니다. 이 다른 계정으로 인해 전체 사서함 액세스 권한에 나타나는 전자 메일 메시지를 보낼 수 있습니다. 사서함 소유자가 보낸 것 처럼.

많은 Microsoft Exchange 고객의 이름으로 보내기 권한을 분리 해 줄 것을 요청 했습니다. 다음과 같은 두 가지 이유로 사서함 액세스 권한:
  • 전자 메일 스푸핑을 방지 하기 위해
  • 전자 있는지 확인 하는 메일에서 보내는 메시지는 대리자는 항상 보낸 전자 메일 메시지에서 명확 하 게 구분 될 수 있습니다. 실제 사서함 소유자가 됩니다.
이제 모든 새 버전의 Exchange 저장소가 됩니다. 전자 메일 메시지로 보내려면 Send As 권한이 명시적으로 필요 사서함 소유자입니다. 그러나 다음 세 가지 예외를 나열 요구 사항:
  • 명시적으로 보내기 사서함 소유자 계정이 필요 하지 않습니다. 자신의 사서함에 대 한 사용 권한입니다.
  • 연결 된 외부 계정에 사서함에 대 한 되지 않습니다. 명시적으로 보내기 권한이 필요 합니다.
  • 또한 전체 사서함 액세스 있는 대리인 계정 사용 권한을 명시적으로 보내기 권한이 필요 하지 않습니다.
이러한 예외에 대 한 자세한 내용은 "자세히 정보"섹션입니다.

해결 방법

모든 계정의 사서함을 제외한의 "원인" 절에서 언급 한 부분 또는 전체 액세스 권한이 부여 됩니다 이제 명시적으로 사서함 소유자 계정에 대해 Send As 권한이 사서함 소유자로 메일을 보낼 수 부여 받아야 합니다. 여기에 모바일 장치 사용자의 전자 메일 메시지를 보내는 것과 같은 기능을 수행 하는 응용 프로그램 서비스 계정이 포함 됩니다.

데이터베이스에 저장 된 사서함 내용 없는 Active Directory 사용자 개체의 id 이름으로 보내기 권한이 적용 됩니다. 따라서, 사람 이름으로 보내기 권한은 사서함이 있는 각 사용자 개체의 서비스 계정에 부여 되어야 합니다. 전자 메일 메시지를 보낼 때가 아니라 사용자가 특정 사서함 이나 데이터베이스에서 보내지지 않습니다. 사용자는 사서함 소유자 또는 다른 사람 이름으로 보내기 권한이 있는 계정을 수 있습니다.

사람 이름으로 보내기 권한에서 Exchange Server 실행 하는 서버 또는 데이터베이스 개체에 권한을 부여 하 고 모든 사서함 데이터베이스에서에 대 한 사람 이름으로 보내기 권한을 부여 하는 효과 얻을 수 없습니다. Exchange 데이터베이스 개체 이름으로 보내기 권한을 부여 하면 데이터베이스 자체에 대 한 사용 권한 수 있습니다. 모든 사서함 데이터베이스의 권한이 상속 됩니다. 그러나 데이터베이스에 사서함을가지고 하 고 사람 이름으로 보내기 권한이 사용자에 게 권한이 부여 하지 않습니다.

참고 Exchange 데이터베이스에 다음으로 받기 권한을 부여 되는 전체 사서함 액세스 권한을 모두 부여와 동등한 기능 사서함 데이터베이스에서입니다. 이것은 보내기 동작에서 다릅니다. 권한.

하나의 계정에 대 한 사람 이름으로 보내기 권한을 부여 하는 방법

사서함으로 보낼 수 있는 다른 계정 권한을 명시적으로 부여. 소유자를 다음이 단계를 수행 하십시오.
  1. Active Directory 사용자 및 컴퓨터 관리를 시작 합니다. 콘솔입니다.
  2. 보기 메뉴에서 확인을고급 기능 옵션을 선택 합니다. 이 옵션이 없는 경우 선택한 보안 페이지에 대 한 사용자 계정이 표시 되지 않습니다. 개체입니다.
  3. 소유 하는 사용자 계정의 속성을 열고 있는 사서함입니다.
  4. 클릭 하 여 보안 탭입니다.
  5. 계정 그룹 또는 사용자 목록에 없는 경우 이름, 사람 이름으로 보내기 권한이 있어야 합니다 계정 추가 사용자입니다.
  6. 사용 권한 상자에서 클릭 하 여 "보내기"를 허용 합니다. 해당 계정에 대 한 사용 권한입니다.
  7. 클릭 확인.
  8. Microsoft Exchange 정보 저장소 서비스를 다시 시작. 영향을 받는 Exchange 서버입니다.
참고 Microsoft Exchange 정보 저장소를 다시 시작 하는 경우 서비스에서 Microsoft Exchange 정보 저장소 서비스 업데이트를 권한을 캐시 하는 새 사용 권한에 따라 적용은 다음 레지스트리 하위 키에 설정 된 값:
찾습니다

값 이름: 사서함 캐시 보존 기간
값 종류: REG_DWORD
기 수: 10 진수
값 데이터: 사서함 정보 캐시 보존 기간 (분).
이 레지스트리 항목의 기본값은 120 분 (2입니다. 시간)입니다. 이 레지스트리 항목을 수정 하는 경우에 Microsoft를 다시 시작 해야 Exchange 정보 저장소 서비스입니다.

참고 시간 제한 값을 매우 낮은 값으로 설정 하는 경우 사용 될 수 있습니다. 서버의 성능을 영향을 줍니다.

여러 계정에 대 한 사람 이름으로 보내기 권한을 부여 하는 방법

Active Directory 서비스 도메인의 사서함에 대 한 사람 이름으로 보내기 권한 없이 전체 사서함 액세스 권한을 가진 계정에 대 한 검색 하기 위해이 문서의 끝에 샘플 스크립트를 제공 합니다. 이러한이 보안 변경 사항의 영향을 받을 수 있는 서비스나 리소스 계정의 특성입니다. 스크립트를 검토, 편집 및이 권한이 필요한 계정 이름으로 보내기 권한을 부여 하려면 다음 다시 가져와서는 내보내기 파일을 생성할 수 있습니다.

모든 사용자 개체를 Active Directory 도메인 또는 컨테이너에서 상속을 통해 이름으로 보내기 권한을 부여할 수도 있습니다. 이 메서드에 의해 사람 이름으로 보내기 권한을 부여 하면 원치 않는 개체에 대 한 사용 권한을 부여할 수 있습니다. 또한 컨테이너에서 옮겨진 개체의 사용 권한 손실 될 수 있습니다. 따라서이 메서드는 사용 하지 않는 하 고이 구현 하기 전에 신중 하 게 고려해 야 하는 보안 영향을 줄 수 있습니다.

이 메서드를 사용 하 여 다른 사람 이름으로 보내기 권한을 부여 하는 경우 계정 이름으로 보내기 권한을 상속 했습니다 문서 끝에 참조 되는 스크립트에 보이지 않는 됩니다. 나중에이 스크립트를 사용 하 여 이러한 계정을 처리 하려면 상속 된 다른 사람 이름으로 보내기 권한을 먼저 제거 해야 합니다.

상속을 사용 하 여 하나의 계정에는 Active Directory 도메인 이나 컨테이너에 있는 모든 사용자 계정에 대 한 이름으로 보내기 권한을 부여 하려면 다음과이 같이 하십시오.
  1. Active Directory 사용자 및 컴퓨터 관리를 시작 합니다. 콘솔입니다.
  2. 보기 메뉴에서 확인을고급 기능 옵션을 선택 합니다. 이 옵션이 없는 경우 선택한 보안 페이지 도메인 및 컨테이너에 대해 표시 되지 않습니다. 개체입니다.
  3. 도메인 또는 컨테이너의 등록 정보를 엽니다 다음 보안 페이지를 클릭 합니다.
  4. 클릭 고급.
  5. 권한이 필요한 계정이 이미 없는 경우 클릭 추가다음 계정을 선택 합니다. 그렇지 않으면 두 번 클릭 편집 하는 계정입니다.
  6. 에 적용 됩니다. 목록에서 클릭사용자 개체.
  7. 계정 이름으로 보내기 권한을 부여 합니다.
  8. 클릭 확인 종료 하 고 저장 될 때까지 모든 변경 내용

Adminsdholder로 보호 계정에 대 한 특별 한 규칙

도 도메인 관리자 인 사서함 소유자에 대 한 사람 이름으로 보내기 권한을 부여 하는 스크립트를 사용 하는 경우 이름으로 보내기 권한이 적용 되지 않습니다. 사용자 사서함에서 도메인 관리자 권한이 있거나 adminsdholder로 보호 되는 사용자 계정을 설정 하지 않는 좋습니다.

AdminSDHolder 개체는 광범위 한 Active Directory 관리 권한이 있는 계정에 대 한 템플릿입니다. 의도 하지 않은 권한 승격을 방지 하려면 adminSDHolder 개체로 보호 되는 모든 계정의 adminSDHolder 개체 자체에 나열 된 것과 일치 하는 권한이 있어야 합니다.

권한이 나 보호 된 계정의 adminSDHolder 개체에서 사용 권한을 변경 하면 백그라운드 작업이 몇 분 이내에 변경을 취소 됩니다. 예를 들어, 응용 프로그램 서비스 계정에 도메인 관리자 개체에 이름으로 보내기 권한을 부여 하면 백그라운드 작업이 사용 권한을 자동으로 취소 합니다.

따라서 adminSDHolder 개체로 보호 되는 계정의 adminSDHolder 개체 자체를 변경 하지 않는 한 응용 프로그램 서비스 계정 이름으로 보내기 권한을 부여할. AdminSDHolder 개체를 변경 하는 경우 보호 된 모든 계정에 대 한 액세스 권한을 변경 됩니다. 만 변경 후 발생할 수 있는 보안 문제를 검토할 adminSDHolder 개체를 변경 해야 합니다.

계정에 사서함을 연결 하는 보호 되는 adminSDHolder 개체에 의해 다음과 같이:
  1. Active Directory 사용자 및 컴퓨터 관리를 시작 합니다. 콘솔입니다.
  2. 보기 메뉴에서 확인을고급 기능 옵션을 선택 합니다. 이 옵션이 없는 경우 선택한 보안 페이지를 사용자 계정 개체에 대 한 표시 되지 않습니다.
  3. 일반 사용자 계정으로 사서함 역할을 작성 합니다. 소유자입니다.
  4. 일반 사용자 계정에는 Exchange 사서함 할당 서버입니다.
  5. 새 사서함 소유자 계정의 등록 정보를 엽니다.
  6. 고급 교환 상자에서 허가 전체 사서함 액세스 권한이 보호 된 관리자 계정입니다.
  7. 보안 페이지에서 해당 사람 이름으로 보내기 권한을 부여는 보호 된 관리자 계정입니다.
  8. 클릭 확인 등록 정보를 종료 하는 사서함 소유자 개체입니다.
  9. 사서함 소유자 계정 개체를 마우스 오른쪽 단추로 클릭 한 다음 클릭 계정 사용 안 함 모든 로그온 계정을 사용 하지 않도록 설정.
Adminsdholder로 보호 되는 방법에 대 한 자세한 내용은 계정, Microsoft 기술 자료의 다음 문서 번호를 클릭 하십시오.
907434"Active Directory 사용자 및 컴퓨터에서" 다른 사람 이름으로 보내기 "권한을 구성 하면 사용자 개체에서 오른쪽 제거으로 보내기" 스냅인에서 Exchange Server
318180 AdminSDHolder 스레드가 메일 그룹의 전이 구성원을 영향을 줍니다.
817433 위임 된 사용 권한을 사용할 수 없는 및 상속이 자동으로 해제 된다
306398 AdminSDHolder 개체가 이전 관리자 계정의 제어 위임을 영향을 줍니다.

BlackBerry Enterprise Server를 위한 특별 한 작업

작업 1: BlackBerry 엔터프라이즈 서버는 별도 고유 계정으로 실행 되 고 있는지 확인

BlackBerry Enterprise Server로 실행 되 고 있는지 확인은 관리 작업에 대 한 구체적으로 만든 계정을 구분 합니다. 여 기본적으로이 계정은 "BESAdmin." 라고

별도 경우 BlackBerry Enterprise Server 관리 계정, 2 작업으로 이동 합니다.

별도 계정을 하지 않은 경우, 별도 계정을 만듭니다. 그런 다음 관리 작업을 수행 합니다.이 계정을 사용 합니다. BlackBerry Enterprise Server 4.0 또는 BlackBerry Enterprise Server 4.1을 실행 하는 경우 이렇게 하는 방법에 대 한 지침은 BlackBerry 엔터프라이즈 서버 설치 가이드를 참조 하십시오. ?BlackBerry Enterprise Server 3.6 실행 중인이 경우가 작업을 수행 하는 방법에 대 한 지침, BlackBerry Enterprise Server 2000/2003 설치 및 시작 하기 안내서를 참조 하십시오.

작업 2: BlackBerry Enterprise Server 서비스 계정에 적절 한 사용 권한이 있는지 확인 하십시오

BlackBerry Enterprise Server 서비스 계정에 있는지 확인 합니다. 적절 한 사용 권한이 있습니다.

참고 도메인의 계정인 경우 계정이 있는지 확인 Domain Users 그룹의 구성원입니다. 도메인 컨트롤러에서 계정 기본 제공 Administrators 그룹의 구성원 이어야 합니다.
  1. BlackBerry 기업 서버에서 다음과 같이 하십시오.
    1. 구성원의 로컬 계정이 있는지 확인 Administrators 그룹입니다.
    2. 할당 "로컬로 로그온" 및 "로그온 서비스" 계정 사용 권한입니다.
  2. 부여 Exchange 보기 권한만 있는 관리자 사용 권한이 있는 관리 그룹 수준입니다. 이렇게 하려면 다음과이 같이 하십시오.
    1. Exchange System Manager, 마우스 오른쪽 첫 번째 관리 그룹 이름, Exchange Server 및 다음을 누릅니다. 대리자 컨트롤.
    2. 알 BlackBerry 기업 서버 서비스 계정이 Exchange 보기 권한만 있는 관리자 역할을 가진 것으로 나열 됩니다.
  3. "다른 이름으로 보내기" 허용 "다음으로 받기" 및 "정보를 관리 합니다. "각 Exchange 서버에 대 한 서버 수준의 사용 권한을 저장 합니다. 작업을 수행 하 따라서 이러한 단계를 수행 하십시오.
    1. Exchange System Manager, 마우스 오른쪽 첫 번째 Exchange Server 관리 그룹 이름을 확장 한 다음 확장의 서버 그룹입니다.
    2. Exchange 서버를 마우스 오른쪽 단추로 클릭 속성를 클릭 하 고 다음을 누릅니다. 보안.
    3. 위쪽 창에서 BlackBerry 엔터프라이즈를 선택 합니다. 서버 서비스 계정입니다. 있는지 확인 아래쪽 창에 있는 "Send As" "Receive As," 및 "정보 저장소 관리" 권한을 설정 허용.
    4. 각 Exchange에 대 한 단계 3b 및 3c 단계를 반복합니다 서버입니다.
  4. "다른 이름으로 보내기" 허용 "다음으로 받기" 및 "정보를 관리 합니다. "사서함 저장소에 대 한 사용 권한을 저장 합니다. 이렇게 하려면 다음과이 같이 하십시오.
    1. Exchange System Manager, 마우스 오른쪽 첫 번째 Exchange 관리 그룹 이름을 확장 한 다음 확장의 서버 그룹입니다.
    2. 첫 번째 사서함 저장소 그룹을 확장 하 고 각 항목을 마우스 오른쪽 단추로 클릭 사서함 저장소를 누릅니다 속성를 클릭 하 고 다음을 누릅니다. 보안.
    3. 위쪽 창에서 BlackBerry 엔터프라이즈를 선택 합니다. 서버 서비스 계정입니다. 있는지 확인 아래쪽 창에 있는 "Send As" "Receive As," 및 "정보 저장소 관리" 권한을 설정 허용.
    4. 각 각 사서함 저장소에 대해 4b 단계-4 c 반복 Exchange 서버입니다.
  5. Active Directory 사용자 및 컴퓨터 스냅인에서 수행 합니다. 다음 단계:
    1. 추가 하려는 사용자를 마우스 오른쪽 단추로 클릭 사용 권한을 클릭 하 고 속성.
    2. 보안 탭에서 추가 BlackBerry Enterprise Server 서비스 계정 및 다음을 누릅니다에 사람 이름으로 보내기 확인란입니다.
Exchange Server 2003을 실행 하지 않는 경우 작업 3을 참조 하십시오.

작업 3: BlackBerry Enterprise Server에서 캐시 지우기

Exchange 저장소에서 권한 캐시를 지우려면 다시 시작 Blackberry 관련 서비스를 하 고 다시 시작 Microsoft Exchange 정보 저장소입니다. 후 Exchange 저장소를 다시 시작 하 고 "BESAdmin" 계정을 새로 추가한 Send As 권한을 부여할 테두리 Blackberry 관련 서비스를 다시 시작 해야 Exchange 저장소에 대 한 권한입니다.

추가 정보

Exchange 사서함 및 폴더 액세스 권한 분할 됩니다. Active Directory 및 Microsoft Exchange 데이터베이스 간에. 그러나 두 종류 Active Directory 사용자 관리 콘솔에 권한을 설정 하지만 서로 다른 사용 권한은 별개의 두 위치에 저장 됩니다.

일반적으로, 사용 권한 개체의 보안 페이지에 설정 되어 있으면이 활성 상태입니다. 디렉터리 사용 권한입니다. Exchange 고급 정보의 사서함 권한을에 설정 되어 있으면 페이지에 대해 Exchange 데이터베이스 권한이 있는 것입니다.

MsExchMailboxSecurityDescriptor 특성 Active Directory 백업 복사본의 효과적인 사서함 권한의 하위 집합입니다. 이 내부적으로 Exchange에는 다양 한 용도로 사용 됩니다. 또한 msExchMailboxSecurityDescriptor 특성 현재 유효 권한 경우에 업데이트 관리자 지원 되는 인터페이스를 사용 하 여 권한을 할당 합니다. 그러나 하는 경우 직접 관리자가 변경 내용을 msExchMailboxSecurityDescriptor 특성 수정 되지 것입니다 Exchange 저장소에 전파 하 고 변경 내용을 수행 되지 않을 효과입니다. 실제 사서함 권한과 함께 동기화 할 아닙니다. 사용자 읽기 또는 쓰기 권한을 사서함 msExchMailboxSecurityDescriptor 특성을 사용할 수 없습니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서 번호를 클릭 하십시오.
310866정보 저장소에 있는 사서함에 Exchange Server 2003 및 Exchange 2000 Server 사서함 권한을 설정 하는 방법

전체 사서함 액세스 권한이 있는 Exchange 데이터베이스 저장소 권한입니다. 사람 이름으로 보내기 권한이 있는 활성 상태입니다. 디렉터리 사용 권한입니다. 있는 Exchange Store.exe 파일 변경 전 이 문서에서 설명한 Exchange 시스템에 대 한 설정을 확인 하지 않았습니다. 보낸 사람에 게 전체 사서함 액세스 있었다면 사람 이름으로 보내기 권한 사용 권한입니다.

으로 사람 이름으로 보내기 권한 포함 시키면 해당 전체 사서함 액세스 권한은 Exchange 서버 관리자가 설정한 자체 서버에서 모든 사서함에 대 한 효과적인 사람 이름으로 보내기 권한을 부여 하 자신이 관리 합니다. 여 전체 사서함 액세스 권한에서 Send As 권한 분리, 때문에이 프로세스를 active Directory 관리자 차단 수 있습니다 이제 사람 이름으로 보내기 Active Directory 권한과 Exchange 저장소 권한이입니다. 사용 권한입니다. 따라서 프로세스 않습니다 반드시에 의해 제어 됩니다. Exchange 관리자입니다.

사서함 소유자

사서함 소유자는 Active Directory 사용자 계정으로 정의 됩니다. 전역 고유 식별자 (GUID)는 msExchMailboxGUID 특성을 전달합니다. 특정 사서함에 대 한. 전체 포리스트에서 한 계정만 허용 특정 사서함에 대 한 GUID를 수행 합니다. 두 번째 소유자를 설정 하려고 한 경우 동일한 GUID, Active Directory를 오류가 변경을 거부 합니다.

때 사용자 사서함 계정 또는 연결이 끊긴 연결 가능 사서함을 Active Directory 계정에 사서함 GUID를 자동으로 설정 됩니다. 해당 계정에. 거의 관리자가 필요 하거나 권장 하는 것 사서함 Guid를 직접 설정 합니다.

연결 된 외부 계정

일반적인 Exchange 구성에서 Exchange를 설치 하는 것은 리소스 포리스트 사용입니다. 리소스 포리스트에 다른 포리스트의 포리스트가입니다. 사용자 계정에서 해당 시스템에 사서함을 해야 합니다. 이 msExchMailboxGUID 특성에서와 동일한 포리스트에 있는 개체에에서만 설정할 수 있으므로 문제는 Exchange 서버입니다.

이 문제를 해결 하려면 사서함 사용 하는 것은 Exchange 서버 포리스트의 계정입니다. 사서함 사용이 가능한이 다음 링크 하나 다른 포리스트 또는 Microsoft Windows NT 4 도메인 계정입니다. 할 수 있습니다. 이렇게 연결 된 외부 계정 권한을 부여 합니다. 하나만 계정에 연결 된 외부 계정 권한을 부여할 수 있습니다. 계정 즉 선택한 다른 포리스트에 있어야 합니다.

연결을 설정 하는 경우 외부 계정 권한을 외부에 대 한 SID 값을 작성 하 사서함 소유자의 나타날 수 계정. 따라서,이 권한이 전혀 나타날 값을 제어 하는 편리한 방법을. 나타날 설정한 후 외부 계정에는 SID 소유 실제 사서함 소유자 처럼 Exchange 액세스 부여 됩니다. 계정입니다.

참고 이렇게 하려면 모든 Exchange 액세스에만 적용 됩니다. Active Directory 액세스 합니다. 또한 사서함 소유자를 표시 합니다. 연결 된 외부 계정 설정 후 로그온 계정을 사용 안함으로 모든 권한으로 작업할 수 있도록 권한이 필요 합니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서 번호를 클릭 하십시오.
300456클라이언트 권한 및 Exchange 2000에서 할당 한 후 유지 되지 않습니다.

대리인 시나리오

대리자 부분 액세스 권한이 부여 된 사용자입니다. 다른 사서함 및 해당 사서함을 대신해 전자 메일 메시지를 보낼 수 있는 권한 소유자입니다. 일반적인 대리인 시나리오로 대리인 액세스 권한을 부여 하는 것은 비서에 게 임원의 일정입니다. 대리자를 수 있습니다. 일반적으로 읽기 및 일정을 업데이트 합니다. 또한 대리자 회신할 수 있습니다. 임원 대신 전자 메일 메시지입니다.

대신 보내기 권한을 부여 하 고 사용 권한을 위임 하려면 다음 두 가지 인터페이스를 사용할 수 있습니다.
  • 사서함 소유자 개체의 Exchange 일반에서 권한 대신 보내기 대화 상자를 부여 합니다.
  • Microsoft Office Outlook 사용 하 여 대리자 대화 상자입니다.
두이 방법 모두 사서함의 publicDelegates 특성을 설정합니다. 이 특성에 나열 된 모든 사용자는 사서함 소유자에 대 한 사용 권한 대신 보내기가 있습니다. 해당 대리인이 소유자의 이름이 전자 메일 메시지를 보낼 때의 에서 상자, 대리자 및 없습니다 또는 해당 사서함 소유자로 전자 메일 메시지가 보내집니다. 전자 메일 메시지 에서 상자에 다음 값을 표시합니다.
대리자의 이름입니다.> 대신사서함 소유자>
에서 일부 경우에 Outlook에서 publicDelegates 특성을 설정 하려면 못할. 자세한 내용은 Microsoft 기술 자료의 다음 문서 번호를 클릭 하십시오.
329622Outlook에서 액세스 위임한 후 사용자에 게 "대신 보내기" 권한이 할당 되지 않은

사서함에 대리인 액세스 권한을 부여 하면 사서함 폴더 중 하나에 액세스를 부여 하지 않는 경우에 대리인 권한 대신 보내기를 사용할 수 있습니다. 대리인에 게 주어진 기본 권한이 권한 대신 보내기입니다. 사서함 폴더를 액세스할 수 있는 사용 권한을 별개 이며 이외에 위임 권한을 부여 해야 합니다. 일반적으로 대리자를 이러한 권한을 부여한 개별 폴더에 액세스 하려면 Outlook을 사용 합니다. 이렇게 하려면 클릭 합니다. 열기파일 Outlook을 클릭 한 다음 메뉴 다른 사용자의 폴더.

또는, 대리자 열 수 사용자 사서함을 추가 사서함으로 나열 하 여의 고급 Outlook 프로필의 탭입니다. 이 메서드를 발생합니다. 대리인의 Outlook 폴더 트리에 표시 하려면 사서함입니다. 또한, 이 메서드가 사서함의 모든 폴더에 액세스를 허용에 대리인 사용 권한이 부여 되었습니다.

대리인으로 할 수 있습니다. 때로는 보내기 권한이 있고 다른 시간에는 사람 이름으로 보내기 권한입니다. 이러한 두 권한을 갖도록 대리인을 구성 하십시오 다음 단계:
  • 대리자에 전체 사서함 액세스 권한을 부여 합니다. 이 Outlook은 통해 수행할 수 없습니다. 대신 Active Directory 관리자가 해야 사서함 소유자 계정에이 작업을 수행 합니다. 에 소유자 권한을 부여 하는 경우에 전체 권한은 없는 사서함에서 모든 폴더 사서함 액세스 권한입니다.
  • 대리자 이름으로 보내기 권한을 부여 하지 마십시오. 경우를 대리자는 사람 이름으로 보내기 권한으로 보내지는 모든 전자 메일 메시지를 부여 대리자 이름으로 보내기 권한으로 수행 됩니다. 해당 대리인은 없습니다. 이상 보내기 권한 대신 사용할 수 있습니다.
이 시나리오에서는 대리자 사용 권한 대신 보내기 사용 하려는 자신의 사서함에 로그온 해야 합니다. 대리인의 경우 회신 또는 전달 중 하나에 표시 되어 있는 전자 메일 메시지를 폴더, 전자 메일 메시지는 자동으로 사용자를 대신 전송 됩니다. 경우는 대리자 사용자 대신 새 전자 메일 메시지를 만들, 이러한 사용자의 이름을 입력 합니다. 에 에서 상자에서 보낼 전자 메일 메시지를 대신 합니다.

대리인이 폴더를 열었는지 여부에 관계 없이 전체 사서함을 보조 사서함에 모든 전자 메일 메시지 또는 사용자의 보내기 권한으로 자신의 긴 대신 보내기 사용 합니다. 사서함이 현재 Outlook 프로필의 주 사서함이입니다.

때 대리인으로 전자 메일 메시지를 보내려면, 로그온 해야 하는 사용자 사서함만 여는 별도 Outlook 프로필을 사용 하 여 사서함입니다. 전자 메일 이 프로필에 로그온 되어 있는 동안 대리인이 보내는 메시지 수 있습니다. 자동으로 보낼 수 있습니다.

사람 이름으로 보내기 권한 없이 전체 사서함 액세스 권한을 갖는 계정 찾기

이 절에 설명 되어 있는 예제 스크립트 하나를 검색할 수 있습니다. 활성 디렉터리 도메인 사용자 계정에 대해 한 번에는 전체 사서함 사람 이름으로 보내기 권한 없이 사서함 액세스 권한이 부여 되었습니다.

중요 한 권한을 변경 하기 전에 "사서함 소유자와 대리인 정보" 섹션입니다.

스크립트는 다음 세 가지 모드가 있습니다.
  • 내보내기 전체 사서함 액세스 권한을 가진 사용자의 목록을 출력할 수 있습니다. 권한은 있지만 다른 사람 이름으로 보내기 권한이 있습니다. 그런 다음이 목록에서를 검토할 수 있습니다. 메모장 이나 다른 편집기를가 하려는 모든 계정을 제거 하려면 사람 이름으로 보내기 권한입니다.
  • 가져오기 전체 사서함 액세스 권한을 가진 사용자 목록을 가져올 수 있습니다. 사람 이름으로 보내기 권한이 부여 되어야 하는 사용 권한입니다. 참고 해당 사용자 이 스크립트를 사용 하 여 전체 사서함 액세스 권한을 부여할 수 없습니다, 사람 이름으로 보내기 권한입니다. 각 계정에 이미 전체 사서함 액세스 있어야 합니다. 사람 이름으로 보내기 권한을 부여할 사용 권한입니다.
  • SetAll 도메인의 모든 사용자 이름으로 보내기 권한을 부여합니다 사용자는 특정 사서함에 대해 전체 사서함 액세스 권한이 이미 있습니다. A 로그 파일은 내보내기 파일과 같은 형식에서으로 생성 됩니다. 이것입니다. 해당 편집 없이 내보내기 및 가져오기 모드를 실행 하는 파일을 내보냅니다.
참고 이 스크립트에는 실행 취소 함수가 없습니다.

스크립트에 필요한 권한

로그온 할 때 사용 하는 동안 스크립트를 실행에 관리 계정에서 동일 포리스트는 사서함 소유자 계정입니다. 스크립트는이 계정으로 되지 않을 수 있습니다. 포리스트 간 관리 권한이 있습니다. 스크립트 또한 시기 되지 않을 경우 보다 포리스트에서 다른 포리스트에 가입 되어 있는 워크스테이션에서 실행 하 여 사서함 소유자 계정과 결합 됩니다.

이러한 제공 조건에서 실행할 수 있습니다 스크립트에서 여러 관리 계정으로는 RunAs.exe 명령을 사용 하 여 단일 로그온 세션입니다. 이 절차는 수 있습니다. Active Directory 및 Exchange Server 권한을 분할 해야 하는 경우 유용 하 게 또는 모든 Exchange 서버를 관리할 수 없는 단일 계정이 있어야 하 고 Active Directory 도메인입니다. 스크립트를 실행 하려면 명령 프롬프트를 열 수 있습니다. 각 관리 계정입니다. 다음 예제를 고려 하십시오.
RunAs.exe /user:domain\account 명령줄EXE
참고 동시에 여러 스크립트 복사본을 실행 하면 안 동일한 도메인에 대해.

내보내기 파일의 필드 이름으로 되어 다음과 같습니다. 필드는 대로에서 순서 대로 설명 되어 있는 파일을 내보냅니다.
  • 사서함 소유자 계정의 이름 표시

    두 개 이상의 줄에 출력 파일이 며 수 동일한 사서함 소유자를 나열합니다. 이 문제가 발생 하면 다른 계정을 여러 개 동일한 사서함에 전체 사서함 액세스 권한이 있습니다.
  • 전체 사서함 액세스 권한은 있지만 다른 사람 이름으로 보내기 권한이 있는 계정의 도메인 및 로그온 이름

    동일한 계정이 여러 번 전반에 나타날 수 있습니다. 계정이 여러 사서함에 액세스할 때 내보내기 파일입니다. 이것입니다. 응용 프로그램 서비스 계정에 대 한 또는 개인에 대해 그럴 가능성이 있는 사람 여러 개의 리소스 사서함을 관리합니다.
  • 전체 사서함 액세스 권한은 있지만 다른 사람 이름으로 보내기 권한이 있는 계정의 이름을 표시 합니다.

    이 필드에 제공 되는 로그온 이름쉽게 계정을 식별 하는 필드입니다.
  • 사서함 소유자의 대리인 상태

    사서함 소유자의 대리인 있으면 필드 값이입니다.대리자. 사서함 소유자의 대리인 없음 있으면 필드 값이입니다. 아니요 대리자.
  • 사서함 소유자 계정의 활성화 또는 비활성화 상태

    리소스를 식별 하는 경우이 필드에 유용 계정 또는 포리스트 간 사서함 계정을 합니다. 일반적으로 이러한 계정입니다. 사용 안 함
  • 사서함 소유자 계정의 전체 고유 이름

    이 필드를 식별 하려고 할 때 유용의 도메인 및 사서함 소유자 계정의 컨테이너입니다.
  • 사서함 소유자의 사서함 데이터베이스 전체 고유 이름

    이 필드가 데이터베이스, 저장소 그룹에는 서버 및 사서함에 대 한 관리 그룹.
다음 예제는 사용자 로그온 이름 "NoSendAs" 전체 사서함 액세스 권한이 아니라는 보내기 했습니다. "사서함 소유자" 사서함 사용 권한:
"" "사서함 소유자" "" "" "Domain\NoSendAs" "" "" "No 보낼 As User" "" "" "가 대리자" "" "" "[추가 필드가 생략] 사용" ""

스크립트용 관리 워크스테이션 구성

이 스크립트는 Exchange 관리 인터페이스를 사용 하 여 통신을 Exchange 서버와 함께 사용 합니다. 따라서이 스크립트는 Exchange에서 실행 되어야 합니다. 서버 또는 워크스테이션에 설치 되어 있는 Exchange 시스템 관리자에서.

내보내기 파일 편집

내보내기 파일 유니코드 일반 텍스트 이므로 형식이 여러 언어의 문자 집합을 수용할 수 있습니다. 일부 텍스트 편집기 제대로 보거나 파일을 편집 하려면 못할 수 있습니다 또는 파일을 ANSI로 저장 될 수 있습니다 또는 ASCII 텍스트입니다. Windows Server 2003, Windows XP 및 Microsoft에 대 한 메모장 유틸리티 Windows 2000은 유니코드 텍스트 올바르게 처리할 수 있습니다. 파일입니다. 또한 유니코드 텍스트 Excel Microsoft Office 올바르게 처리할 수 있습니다. 파일입니다.

출력 파일을 탭 구분 형식으로 세 번입니다. 각 필드에 대해 값 주위에 따옴표입니다. 세 개의 따옴표 가져오기 및 내보내기 Excel 보다 명확히 구분 하는 데 사용 됩니다. 에서 Excel에서 세 개의 따옴표는 단일 인용 될 및 됩니다. 파일을 유니코드 텍스트로 다시 저장 하면 따옴표로 되돌립니다. 올바르게 열고 내보내기 파일에 저장 하려면 다음 지침을 참조 하십시오. Excel입니다.

내보내기 파일을 사용 하 여 Excel을 사용 하지 않고 필터링 할 수도 있습니다. Find.exe 유틸리티나 Findstr.exe 유틸리티입니다. 이러한 유틸리티는 Windows에 포함 되어 있습니다. 단어 파일에서을 검색할 수 있도록 하 고 포함 되지 않는 줄만 해당 단어가 포함 된 줄만 출력 이러한 단어입니다. 파일에 대리인이 있는 모든 사서함 소유자 목록을 확인 하려는 경우 예를 들어, 다음이 명령 중 하나는 파일을 만들려면 사용 "가 has Delegates" 문자열이 있는 줄을 포함 되어 있습니다.
대리자 Find.exe "에" OriginalFile.txt > HasDelegates.txt

Findstr.exe /c: "대리자가" OriginalFile.txt > HasDelegates.txt
또 다른 예로, 모든 데이터를 필터링 하는 가정해 봅시다. 사서함 소유자와 대리인입니다. /V 스위치는 검색 단어와 일치 하지 않는 모든 줄을 출력 합니다. 사용자 수 있는 이러한 모든 제외 된 파일을 생성 하는 명령 사용 "에 Has delegates"줄:
Find.exe "has Delegates" OriginalFile.txt > NoDelegates.txt

Find.exe /V "대리자가" OriginalFile.txt > NoDelegates.txt

Findstr.exe /c: "has Delegates" OriginalFile.txt > NoDelegates.txt

Findstr.exe /V /c: "대리자가" OriginalFile.txt > NoDelegates.txt
파일을 생성 하려면이 명령을 사용할 수 있습니다. 응용 프로그램 서비스 계정 전체에 있는 모든 계정 목록 사서함 액세스 권한으로 보내기 권한이 필요는 없지만. /I 스위치 명령을 대/소문자 구분 됩니다.
Find.exe /I "domain\ServiceAccount" OriginalFile.txt > ServiceAccount.txt

Findstr.exe /I OriginalFile.txt /c: "domain\ServiceAccount" > ServiceAccount.txt
참고 Find.exe 유틸리티를 사용 하 여 필터링 된 파일을 생성 하는 경우 제거 해야 Find.exe 유틸리티 만들 파일의 위쪽에 헤더 줄.

안 함 파일 이름은 와일드 카드를 사용 (*. *) Findstr.exe 유틸리티를 사용 합니다. 와일드 카드 문자를 사용 하는 경우 출력 파일의 각 줄 앞에 파일 이름이 추가 됩니다. 해야 합니다. find.exe를 사용 하 여 필터링 한 후 출력 파일을 신중 하 게 검사 나 Findstr.exe 필터를 캡처하거나 계정을 제외를 확인할 수 있는 위한 것입니다.

다음 예제는 사용자 로그온 이름 "NoSendAs" 전체 사서함 액세스 권한에 아니라는 보내기 했습니다. "사서함 소유자" 사서함 사용 권한입니다.
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [additional fields omitted] 

대리인이 있는 사서함 소유자 정보

전체 사서함 액세스 권한이 있는 대리인 (라고도 한 "super-delegate") 일반적으로 이름으로 보내기 권한을 부여 하지 않습니다. 경우는 대리인이 사서함 소유자의 사서함에 직접 super-delegate 로그 소유자 이름으로 보낼 수 있습니다. 대리인이 Outlook의 위임 기능 (사용할 때추가 사서함 열기 또는 다른 사용자의 폴더 열기), 소유자를 대신해 메시지를 보냅니다.

경우에 사람 이름으로 보내기 권한이 있는 super-delegate에 부여를 항상 사서함 소유자 이름으로 보내기 및 대신 보내지 않음에 대리자는 사서함 소유자입니다. 텍스트 "에 대 한 내보내기 파일을 검색 하는 것이 좋습니다. 대리자를 "하 고 있는 super-delegates 중 하나는 지 여부 확인 사서함 소유자의 대리인 실제로 나와 있습니다.

만 super-delegates 내보내기 파일에 나와 있습니다. 일반 대리인 권한이 없습니다. 전체 사서함 액세스 권한이 있습니다. 사람 이름으로 보내기 권한을 부여할 때 또한 일반적인 대리자 대리자 항상 사서함 소유자 이름으로 보냅니다. 이 일반 대리인에 전체 사서함 액세스 권한이 없는 경우에 그렇습니다. 의도 하지 않은 경우 대리자에 다른 사람 이름으로 보내기 권한을 부여한 경우 쉽게 나중에 권한을 해지할 수 있습니다.

Excel에서 내보내기 파일을 여는 방법

  1. 내보내기 파일을 열기 전에 Excel을 시작 합니다.
  2. 텍스트 파일 형식으로 Excel에서 파일을 엽니다. 텍스트 가져오기 마법사를 시작 합니다.
  3. 텍스트 가져오기 마법사에서 변경 하거나 다음을 허용합니다 설정은 다음과 같습니다.
    • 원래 데이터 형식: 구분
    • 구분 시작 행. 1
    • 원본 파일: 유니코드 (utf-8)
    • 구분 기호: 탭만
    • 연속 된 구분 기호를 하나로 처리: 표시 되지 않은
    • 텍스트 묶음 기호: "(따옴표로)

Excel에서 파일을 편집한 후 내보내기 파일을 저장 하는 방법

  1. 내보내기 파일에서를 클릭 합니다. 다른 이름으로 저장.
  2. 파일을 보관할 수 있도록 다른 이름을 사용 하 여 저장 된 원본 파일의 편집 하지 않은 복사본입니다.
  3. 클릭 파일를 클릭 다른 이름으로 저장출력을 저장할 파일 이름을 입력 하 고 다음을 누릅니다. 유니코드 텍스트파일 형식 목록입니다.

스크립트 구문

이 구문은 텍스트 모드 스크립트 이며에서 명령을 실행 해야 창에서 확인을 실행 대화 상자입니다. 명령을 열 수 확인 창에서 클릭 시작를 클릭 실행종류 CMD열기 상자를 클릭 하 고 확인.

오류 로그 및 내보내기 파일에 저장 되는 현재 명령 프롬프트 디렉터리입니다. 파일을 만들 수 있는 권한이 있어야 합니다. 이 디렉터리입니다. 명령줄 도움말을 보려면, 다음 명령을 입력 하십시오.
CSCRIPT AddSendAs.vbs
도메인 이름으로 보내기 권한 없이 전체 사서함 액세스 권한을 가진 사용자를 내보내려면 다음 명령을 입력 하십시오.
CSCRIPT AddSendAs.vbs [domain controller name] ?Export
Example:
CSCRIPT AddSendAs.vbs CORP-DC-1 ?Export
내보내기 파일 이름으로 생성 됩니다. "Send_As_Export_H_MM_SS.txt"입니다.

편집한 내보내기 파일을 가져오려면 다음 명령을 입력 하십시오.
CSCRIPT AddSendAs.vbs [domain controller name] ?Import [filename]


Example:


CSCRIPT AddSendAs.vbs CORP-DC-1 ?Import "Send_As_Export_H_MM_SS.txt"

사서함에 대해 전체 사서함 액세스 권한이 이미 있는 모든 사용자에 대해 도메인의 각 사서함에 대 한 사람 이름으로 보내기 권한을 부여 하는 방법

참고 전체 사서함 액세스 권한이 있는 대리인의 경우 조직에서 사용 권한, SetAll 모드를 사용할 수 없습니다. 이렇게 하면 대리인으로 보내기 부여 됩니다이 상황에서 SetAll 모드를 사용 사용 권한입니다. 이 문제를 주고 사용 하는 모든 전자 메일 메시지를 발생할 수 있습니다. 보낸 이름으로 권한 대신 권한 대신입니다. 할 수 있습니다. 잘못 된 이름으로 보내기 권한을 제거 하 여이 문제를 해결 합니다. 대리자에 부여 합니다.
CSCRIPT AddSendAs.vbs [domain controller name] ?SetAll


Example:


CSCRIPT AddSendAs.vbs CORP-DC-1 ?SetAll
SetAll 모드를 사용 하는 경우 내보내기 파일 수 있습니다. send_as_export_h_mm_ss.txt로 생성 합니다. 때문에이 파일을 저장 해야 하면 레코드에 변경한 모든 계정입니다. 실행 하는 경우는 스크립트 다시이 없습니다 출력 됩니다 동일한 계정 목록 때문에 계정 이름으로 보내기 권한이 이미 부여 된 것.

스크립트를 실행 하는 동안 오류가 발생할 수 있습니다. Send_As_Errors_H_MM_SS.txt 파일에 저장 합니다. 오류 파일 이름은 일치 합니다. 연결된 내보내기 파일의 hours_minutes_seconds 타임 스탬프입니다.

스크립트 수정

권한이 있는 계정은 조직에 있을 수 있습니다. 대부분의 개체에서 사용 권한을 변경 하려면. 줄일 수 있는 크기의 내보내기 파일을 수정 하 여 이러한 계정을 필터링 할 수 있는 스크립트의 위쪽에 있는 FMA_EXCLUSIVE_LIST 변수입니다. 여 기본적으로이 변수를 억제 해야 하는 계정을 몇 가지 나열은 스크립트 출력 합니다. 다음 형식을 사용 하 여 계정을 더 추가할 수 있습니다.
& "<Domain\Name>" & OUTPUT_DELIMITER
예를 들어 다음 변수의 값을 변경할 수 있습니다.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
이 다음과 같이 나타나도록 합니다.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER & "Mydomain\Service1" & OUTPUT DELIMITER
이 변경에서 "Mydomain\Service1" 계정 목록이 표시 되지 않습니다. 내보내기 파일이 "NT AUTHORITY\SELF" 및 "NT 권한 \ 시스템"와 함께 Domain\Name 값은 대/소문자를 이며 정확히 나타나야 알 처럼 또는 내보내기 파일에서와 동일 합니다.

나와 같은 FMA_EXCLUSIVE_EXSVC가 기본값 "\Exchange, 변수 편집 가능 서비스"& OUTPUT_DELIMITER입니다. "Exchange 서비스" 계정 이름입니다. Exchange Active Directory Connector를 통해 권한은 허용 됩니다. 5.5 및 Exchange 2000 마이그레이션 및 공존 시나리오에서 서버입니다. 이 계정은 여러 도메인에 만들고이 반복적으로 내보내기 파일에 있는 경우 나타날 수 있습니다. 억제 되지 않습니다.

FMA_EXCLUSIVE_EXSVC 변수는 받습니다. 값으로 하나의 계정입니다. 계정 이름은 대/소문자 구분 수 없습니다. 계정 백슬래시 문자 (\)로 시작 해야 하 고 포함 해야 해당 계정이 속하는 도메인입니다. 계정에 대 한 모든 억제 됩니다. 에 존재 하는 도메인입니다.

타사 마이그레이션을 사용한 경우 도구나 디렉터리 동기화 방법을 다른 계정에 있을 수 있습니다. 사용자 사서함에 광범위 하 게 부여 되는 사용 권한을 가진 여러 도메인. 이 예에서는 시나리오, "\Exchange 서비스"에 대 한 해당 계정의 이름을 대체할 수 있습니다.

팁 및 주의 사항

  • 생성 되는 로그 및 오류 파일을 버리지 마십시오 스크립트입니다. 이러한 해결 하거나 반대로 변경 하는 데 유용할 수 있습니다. 나중에. 사람 이름으로 보내기 권한을 부여 해야 하는 즉시 기억에 계정을 더 이상 내보내기 파일에 기록 됩니다.
  • Exchange 서버 또는 데이터베이스가 다운 되 면 스크립트 처리 속도가 느려집니다. 이런 경우 내보내기 파일 데이터베이스에 의해 정렬할 수 및 나중에 다른 파일에 대 한 있도록 중지 된 데이터베이스와 관련이 있는 줄 이동 가져오기입니다.
  • 스크립트 출력 계정이 표시 되지 않습니다. 여기서는 로그온 이름 끝에 "$"$ 또는 NT 권한 \ 시스템입니다. 이러한 시스템 계정은 해서는 안 일반적으로 보내기 권한 및 내보내기 파일을 제거 해야 크기를 크게 줄일 수 있습니다.
  • 이 먼저 유니코드 형식으로 내보내기 파일 이어야 가져온. 본의 아니게 ANSI 텍스트로 파일을 저장 한 경우에 메모장에서에서 파일을 로드 하 고 유니코드로 저장 하 여이 문제를 해결 합니다. 텍스트입니다.
  • 테스트 계정으로 가져오기 작동 하지 않는 경우 문제를 해결합니다 한 가져오기 파일에서 한 줄을 추가 합니다. 테스트를 구성 해야 하는 계정 사서함이 Exchange 서버에서 실행 중인 및 다음 다른 테스트 계정에 전체 사서함 액세스 권한을 부여 합니다. 테스트 계정으로 보내기 권한을 부여 하지 마십시오.
  • 이 스크립트는 Undo 모드가 없습니다입니다. 박탈 하는 이 스크립트로 부여한 사람 이름으로 보내기 권한에 생성 해야 다른 스크립트 또는 수동으로 제거 합니다. 방지 하기 위해 Undo 모드는 제공 되지 않습니다. 이 스크립트를 모든 사용자에 대 한 사람 이름으로 보내기 권한을 제거 하려면 사용 하는 조직입니다.
  • 스크립트가 있는 계정을 올바르게 처리 하지 않습니다. 전체 사서함 액세스와 함께 사용자 개체의 모든 권한은 부여 합니다. 전체 컨트롤 이름으로 보내기 권한이 포함 되지만 스크립트 내보냅니다 있는 사람 이름으로 보내기 권한이 없는 것 처럼 계정. 이 크기를 늘릴 수 있습니다. 내보내기 파일에서 나쁜 발생 파일을 가져오려면에서 다음 중복 이러한 계정으로 보내기 권한을 부여 합니다.
  • Active Directory 사용자 계정은 고유 있습니다 이름 및 해당 탭을 포함 하거나 큰따옴표가 수 없습니다. 이 스크립트를 사용 하 여 처리 합니다. 스크립트가 있는 이름만 올바르게 처리할 수 있는 다음과 같은 일치 하는 이중 따옴표를 포함합니다.
    "CN ="애칭"첫 번째, 마지막 DC 도메인, DC = com ="
  • 각 버전 Excel의 최대 줄 다른 제한을 지원합니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서 번호를 클릭 하십시오.
    120596Excel 97, Excel 2000, Excel 2002 및 Excel 2003에는 65, 536 행 보다 큰 텍스트 파일을 가져올 수 없습니다.
    Excel 2003 및 Excel 2007 용 행 제한은 다음과 같습니다.
    • Excel 2003: 65536 행
    • Excel 2007: 1,048,576 행
    출력 파일을 이러한 한계 보다 큰 경우 Excel에 로드 하기 전에 파일을 여러 개로 분할 해야 합니다.
  • Send_As_Errors 파일은 특정 계정을 나열 합니다 여기서 읽기 또는 쓰기 권한 오류가 발생 했습니다. 기타에서 계정의 경우는 도메인은 올바르게 처리 된, 이러한 계정은 공통점이 있을 수 있습니다. 스크립트 들을 실행 하지 못하도록 합니다. 일반적인 문제로 다음:
    • 보거나 설정할 수 있는 관리 권한이 부족 계정의 속성입니다.
    • Exchange 사서함 저장소를 실행 하지 않습니다.
    • 워크스테이션의 구성원이 아닙니다. 도메인입니다.
    • 사용 중인 관리 계정이 아닙니다. 동일한 포리스트의.
이 스크립트를 실행 하려면 복사 및 시작 사이의 모든 줄을 붙여 넣습니다. 스크립트 및 끝 스크립트 메모장과 같은 일반 텍스트 편집기입니다. 스크립트를 저장 합니다. Addsendas.vbs로. 스크립트를 시작 합니다.
Option Explicit

Dim OUTPUT_DELIMITER
OUTPUT_DELIMITER = """""""" & vbTab & """"""""

'Define exclusive list, if FMA is given to any user in this list, it's ignored.  If you 
'want to modify this list, please be sure to follow the same format. Every alias has to 
'have a OUTPUT_DELIMITER before and after it
Dim FMA_EXCLUSIVE_LIST
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
Dim FMA_EXCLUSIVE_EXSVC
FMA_EXCLUSIVE_EXSVC = "\Exchange Services" & OUTPUT_DELIMITER

'Permission Type: Allow or Deny
const ACCESS_ALLOWED_OBJECT_ACE_TYPE  = 5
const ADS_ACETYPE_ACCESS_ALLOWED = &h0
const ADS_ACETYPE_ACCESS_DENIED = &h1

'Flags: Specifies Inheritance
const ADS_ACEFLAG_INHERIT_ACE = &h2
const ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE = &h4
const ADS_ACEFLAG_INHERIT_ONLY_ACE = &h8
const ADS_ACEFLAG_INHERITED_ACE = &h10
const ADS_ACEFLAG_VALID_INHERIT_FLAGS = &h1f
const ADS_ACEFLAG_SUCCESSFUL_ACCESS = &h40
const ADS_ACEFLAG_FAILED_ACCESS = &h80

'Declare ADSI constants
Const ADS_OPTION_SECURITY_MASK = 3
Const ADS_OPTION_REFERRALS	= 1
Const ADS_SECURITY_INFO_DACL = 4
Const ADS_CHASE_REFERRALS_NEVER = &h00 
Const ADS_CHASE_REFERRALS_SUBORDINATE = &h20 
Const ADS_CHASE_REFERRALS_EXTERNAL = &h40

'output file name
Const EXPORT_FILE = "Send_As_Export"
Const ERROR_FILE = "Send_As_Errors"

' script mode
const MODE_INVALID = -1 
const MODE_SETALL = 0
const MODE_EXPORT = 1
const MODE_IMPORT = 2
const SETALL = "-SETALL"
const EXPORT = "-EXPORT"
const IMPORT = "-IMPORT"

' argument index
Const ARG_INDEX_MODE = 1
Const ARG_INDEX_DC = 0
Const ARG_INDEX_FILENAME = 2

' column index in import/export file
Const COLUMN_INDEX_USERDISPLAYNAME = 0
Const COLUMN_INDEX_FMAALIAS = 1
Const COLUMN_INDEX_FMADISPLAYNAME = 2
Const COLUMN_INDEX_IFPUBLICDELEGATE = 3
Const COLUMN_INDEX_MAILBOXSTATUS = 4
Const COLUMN_INDEX_USERADSPATH = 5
Const COLUMN_INDEX_HOMEMDB = 6

Const EMPTYSTRING = ""
Const STRNO = "No Delegates"
Const STRYES = "Has Delegates" 
Const MIN_ARG = 2
Const INIT_ARRAY_SIZE = 100

' Microsoft Exchange 
Const EX_MB_SEND_AS_ACCESSMASK  = &H00100
Const EX_FULLMailbox_AccessMask = 1
Const MESO = "Microsoft Exchange System Objects"
Const EX_MB_SEND_AS_GUID = "{AB721A54-1E2F-11D0-9819-00AA0040529B}"

Const ForReading	= 1
Const ForWriting	= 2
Const ForAppending	= 8
Const TristateTrue	= -1
Const ADS_SCOPE_SUBTREE = 2

Dim objUser
Dim objSDMailBox
Dim objSDNTsecurity
Dim objDACLNTSD
Dim objNewACE

Dim sTrusteeAlias()
Dim sFMADeniedList
Dim sFMAExplicitAllow
Dim fACESendasFound
Dim dArraySize
Dim TotalACE
Dim i
Dim rootDSE
Dim conn
Dim objCommand
Dim objCmdDisplayName
Dim rsUsers
Dim FoundObject
Dim objFSO
Dim objfileImport
Dim objfileExport
Dim objfileError
Dim sImportFilePath
Dim cScriptMode
Dim dArgCount
Dim dArgExpected
Dim sDCServer
Dim sMailboxStatus
Dim sIfPublicDelegate
Dim sFMAUserDisplayName
Dim sExportFileName
Dim sErrorsFileName
Dim msPublicDelegates
Dim fError
Dim fOneError
Dim fFMAAllowed

On Error Resume Next
dArraySize = INIT_ARRAY_SIZE
ReDim Preserve sTrusteeAlias(dArraySize)

dArgCount = Wscript.Arguments.Count 
If ( dArgCount < MIN_ARG ) Then
	DisplaySyntax
End If

err.Clear
fError = False
fOneError = False
cScriptMode = MODE_INVALID
Select Case UCase(WScript.Arguments(ARG_INDEX_MODE))
	Case SETALL 
		cScriptMode = MODE_SETALL
		dArgExpected = ARG_INDEX_MODE + 1
	Case EXPORT 
		cScriptMode = MODE_EXPORT
		dArgExpected = ARG_INDEX_MODE + 1
	Case IMPORT 
		cScriptMode = MODE_IMPORT
		dArgExpected = ARG_INDEX_FILENAME + 1
	Case Else 
		cScriptMode = MODE_INVALID
End Select
If (cScriptMode = MODE_INVALID Or dArgCount <> dArgExpected) Then
	DisplaySyntax
End If

sDCServer = WScript.Arguments(ARG_INDEX_DC)

CreateOutputFiles

If ( cScriptMode = MODE_SETALL Or cScriptMode = MODE_EXPORT ) Then
	Dim sDomainContainer
	If (cScriptMode = MODE_SETALL) Then
		Dim strInput 
		WScript.StdOut.WriteLine("WARNING: If you continue, each account in the domain that has")
		WScript.StdOut.WriteLine("Full Mailbox Access permission for a given mailbox will also be")
		WScript.StdOut.WriteLine("granted permission to Send As the mailbox owner.")
		WScript.StdOut.WriteLine()
		WScript.StdOut.WriteLine("To preview the list of mailboxes before granting Send As,")
		WScript.StdOut.WriteLine("cancel this operation and use the -Export mode of this script.")
		WScript.StdOut.WriteLine()
		WScript.StdOut.Write("Press Y to continue or any other key to cancel: ")
		strInput = WScript.StdIn.ReadLine()
		If (UCase(strInput) <> UCase("Y")) Then
			WScript.Quit
		End If	
	End If
	
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("""!"" indicates an error processing an object.")
	WScript.StdOut.WriteLine("     Check " & sErrorsFilename)
	WScript.StdOut.WriteLine("Starting...")
	WScript.StdOut.WriteLine()

	err.Clear	
	Set rootDSE = GetObject("LDAP://" & sDCServer & "/RootDSE")
	sDomainContainer = rootDSE.Get("defaultNamingContext")
	WScript.StdOut.WriteLine("Finding domain controller [ " & sDCServer & " ] for domain [ " & sDomainContainer & " ]")
	
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Failed to find the domain or domain controller, error:" & err.Description)
		objfileError.WriteLine("Failed to find the domain or domain controller, error:" & err.Description)
		WScript.Quit
	End If
			
	err.Clear	
	Set conn = CreateObject("ADODB.Connection")
	Set objCommand = CreateObject("ADODB.Command")
	conn.Provider = "ADSDSOObject"
	conn.Open "ADs Provider"
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Failed to bind to Active Directory server, error:" & err.Description)
		objfileError.WriteLine("Failed to bind to Active Directory server, error:" & err.Description)
		WScript.Quit
	End If

	Set objCommand.ActiveConnection = conn
	WScript.StdOut.WriteLine("Searching for mailbox owner user accounts in " & sDomainContainer)
	
	objCommand.CommandText  = "<LDAP://" & sDCServer & "/" & sDomainContainer & ">;(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=*)) ))));adspath;subtree"
	objCommand.Properties("searchscope") = ADS_SCOPE_SUBTREE
	objCommand.Properties("Page Size") = 100
	objCommand.Properties("Timeout") = 30 
	objCommand.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)

	err.Clear	
	Set rsUsers = objCommand.Execute
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Search for mailbox owners failed, error:" & err.Description)
		objfileError.WriteLine("Search for mailbox owners failed, error:" & err.Description)
		WScript.Quit
	End If

	If (rsUsers.RecordCount = 0) Then
		WScript.StdOut.WriteLine("No mailbox owner user accounts could be seen in " & sDomainContainer & ".")
		objfileError.WriteLine("No mailbox owner user accounts found in " & sDomainContainer & ".")
		fError = True		
	End If

	While Not rsUsers.EOF
		If (fOneError = True) Then
			WScript.StdOut.Write("!")
		Else
			WScript.StdOut.Write(".")
		End If
		fOneError = False
		
		'Skip any mailbox object in Microsoft Exchange System Objects container
		If (0 = Instr(rsUsers.Fields(0).Value, MESO)) Then
			err.Clear 
			Set objUser = GetObject(rsUsers.Fields(0).Value)
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to get user object: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Error: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			Set objSDMailBox = objUser.MailboxRights
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to get mailbox rights: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Error: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			Set objSDNTsecurity = objUser.ntSecurityDescriptor
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to get NTSD: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Error: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			
			Set objDACLNTSD = Nothing
			If (objUser.AccountDisabled) Then
				sMailboxStatus = "Disabled"
			Else
				sMailboxStatus = "Enabled"
			End If

			'Query this user's publicDelegates list
			err.Clear 
			msPublicDelegates = objUser.Get("publicDelegates")
			If (err.number <> 0) Then
				'This user doesn't have publicDelegates list set
				sIfPublicDelegate = STRNO
				err.Clear
			Else
				sIfPublicDelegate = STRYES
			End If
			
			err.Clear 			
			FindAllFMAUsers objSDMailBox
			
			If (TotalACE > dArraySize) Then
			'Needs to allocate bigger size array
				dArraySize = TotalACE + 1
				ReDim Preserve sTrusteeAlias(dArraySize)
				FindAllFMAUsers objSDMailBox
			End If
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to query mailbox rights of user: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Error: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If
			
			If TotalACE > 0 Then
				Set objDACLNTSD = objSDNTsecurity.DiscretionaryAcl

				For i = 0 to TotalACE - 1 Step 1
					
					'Check if we already have Send As ACE in NT security descriptor
					'If it exists, either allow or deny, we don't need to add send as to it 
					CheckSendAsACE objDACLNTSD, sTrusteeAlias(i)
					
					'Note: deny entries take precedence over allow entries. 
					'If there is FMA deny ACE, skip it even if we find FMA allow ACE 
					IfFMAAllowed(sTrusteeAlias(i) & OUTPUT_DELIMITER)
					If ((fFMAAllowed = True) And (fACESendasFound = 0)) Then
						If cScriptMode = MODE_SETALL Then
							Set objNewACE = CreateObject ("AccessControlEntry")
							objNewACE.AceFlags = 0 
							objNewACE.AceType = ACCESS_ALLOWED_OBJECT_ACE_TYPE
							objNewACE.AccessMask = EX_MB_SEND_AS_ACCESSMASK 
							objNewACE.Flags = 1
							objNewACE.ObjectType = EX_MB_SEND_AS_GUID
							objNewACE.Trustee = sTrusteeAlias(i)

							objDACLNTSD.AddAce objNewAce
						End If
			
						'Query trustee(FMA user) to get its displayName
						Dim rsTrustee
						Dim objTrustee
						Dim dPosition
						Dim sAlias
					
						dPosition = inStr(1, sTrusteeAlias(i), "\")
						sAlias = mid(sTrusteeAlias(i), dPosition + 1)
				
						Set objCmdDisplayName = CreateObject("ADODB.Command")			
						Set objCmdDisplayName.ActiveConnection = conn
						objCmdDisplayName.CommandText  = "<LDAP://" & sDomainContainer & ">;(&(&(& (mailnickname=" & sAlias & ") (| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=*)) ))));adspath;subtree"
						objCmdDisplayName.Properties("searchscope") = ADS_SCOPE_SUBTREE
						objCmdDisplayName.Properties("Page Size") = 100
						objCmdDisplayName.Properties("Timeout") = 30 
						objCmdDisplayName.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)
						
						Set rsTrustee = objCmdDisplayName.Execute				
						Set objTrustee = GetObject(rsTrustee.Fields(0).Value)
						
						If (err.number <> 0) Then
							'Failed to query FMA user's display name, use its alias
							sFMAUserDisplayName = sAlias							
						Else
							sFMAUserDisplayName = objTrustee.displayName							
						End If
	
						'output to export file
						err.Clear
						objfileExport.WriteLine ("""""""" & objUser.displayName & OUTPUT_DELIMITER & sTrusteeAlias(i) & OUTPUT_DELIMITER & sFMAUserDisplayName & OUTPUT_DELIMITER & sIfPublicDelegate & OUTPUT_DELIMITER & sMailboxStatus & OUTPUT_DELIMITER & rsUsers.Fields(0).Value & OUTPUT_DELIMITER & objUser.homeMDB & """""""")
						If (err.number <> 0) Then
							objfileError.WriteLine("User " & rsUsers.Fields(0).Value & " could not be added to the export file. You should set permissions manually for this user.")
							objfileError.WriteLine("Error: " & err.Description)
							err.Clear
							fError = True
							fOneError = True
						End If
						Set objCmdDisplayName = Nothing
						Set rsTrustee = Nothing
						Set objTrustee = Nothing
					End If
				Next
					
				If cScriptMode = MODE_SETALL Then
					err.Clear
					objSDNTsecurity.DiscretionaryAcl = objDACLNTSD
					objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
					objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
					objUser.SetInfo
					If (err.number <> 0) Then
						objfileError.WriteLine("Failed to update ADSI for user: " & rsUsers.Fields(0).Value)
						objfileError.WriteLine("Error: " & err.Description)
						err.Clear
						fError = True
						fOneError = True
					End If
				End If

				TotalACE = 0
				Set objSDMailbox = Nothing
				Set objSDNTsecurity = Nothing
				Set objUser = Nothing
				Set objDACLNTSD = Nothing
			End If
		
		End If	
		rsUsers.MoveNext
	Wend
End If

If (cScriptMode = MODE_IMPORT) Then
	Dim sOneRow
	Dim sArraySplit
	Dim objUserItem
	Dim UserPath
	Dim objUserSD
	Dim objUserDACL
	Dim fNeedToAddSendAs
	
	sImportFilePath = WScript.Arguments(ARG_INDEX_FILENAME)

	WScript.StdOut.WriteLine("If you continue, each account listed in " & sImportFilePath)
	WScript.StdOut.WriteLine("that has Full Mailbox Access permission for a given mailbox")
	WScript.StdOut.WriteLine("will also be granted permission to Send As the mailbox owner.")
	WScript.StdOut.WriteLine()
	WScript.StdOut.Write("Press Y to continue or any other key to cancel: ")
	strInput = WScript.StdIn.ReadLine()
	If (UCase(strInput) <> UCase("Y")) Then
		WScript.Quit
	End If	
	WScript.StdOut.WriteLine("Starting...")
	WScript.StdOut.WriteLine()

	UserPath = EMPTYSTRING	
	err.Clear	
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objfileImport = objFSO.OpenTextFile(sImportFilePath, ForReading, False, TristateTrue)
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Failed to open import file " & sImportFilePath & ", error:" & err.Description)
		objfileError.WriteLine("Failed to open import file " & sImportFilePath & ", error:" & err.Description)
		WScript.Quit
	End If	

	fNeedToAddSendAs = False
	Do While objfileImport.AtEndOfStream <> True
		If (fOneError = True) Then
			WScript.StdOut.Write("!")
		Else
			WScript.StdOut.Write(".")
		End If
		fOneError = False

		err.Clear
		sOneRow = objfileImport.ReadLine
		sArraySplit = Split(sOneRow , OUTPUT_DELIMITER)
		If (err.number <> 0) Then
			objfileError.WriteLine("Failed to parse one row: " & sOneRow )
			objfileError.WriteLine("Error: " & err.Description)
			err.Clear
			fError = True
			fOneError = True
		End If
		
		If (UserPath <> sArraySplit(COLUMN_INDEX_USERADSPATH)) Then
			'A new user
			If (fNeedToAddSendAs = True ) Then
				'update existing user
				err.Clear 
				objSDNTsecurity.DiscretionaryAcl = objDACLNTSD
				objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
				objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
				objUser.SetInfo
				If (err.number <> 0) Then
					objfileError.WriteLine("Failed to update permissions for user: " & UserPath)
					objfileError.WriteLine("Error: " & err.Description)
					fError = True
					fOneError = True
				End If
			End If
						
			fNeedToAddSendAs = False
			Set objUser = Nothing
			Set objSDNTsecurity = Nothing
			Set objDACLNTSD = Nothing

			UserPath = sArraySplit(COLUMN_INDEX_USERADSPATH)
			err.Clear 
			Set objUser = GetObject(UserPath)
			Set objSDNTsecurity = objUser.ntSecurityDescriptor  
			Set objDACLNTSD = objSDNTsecurity.DiscretionaryACL			
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to get user object: " & UserPath)
				objfileError.WriteLine("Error: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If
		End If
	
		'Add newACE   Do we need this check?
		CheckSendAsACE objDACLNTSD, sArraySplit(COLUMN_INDEX_FMAALIAS)
		If (fACESendasFound = 0) Then
			Set objNewACE = CreateObject ("AccessControlEntry")
			objNewACE.AceFlags = 0 
			objNewACE.AceType = ACCESS_ALLOWED_OBJECT_ACE_TYPE
			objNewACE.AccessMask = EX_MB_SEND_AS_ACCESSMASK 
			objNewACE.Flags = 1
			objNewACE.ObjectType = EX_MB_SEND_AS_GUID
			objNewACE.Trustee = sArraySplit(COLUMN_INDEX_FMAALIAS)

			objDACLNTSD.AddAce objNewACE
			fNeedToAddSendAs = True			
		End If
	Loop
	
	If (fNeedToAddSendAs = True ) Then
		'update the last user
		err.Clear 
		objSDNTsecurity.DiscretionaryAcl = objDACLNTSD
		objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
		objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
		objUser.SetInfo
		If (err.number <> 0) Then
			objfileError.WriteLine("Failed to update permissions for user: " & UserPath)
			objfileError.WriteLine("Error: " & err.Description)
			fError = True
		End If
	End If

End If 

objFSO.Close
objfileImport.Close
objfileExport.Close
objfileError.Close

Set objFSO = Nothing
Set objfileImport = Nothing
Set objfileExport = Nothing
Set objfileError = Nothing
Set objCommand = Nothing
Set conn = Nothing

WScript.StdOut.WriteLine()
If (fError = True) Then
	WScript.StdOut.WriteLine("Finished with one or more errors. See " & sErrorsFilename)
Else
	WScript.StdOut.WriteLine("Finished successfully. No errors were encountered.")
End If

Function FindAllFMAUsers (objSD)
Dim objACL
Dim objACE
Dim intACECount
Dim strIndent
Dim dAccessMaskBit
Dim dPosition
Dim sUserAlreadyFound

	On Error Resume Next
	err.Clear
	TotalACE = 0
	sFMADeniedList = EMPTYSTRING
	sFMAExplicitAllow = EMPTYSTRING
	sUserAlreadyFound = OUTPUT_DELIMITER
	intACECount = 0
	Set objACL = objSD.DiscretionaryAcl
	intACECount = objACL.AceCount

	If intACECount Then
		' Open discretionary ACL (DACL) data.
		For Each objACE In objACL		
			
		dPosition = inStr(1, objACE.Trustee, "$")
		If ((0 = Instr(UCase(objACE.Trustee & OUTPUT_DELIMITER), UCase(FMA_EXCLUSIVE_EXSVC))) And (0 = Instr(sUserAlreadyFound, OUTPUT_DELIMITER & objACE.Trustee & OUTPUT_DELIMITER)) And (0 = Instr(FMA_EXCLUSIVE_LIST, OUTPUT_DELIMITER & objACE.Trustee & OUTPUT_DELIMITER)) And (dPosition <> Len(objACE.Trustee)) And ((objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0) And ((objACE.AceType = ADS_ACETYPE_ACCESS_ALLOWED) Or (objACE.AceType = ACCESS_ALLOWED_OBJECT_ACE_TYPE) )) Then
			If (TotalACE < dArraySize) Then
				sTrusteeAlias(TotalACE) = objACE.Trustee
				sUserAlreadyFound = sUserAlreadyFound & objACE.Trustee & OUTPUT_DELIMITER
			End If
			TotalACE = TotalACE + 1	
			If ((objACE.AceFlags And ADS_ACEFLAG_INHERITED_ACE) = 0) Then
				'Keep a list who explictly set FMA at mailbox level
				sFMAExplicitAllow = sFMAExplicitAllow & objACE.Trustee & OUTPUT_DELIMITER			
			End If
		ElseIf (( (objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0 ) And (objACE.AceType = ADS_ACETYPE_ACCESS_DENIED)) Then
			'Keep a list who denied FMA, use OUTPUT_DELIMITER as demiliter, 
			'include both inherited and explicit set at mailbox level
			sFMADeniedList = sFMADeniedList & objACE.Trustee & OUTPUT_DELIMITER			
		End If
		Next
	End If

	Set objACL = Nothing
End Function

Function CheckSendAsACE (objDiscretionaryACL, sTAlias)
Dim objACE
Dim intACECount

	err.Clear 
	fACESendasFound = 0
	intACECount = objDiscretionaryACL.AceCount

	If intACECount Then
		For Each objACE In objDiscretionaryACL	
			err.Clear 
			If ( (objACE.Trustee = sTAlias) And (objACE.ObjectType = EX_MB_SEND_AS_GUID) ) Then
				fACESendasFound = 1
			End If
			If (err.number <> 0) Then
				objfileError.WriteLine("Could not read permissions for this user: " & sTAlias)
				objfileError.WriteLine("Error: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If			
		Next			
	End If	
End Function

Function IfFMAAllowed(sTrustee)
	'FMA allow ACE has been found. Assume it's true
	fFMAAllowed = True
	
	If ( (0 <> Instr(sFMADeniedList, sTrustee)) And (0 = Instr(sFMAExplicitAllow, sTrustee))	) Then
		'If Denied ACE is found, and no explicit allow FMA 
		fFMAAllowed = False
	End If 
End Function

Function CreateOutputFiles
	Dim sTimeArray
	Dim sTimeShort
	Dim sTime
	
	err.Clear
	sTime = Time
	sTimeShort = Split(sTime, " ")
	sTimeArray = Split(sTimeShort(0), ":")

	Set objFSO = CreateObject("Scripting.FileSystemObject")
	sErrorsFileName = ERROR_FILE & "_" & sTimeArray(0) & "_" & sTimeArray(1) & "_" & sTimeArray(2) & ".txt"
	Set objfileError = objFSO.OpenTextFile(sErrorsFileName, ForWriting, True, TristateTrue)

	If (cScriptMode = MODE_SETALL Or cScriptMode = MODE_EXPORT)	Then
		sExportFileName = EXPORT_FILE & "_" & sTimeArray(0) & "_" & sTimeArray(1) & "_" & sTimeArray(2) & ".txt"
		Set objfileExport = objFSO.OpenTextFile(sExportFileName, ForWriting, True, TristateTrue)	
	End If
	
	If err.number <> 0 Then
		WScript.StdOut.WriteLine("Unable to create export or error files: " & err.Description)
		objfileError.WriteLine("Unable to create export or error files: " & err.Description)
		fError = True
		fOneError = True
		WScript.Quit	
	End If

End Function

Function DisplaySyntax
	WScript.StdOut.WriteLine("Syntax:")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Export accounts with Full Mailbox Access that do not have Send As permission:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Export")
	WScript.StdOut.WriteLine("         NOTE: The list will be saved to Send_As_Export_HH_MM_SS.txt")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Grant Send As to all accounts listed in an export file:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Import ""filename.txt""")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Grant Send As to all accounts in the domain with Full Mailbox Access:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -SetAll")
	WScript.StdOut.WriteLine("         NOTE: Accounts will be listed in Send_As_Export_HH_MM_SS.txt")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("For all modes, errors are saved to Send_As_Errors_HH_MM_SS.txt")

	WScript.Quit	
End Function
최종 스크립트

Microsoft는 묵시적인 보증 없이 설명 목적 으로만 프로그래밍 예제를 제공 합니다. 이 포함 되지만 상품성 또는 특정 목적에의 적합성의 묵시적된 보증을 제한 되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅 하는 데 사용 되는 도구 및 여기서 설명 하는 프로그래밍 언어에 익숙한 있는지 가정 합니다. Microsoft 지원 엔지니어는 특정 프로시저의 기능을 설명할 수 있습니다. 그러나 추가 기능을 제공 하거나 특정 요구 사항에 맞도록 프로시저를 구성이 예제 수정 되지 않습니다.

자세한 내용은 기술 지원 Microsoft에서 사용할 수 있는 옵션은 다음 Microsoft 웹 방문 사이트:
서비스 안내KO.요청
이 문서에서 설명 하는 다른 공급 업체 제품 들은 Microsoft와 무관 한 회사에서 제조한 것입니다. Microsoft 어떠한 보증도, 묵시적 또는 성능 또는 안정성 이러한 제품에 대 한 보증도 하지 않습니다.

속성

기술 자료: 912918 - 마지막 검토: 2012년 5월 8일 화요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
키워드:?
kbtshoot kbpending kbbug kbprb kbmt KB912918 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:912918

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com