ผู้ใช้ไม่สามารถส่งข้อความอีเมลจากอุปกรณ์แบบพกพาหรือจากกล่องจดหมายที่มีการใช้งานร่วมกันใน Exchange 2000 Server และใน Exchange Server 2003

ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ

ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:912918
บทความนี้ถูกเก็บถาวรแล้วเนื้อหาของบทความจึงถูกนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก
อาการ
เมื่อคุณพยายามที่จะส่งข้อความอีเมล ใน เซิร์ฟเวอร์ Microsoft Exchange 2000 หรือ Microsoft Exchange Server 2003 คุณไม่สามารถส่งข้อความอีเมล นอกจากนี้ คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้อย่างใดอย่างหนึ่งหรือรายงานไม่ได้จัดส่งต่อไปนี้ (ndr) อย่างใดอย่างหนึ่ง

ข้อผิดพลาด

  • การเข้าถึงถูกปฏิเสธ
  • คุณไม่มีสิทธิ์เพียงพอสำหรับการดำเนินการนี้กับวัตถุนี้ ดูโฟลเดอร์ที่ติดต่อหรือผู้ดูแลระบบของคุณ
  • ข้อความ unlisted ข้อผิดพลาด
  • mapi_e_no_access-2147024891
  • ไม่สามารถส่งข้อความจดหมายสำหรับผู้ใช้รายชื่อผู้ใช้ (HRESULT: -2147024891) ผู้ใช้ Pausing ชื่อผู้ใช้ (ข้อผิดพลาดในการรักษาความปลอดภัย - ไม่สามารถเข้าถึงกล่องจดหมายของผู้ใช้ได้)
  • ทรัพยากรที่ไม่พบ
หมายเหตุ:คุณได้รับข้อความแสดงข้อผิดพลาดของ "การเข้าถึงถูกปฏิเสธ" หรือเกิดข้อผิดพลาด "ไม่พบทรัพยากร" จาก Microsoft Outlook Web Access เมื่อคุณเข้าสู่ระบบในบัญชีผู้ใช้ผู้รับมอบสิทธิ์

ndr

  • คุณไม่มีสิทธิ์ในการส่งไปยังผู้รับคนนี้ สำหรับความช่วยเหลือ ติดต่อผู้ดูแลระบบของคุณ
  • ไม่สามารถส่งข้อความ โดยใช้กล่องจดหมายของคุณ คุณไม่มีสิทธิ์ในการส่งข้อความในนามของผู้ใช้ที่ระบุ

ผลิตภัณฑ์ที่ได้รับผลกระทบ

ปัญหานี้เรียกว่าจะมีผลกับผลิตภัณฑ์ของบริษัทอื่นต่อไปนี้:
  • การวิจัยในเซิร์ฟเวอร์ BlackBerry องค์กรการเคลื่อนไหว (RIM) (BES)
  • ไร้ดีเทคโนโลยี GoodLink สายการส่งข้อความ
ปัญหานี้อาจยังผลต่อการกำหนดเอง MAPI หรือข้อมูลร่วมกัน CDO วัตถุโดยใช้โปรแกรมที่ส่งข้อความอีเมล

ผลิตภัณฑ์อื่น ๆ ของบริษัทอื่นที่ใช้บัญชีบริการส่งข้อความอีเมล์อาจจะได้รับผลกระทบ ถ้าคุณกำลังใช้ผลิตภัณฑ์ของบริษัทอื่นที่ได้รับผลกระทบจากปัญหานี้ เราขอแนะนำให้ คุณติดต่อผู้ขายสำหรับความช่วยเหลือเกี่ยวกับการแก้ไขปัญหานี้

อย่างไรก็ตาม ได้มีการยืนยันว่า ผลิตภัณฑ์ของบริษัทอื่นต่อไปนี้ได้รับผลจากปัญหานี้ไม่:
  • Unity cisco ภาพการส่งข้อความ
  • ชุดการโยกย้าย quest สำหรับการแลกเปลี่ยน
  • โปรแกรมอรรถประโยชน์ ExMerge Microsoft สำหรับการแลกเปลี่ยน
สาเหตุ
ปัญหานี้อาจเกิดขึ้นได้หากเงื่อนไขใดๆ ต่อไปนี้เป็นจริง::
  • คุณไม่มีสิทธิ์ในการส่งข้อความอีเมล์ที่เป็นเจ้าของกล่องจดหมายในบัญชีคุณกำลังใช้เพื่อส่งข้อความอีเมล
  • คุณกำลังเรียกใช้ Microsoft Exchange 2000 Server Service Pack 3 (SP3) พร้อมกับรุ่นของแฟ้มเป็น Store.exe ซึ่งเท่ากับ หรือหลังจากรุ่น 6619.4 รุ่น 6619.4 ก่อนทำการมีอยู่ในบทความฐานความรู้ของ Microsoft ต่อไปนี้:
    915358โปรแกรมแก้ไขด่วนมีพร้อมใช้งานการเปลี่ยนแปลงลักษณะการทำงานของสิทธิ์การเข้าถึงกล่องจดหมายทั้งหมดใน Exchange 2000 Server
  • คุณกำลังเรียกใช้ Microsoft Exchange Server 2003 SP1 ร่วมกับรุ่นของแฟ้มเป็น Store.exe ซึ่งเท่ากับ หรือหลังจากรุ่น 7233.51
  • คุณใช้ Exchange Server 2003 SP2 ร่วมกับ Store.exe กับรุ่นของแฟ้มที่ไม่เท่ากับ หรือหลังจากรุ่น 7650.23 รุ่น 7650.23 ก่อนทำการมีอยู่ในบทความฐานความรู้ของ Microsoft ต่อไปนี้:
    895949“Send As” permission behavior change in Exchange 2003
    This change is not included with Exchange Server 2003 SP2. If you have been running the Exchange Server 2003 SP1 version of the Store.exe file that includes this change, and you upgrade to Exchange Server 2003 SP2, you must install the SP2 version of this hotfix to retain the new behavior. This change will be included in Microsoft Exchange Server 2003 SP3.
SECURITY CONCERNS
Before the Store.exe file versions that are listed in the "Cause" section, granting the Full Mailbox Access permission implicitly granted permission to send as the mailbox owner. This meant that another account that has the Full Mailbox Access permission could send e-mail messages that appeared as if they were sent by the mailbox owner.

Many Microsoft Exchange customers have requested that the Send As permission be separated from the Full Mailbox Access permission for the following two reasons:
  • To deter e-mail spoofing.
  • To make sure that e-mail messages that are sent by a delegate can always be clearly distinguished from e-mail messages that are sent by the actual mailbox owner.
All new versions of the Exchange store will now explicitly require the Send As permission to send e-mail messages as the mailbox owner. However, the following lists the three exceptions to this requirement:
  • The mailbox owner account does not require explicit Send As permissions for its own mailbox.
  • The Associated External Account for a mailbox does not require explicit Send As permissions.
  • A delegate account that also has the Full Mailbox Access permission does not require explicit Send As permissions.
For more information about these exceptions, see the "More Information" section.
การแก้ไข
All accounts that are granted partial or full access to a mailbox, except those mentioned in the "Cause" section, must now be explicitly granted the Send As permission for the mailbox owner account in order to send mail as the mailbox owner. This includes application service accounts that perform functions such as sending e-mail messages for mobile device users.

The Send As permission applies to the identity of an Active Directory user object, not to mailbox contents that are stored in a database. Therefore, the Send As permission must be granted to the service account on each user object that owns a mailbox. When e-mail messages are sent, they are not sent from a particular mailbox or database, but from a user. The user may be the mailbox owner or any other account that has the Send As permission.

You cannot grant the Send As permission on a server that is running Exchange Server or on a database object and achieve the effect of granting the Send As permission for all mailboxes in the database. Granting the Send As permission on an Exchange database object gives you permission to the database itself. The permission is inherited by all mailboxes in the database. However, it does not give you permission to the users who have Send As permissions and who have mailboxes in the database.

หมายเหตุ:Granting the Receive As permission on an Exchange database is the functional equivalent of granting the Full Mailbox Access permission to all mailboxes in the database. This differs from the behavior of the Send As permission.

How to grant the Send As permissions for one account

To explicitly grant another account permission to send as a mailbox owner, follow these steps:
  1. Start the Active Directory Users and Computers management console.
  2. ในการมุมมองmenu, make sure that theคุณลักษณะขั้นสูงเลือกตัวเลือก If this option is not selected, the Security page will not be visible for User account objects.
  3. Open the properties of the user account that owns the mailbox.
  4. คลิกการการรักษาความปลอดภัยแท็บ
  5. If the account is not already in the list of group or user names, add the account that should have the Send As permission for this user.
  6. ในการPermissions:กล่อง คลิกการAllow for the "Send As"permission for the appropriate account.
  7. คลิกตกลง.
  8. Restart the Microsoft Exchange Information Store service on the affected Exchange server.
หมายเหตุ:If you do not restart the Microsoft Exchange Information Store service, the Microsoft Exchange Information Store service will update its permissions cache to make the new permissions take effect according to the value that is set in the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem

Value name: Mailbox Cache Age Limit
ค่าชนิด: REG_DWORD
Radix: Decimal
ข้อมูลค่า::The mailbox information cache age limit in minutes.
The default value for this registry entry is 120 minutes (two hours). If you modify this registry entry, you must restart the Microsoft Exchange Information Store service.

หมายเหตุ:If you set the time-out values to a very low value, you may affect the performance of the server.

How to grant the Send As permission for multiple accounts

สคริปต์ตัวอย่างนี้ให้ไว้ในตอนท้ายของบทความนี้จะค้นหามีโดเมนของบริการไดเรกทอรีที่ใช้งานอยู่สำหรับบัญชีที่มีสิทธิ์ในการเข้าถึงกล่องจดหมายทั้งหมด โดยไม่มีการส่งเป็นสิทธิ์สำหรับกล่องจดหมาย นี่คือลักษณะของบัญชีบริการหรือทรัพยากรที่จะได้รับผลจากการเปลี่ยนแปลงการรักษาความปลอดภัยนี้ สคริปต์สามารถสร้างแฟ้มการส่งออกที่คุณสามารถตรวจทาน แก้ไข และนำเข้าอีกครั้งเพื่อให้สิทธิ์ส่งเป็นบัญชีที่ต้องให้สิทธิ์นี้แล้ว

คุณยังสามารถให้สิทธิ์ในการส่งเป็นตามสิ่งที่สืบทอดบนวัตถุผู้ใช้ทั้งหมด ในโดเมน Active Directory หรือเป็นคอนเทนเนอร์ ถ้าคุณอนุญาตให้สิทธิ์ในการส่งเป็น ด้วยวิธีการนี้ คุณอาจให้สิทธิ์สำหรับวัตถุที่คุณไม่ได้ตั้งใจ นอกจากนี้ คุณอาจสูญเสียสิทธิ์สำหรับออบเจ็กต์ที่เคลื่อนย้ายจากคอนเทนเนอร์ ดังนั้น วิธีการนี้ไม่ต้องการ และอาจเกี่ยวข้องด้านการรักษาความปลอดภัยที่ควรอย่างรอบคอบพิจารณาก่อนที่คุณนำมาใช้

ถ้าคุณอนุญาตให้ส่งเป็นการอนุญาต โดยใช้วิธีนี้ บัญชีที่มีการส่งเป็นสิทธิ์ที่สืบทอดจะกลาย invisible กับสคริปต์ที่อ้างถึงส่วนท้ายของบทความ การประมวลผลบัญชีเหล่านี้ โดยใช้สคริปต์ ณวันที่ในภายหลัง คุณต้องเอาสิทธิ์ในการเข้าส่งเป็นสืบทอดมาก่อน

เมื่อต้องการให้สิทธิการส่งเป็นสิทธิ์สำหรับบัญชีบนบัญชีผู้ใช้ทั้งหมดในโดเมน Active Directory หรือคอนเทนเนอร์เดียว โดยใช้สิ่งที่สืบทอด ดำเนินการดังต่อไปนี้:
  1. เริ่มคอนโซลการจัดการผู้ใช้ของไดเรกทอรีที่ใช้งานอยู่และคอมพิวเตอร์
  2. ในการมุมมองเมนู ตรวจสอบให้แน่ใจว่าการคุณลักษณะขั้นสูงเลือกตัวเลือก ถ้าไม่ได้เลือกตัวเลือกนี้ หน้าที่การรักษาความปลอดภัยจะไม่ปรากฏสำหรับโดเมนและคอนเทนเนอร์วัตถุ
  3. เปิดคุณสมบัติของโดเมนหรือคอนเทนเนอร์ และจากนั้น คลิกหน้าการรักษาความปลอดภัย
  4. คลิกขั้นสูง.
  5. ถ้าบัญชีผู้ใช้ที่ต้องการอนุญาตจากไม่มีอยู่แล้วอยู่ คลิกaddแล้ว เลือกบัญชีผู้ใช้ ดับมิฉะนั้น เบิลคลิกที่บัญชีสำหรับการแก้ไข
  6. ในการนำไปใช้กับรายการ คลิกวัตถุผู้ใช้.
  7. อนุญาตการส่งเป็นการอนุญาตของบัญชี
  8. คลิกตกลงจนกระทั่งคุณได้ exited และบันทึกการเปลี่ยนแปลงทั้งหมด

กฎพิเศษสำหรับ adminSDHolder บัญชีที่มีป้องกัน

ถ้าคุณใช้สคริปต์การให้สิทธิการส่งเป็นสิทธิ์สำหรับเจ้าของกล่องจดหมายที่ยังเป็นผู้ดูแลโดเมน ส่งเป็นสิทธิ์จะไม่มีผลบังคับใช้ เราขอแนะนำเปิดการใช้ที่ คุณไม่กล่องจดหมายงานบัญชีผู้ใช้ที่ได้รับสิทธิ์ของผู้ดูแลโดเมน หรือที่มี adminSDHolder ที่ได้รับการป้องกัน

กระบวนการadminSDHolderวัตถุเป็นแม่แบบสำหรับบัญชีที่มีสิทธิ์ในการดูแลของ Active Directory อย่างกว้าง เพื่อป้องกันการยกระดับสิทธิ์เกินของ privileges บัญชีที่ได้รับการป้องกันโดยการadminSDHolderวัตถุต้องมีสิทธิ์ที่ตรงกับที่อยู่ในนั้นadminSDHolderวัตถุตัวเอง

ถ้าคุณเปลี่ยนสิทธิหรือสิทธิในการadminSDHolderวัตถุสำหรับบัญชีได้รับการป้องกัน งานพื้นหลังจะเลิกทำการเปลี่ยนแปลงภายในหลายนาที ยกตัวอย่างเช่น ถ้าคุณอนุญาตการส่งเป็นสิทธิ์บนวัตถุผู้ดูแลโดเมนสำหรับบัญชีผู้ใช้การบริการโปรแกรมประยุกต์ งานพื้นหลังจะอัตโนมัติเลิกสิทธิ์

ดังนั้น คุณไม่อนุญาตการส่งเป็นสิทธิ์การใช้บัญชีบริการแอพลิเคชันสำหรับบัญชีผู้ใช้ที่ได้รับการป้องกันโดยการadminSDHolderวัตถุเว้นแต่ว่าคุณได้เปลี่ยนแปลงนั้นadminSDHolderวัตถุตัวเอง ถ้าคุณเปลี่ยนแปลงนั้นadminSDHolderต้องการเปลี่ยนแปลงวัตถุ สิทธิ์การเข้าถึงสำหรับบัญชีทั้งหมดที่ได้รับการป้องกัน คุณควรเปลี่ยนแปลงเฉพาะadminSDHolderวัตถุหลังจากการตรวจทานที่สมบูรณ์ของเกี่ยวข้องด้านความปลอดภัยที่อาจเกิดขึ้นกับการเปลี่ยนแปลง

การเชื่อมโยงกล่องจดหมายที่ มีบัญชีผู้ใช้ที่ได้รับการป้องกันโดยการadminSDHolderวัตถุ ทำตามขั้นตอนเหล่านี้:
  1. เริ่มคอนโซลการจัดการผู้ใช้ของไดเรกทอรีที่ใช้งานอยู่และคอมพิวเตอร์
  2. ในการมุมมองเมนู ตรวจสอบให้แน่ใจว่าการคุณลักษณะขั้นสูงเลือกตัวเลือก ถ้าไม่ได้เลือกตัวเลือกนี้ หน้าที่การรักษาความปลอดภัยจะไม่ปรากฏสำหรับออบเจ็กต์ที่บัญชีผู้ใช้
  3. สร้างบัญชีผู้ใช้ทั่วไปที่ทำหน้าที่เป็นเจ้าของกล่องจดหมาย
  4. กำหนดบัญชีผู้ใช้ที่ธรรมดากล่องจดหมายในการแลกเปลี่ยนเซิร์ฟเวอร์
  5. เปิดคุณสมบัติของเจ้าของบัญชีใหม่ของกล่องจดหมาย
  6. ในการการแลกเปลี่ยนขั้นสูงกล่อง ให้สิทธิ์ในการเข้าถึงกล่องจดหมายทั้งหมดไปยังบัญชีผู้ดูแลที่ได้รับการป้องกัน
  7. ในหน้าการรักษาความปลอดภัย ให้สิทธิการส่งเป็นสิทธิ์ให้กับบัญชีผู้ดูแลที่ได้รับการป้องกัน
  8. คลิกตกลงเมื่อต้องการออกจากคุณสมบัติของวัตถุของเจ้าของกล่องจดหมาย
  9. คลิกขวาวัตถุบัญชีเจ้าของกล่องจดหมาย และจากนั้น คลิกปิดการใช้งานบัญชีการปิดบัญชีสำหรับ logons ทั้งหมด
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับป้องกันการ adminSDHolder บัญชี คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
907434"ส่งเป็น" ขวาถูกเอาออกจากวัตถุที่ผู้ใช้หลังจากที่คุณได้กำหนดค่า "ส่งเป็น" ขวาในผู้ใช้ของไดเรกทอรีที่ใช้งานอยู่และคอมพิวเตอร์ลสแนปใน Exchange Server
318180มีผลต่อเธรด AdminSDHolder transitive สมาชิกของกลุ่มการแจกจ่าย
817433สิทธิ์ delegated ไม่พร้อมใช้งาน และสิ่งที่สืบทอดถูกปิดการใช้งานโดยอัตโนมัติ
306398AdminSDHolder object affects delegation of control for past administrator accounts

Special tasks for BlackBerry Enterprise Server

Task 1: Make sure that the BlackBerry Enterprise Server is running as a separate, unique account

Make sure that the BlackBerry Enterprise Server is running as a separate account that is specifically created for administrative tasks. By default, this account is called "BESAdmin."

If you have a separate account for administering the BlackBerry Enterprise Server, go to task 2.

If you do not have a separate account, create a separate account. Then, use this account to perform administrative tasks. For instructions about how to do this, visit one of the following BlackBerry Web sites, depending on the version of BlackBerry Enterprise Server that you are running.
BlackBerry Enterprise Server 4.0 or BlackBerry Enterprise Server 4.1
If you are running BlackBerry Enterprise Server 4.0 or BlackBerry Enterprise Server 4.1, see the BlackBerry Enterprise Server Installation Guide. To obtain this guide, click the following BlackBerry link:
BlackBerry Enterprise Server 3.6
If you are running BlackBerry Enterprise Server 3.6, see the BlackBerry Enterprise Server 2000/2003 Installation and Getting Started Guide. To obtain this guide, click the following BlackBerry link:

Task 2: Make sure that the BlackBerry Enterprise Server service account has the appropriate permissions

Verify that the BlackBerry Enterprise Server service account has the appropriate permissions.

หมายเหตุ:If the account is in a domain, make sure that the account is a member of only the Domain Users group. On a domain controller, the account should be member of the Built-in Administrators group.
  1. On the BlackBerry Enterprise Server, follow these steps:
    1. Make sure that the account is a member of the Local Administrators group.
    2. Assign "Log on Locally" and "Log on as a Service" permissions to the account.
  2. Grant Exchange View-Only Administrator permissions at the administrative group level. โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. In Exchange System Manager, right-click the first Exchange Server administrative group name, and then clickDelegate Control.
    2. Notice that the BlackBerry Enterprise Server service account is listed as having the role of Exchange View-Only Administrator.
  3. Grant "Send As," "Receive As," and "Administer Information Store" permissions at the server level for each Exchange server. โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. In Exchange System Manager, right-click the first Exchange Server administrative group name, and then expand theเซิร์ฟเวอร์กลุ่ม
    2. Right-click an Exchange server, clickคุณสมบัติแล้ว คลิกการรักษาความปลอดภัย.
    3. ในบานหน้าต่างด้านบนสุด เลือกองค์กร BlackBerry บัญชีบริการของเซิร์ฟเวอร์ ในบานหน้าต่างด้านล่าง ตรวจสอบให้แน่ใจว่า การ "ส่งเป็น "รับเป็น" และ"จัดเก็บข้อมูล Administer"สิทธิ์ถูกกำหนดเป็นอนุญาตให้.
    4. ทำซ้ำขั้นตอน 3b และ 3 c สำหรับแต่ละ Exchange เซิร์ฟเวอร์
  4. ให้สิทธิ์ "ส่งเป็น "ที่ได้รับเป็น" และเก็บการ"จัดดูแลข้อมูลเก็บ"สิทธิ์ไปยังกล่องจดหมาย โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. คลิกขวาชื่อกลุ่มผู้ดูแลระบบ Exchange แรก ใน Exchange System Manager และขยายแล้ว นี้เซิร์ฟเวอร์กลุ่ม
    2. ขยายกลุ่มการจัดเก็บกล่องจดหมายแรก ให้คลิกขวาที่เก็บกล่องจดหมายแต่ละ คลิกคุณสมบัติแล้ว คลิกการรักษาความปลอดภัย.
    3. ในบานหน้าต่างด้านบนสุด เลือกองค์กร BlackBerry บัญชีบริการของเซิร์ฟเวอร์ ในบานหน้าต่างด้านล่าง ตรวจสอบให้แน่ใจว่า การ "ส่งเป็น "รับเป็น" และ"จัดเก็บข้อมูล Administer"สิทธิ์ถูกกำหนดเป็นอนุญาตให้.
    4. ทำซ้ำขั้นตอน 4b และ 4 c สำหรับแต่ละเก็บกล่องจดหมายบนแต่ละเซิร์ฟเวอร์ Exchange
  5. ในที่ผู้ใช้ของไดเรกทอรีที่ใช้งานอยู่และคอมพิวเตอร์สแนปอิน ดำเนินการดังต่อไปนี้:
    1. คลิกขวาที่ผู้ใช้ที่คุณต้อง การเพิ่มสิทธิ์สำหรับ แล้ว คลิกคุณสมบัติ.
    2. ในการการรักษาความปลอดภัยแท็บ เพิ่มบัญชีบริการ Server องค์กร BlackBerry และคลิกเพื่อเลือกนั้นส่งเป็นกล่องกาเครื่องหมาย
ถ้าคุณไม่ได้ใช้ Exchange Server 2003 ดูงาน 3

งานที่ 3: ล้างแคชบนเซิร์ฟเวอร์ขององค์กร BlackBerry

เมื่อต้องการล้างแคชสิทธิ์ในการเก็บ Exchange เริ่มต้นบริการที่เกี่ยวข้อง Blackberry แล้ว เริ่มการเก็บข้อมูล Exchange ของ Microsoft หลังจากที่คุณเริ่มต้นเก็บ Exchange คุณต้องเริ่มต้นบริการ Blackberry RIM เกี่ยวข้องกับการอนุญาตให้บัญชี "BESAdmin" ส่งเพิ่มเข้าไปใหม่เป็นสิทธิ์ในการเก็บ Exchange
ข้อมูลเพิ่มเติม
แลกเปลี่ยนกล่องจดหมายและโฟลเดอร์การเข้าถึงสิทธิ์ถูกแบ่งระหว่างฐานข้อมูล Active Directory และ Microsoft Exchange อย่างไรก็ตาม ทั้งสองประเภทของสิทธิ์ถูกกำหนดในคอนโซลการจัดการผู้ใช้ Active Directory แต่สิทธิ์ที่แตกต่างกันจะถูกเก็บไว้ในตำแหน่งที่ตั้งที่แยกต่างหากสอง

โดยทั่วไป ถ้าสิทธิ์ที่กำหนดไว้บนหน้าการรักษาความปลอดภัยสำหรับวัตถุ ได้มีสิทธิ์ในไดเรกทอรีที่ใช้งานอยู่ ถ้ามีการตั้งค่าในการแลกเปลี่ยนขั้นสูงกล่องจดหมายสิทธิ์หน้า จะมีสิทธิ์ของฐานข้อมูล Exchange

กระบวนการmsExchMailboxSecurityDescriptorแอตทริบิวต์ไดเรกทอรีที่ใช้งานอยู่คือ สำเนาสำรองของชุดย่อยของสิทธิ์ของกล่องจดหมายที่มีผลบังคับใช้ ซึ่งถูกใช้ภายใน โดยการแลกเปลี่ยนสำหรับวัตถุประสงค์ต่าง ๆ นอกจากนี้msExchMailboxSecurityDescriptorแอตทริบิวต์มีการปรับปรุงให้ตรงกับสิทธิ์การใช้งานปัจจุบันหากผู้ดูแลระบบใช้อินเทอร์เฟซที่ได้รับการสนับสนุนการกำหนดสิทธิ อย่างไรก็ตาม ถ้าการmsExchMailboxSecurityDescriptorแอตทริบิวต์ที่ถูกปรับเปลี่ยน โดยผู้ดูแลโดยตรง การเปลี่ยนแปลงจะไม่แพร่กระจายไปยังเก็บ Exchange และเปลี่ยนแปลงจะไม่มีผล ไม่ได้ถูกมีมีการซิงโครไนส์กับสิทธิ์ของกล่องจดหมายที่แท้จริง คุณไม่ควรใช้การmsExchMailboxSecurityDescriptorแอตทริบิวต์การอ่าน หรือเขียนสิทธิ์กล่องจดหมาย
สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
310866วิธีการตั้งค่าสิทธิ์ของกล่องจดหมายของ Exchange Server 2003 และ Exchange 2000 Server ในกล่องจดหมายที่มีอยู่ในเก็บข้อมูล

สิทธิ์การเข้าถึงกล่องจดหมายทั้งหมดไม่มีสิทธิ์ในการจัดเก็บฐานข้อมูล Exchange อนุญาตการส่งเป็นไม่มีสิทธิ์ในไดเรกทอรีที่ใช้งานอยู่ ก่อนที่จะแลกเปลี่ยน Store.exe ที่เปลี่ยนแปลงของแฟ้มที่ได้อธิบายไว้ในบทความนี้ ระบบ Exchange จึงไม่ดูการตั้งค่าสำหรับสิทธิ์ในการส่งเป็นถ้า ผู้ส่งอยู่มีการเข้าถึงกล่องจดหมายทั้งหมดอนุญาต

การรวมแบบส่งเป็นสิทธิ์ด้วยสิทธิ์แบบเต็มรูปแบบการเข้าถึงกล่องจดหมายได้เปิดใช้งานผู้ดูแลของเซิร์ฟเวอร์ Exchange การให้สิทธิ์การเข้าส่งเป็นอย่างมีประสิทธิภาพสำหรับกล่องจดหมายใด ๆ บนเซิร์ฟเวอร์ที่ผู้ดูแลตัวเอง โดย separating ส่งเป็นสิทธิ์จากสิทธิ์การเข้าถึงกล่องจดหมายทั้งหมด ผู้ดูแล Active Directory สามารถเดี๋ยวนี้บล็อกกระบวนการนี้ได้เนื่องจากการส่งเป็นการอนุญาตไม่มีสิทธิ์ในไดเรกทอรีที่ใช้งานอยู่และไม่มี Exchange เก็บสิทธิ์ ดังนั้น กระบวนการไม่จำเป็นต้องเป็นภายใต้การควบคุมของผู้ดูแลระบบ Exchange

เจ้าของกล่องจดหมาย

เจ้าของกล่องจดหมายที่ถูกกำหนดเป็นบัญชีผู้ใช้ Active Directory whosemsExchMailboxGUIDแอตทริบิวต์ปฏิบัติรหัสไม่ซ้ำกัน (GUID) สำหรับกล่องจดหมายที่เฉพาะ บัญชีเดียวเท่านั้นในฟอเรสต์ทั้งหมดจะได้รับอนุญาตเพียง GUID สำหรับกล่องจดหมายที่เฉพาะ ถ้าคุณพยายามที่จะกำหนดเจ้าของที่สอง ด้วย GUID ที่เดียวกัน Active Directory จะปฏิเสธการเปลี่ยนแปลง ด้วยข้อผิดพลาด

เมื่อเปิดใช้คุณกล่องจดหมายงานบัญชีผู้ใช้หรือเมื่อคุณเชื่อมต่อกล่องจดหมายที่ต่อกับบัญชีผู้ใช้ Active Directory กล่องจดหมาย GUID ถูกกำหนดโดยอัตโนมัติบนบัญชีนั้น จะไม่ค่อยจำเป็น หรือแนะนำสำหรับผู้ดูแลเพื่อตั้งค่า guid ของกล่องจดหมายโดยตรง

บัญชีภายนอกที่เกี่ยวข้อง

การกำหนดค่าการแลกเปลี่ยนทั่วไปคือการ ติดตั้ง Exchange ในฟอเรสต์ทรัพยากร ฟอเรสต์ทรัพยากรอยู่ในฟอเรสต์ในฟอเรสต์อื่นจากบัญชีผู้ใช้ที่จะมีกล่องจดหมายในระบบ This presents a problem because themsExchMailboxGUIDattribute can only be set on objects in the same forest as the Exchange server.

The solution to this problem is to mailbox-enable an account in the Exchange server forest. Then, you link this mailbox-enabled account to one in another forest or in a Microsoft Windows NT 4 domain. You can do this by granting the Associated External Account permission. Only a single account can be granted the Associated External Account permission. The account that is selected must be from a different forest.

When you set the Associated External Account permission, you are writing the SID value for the external account to themsExchMasterAccountSIDattribute of the mailbox owner. Therefore, this is not a permission at all, but a convenient way to control the value of themsExchMasterAccountSIDแอตทริบิวต์ หลังจากmsExchMasterAccountSIDattribute has been set, the external account that owns the SID will be granted Exchange access as if it were the actual mailbox owner account.

หมายเหตุ:This applies only to Exchange access, not to all Active Directory access. Additionally, you should mark the mailbox owner account as Disabled for logons after you set the Associated External Account permission so that all permissions work as expected.
สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
300456Client permissions and delegations do not persist after being assigned in Exchange 2000

Delegation scenarios

A delegate is a user who has been granted partial access to another mailbox and the right to send e-mail messages on behalf of that mailbox owner. A common delegation scenario is to grant delegate access to an administrative assistant for an executive's calendar. The delegate can typically read and update the calendar. Additionally, the delegate can reply to any e-mail messages on behalf of the executive.

You can use the following two interfaces to grant the Send on Behalf Of and delegate permissions:
  • On the mailbox owner object, grant the Send on Behalf Of permission in the Exchange General dialog box.
  • In Microsoft Office Outlook, use theDelegatesกล่องโต้ตอบ
Both these methods set thepublicDelegatesattribute of the mailbox. All users who are listed in this attribute have the Send on Behalf Of permission for the mailbox owner. When such delegates send an e-mail message that has the owner's name in theจากbox, the e-mail message is sent from the delegate and not from or as the mailbox owner. The e-mail message'sจากbox displays the following value:
Delegate's Name> on behalf ofMailbox Owner>
In some cases, you may be unable to set thepublicDelegatesattribute in Outlook.สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
329622"ส่งในนาม" อนุญาตจะไม่กำหนดให้กับผู้ใช้หลังจากที่คุณการมอบหมายต่อการเข้าถึงใน Outlook

ถ้าคุณอนุญาตให้ผู้รับมอบสิทธิ์ในการเข้าถึงไปยังกล่องจดหมายของคุณ ผู้รับมอบสิทธิ์สามารถใช้ส่งในนามของสิทธิ์แม้ว่าคุณไม่ให้เข้ากับหนึ่งโฟลเดอร์กล่องจดหมายของคุณ สิทธิ์ fundamental ที่มีผู้รับมอบสิทธิ์ถูกส่งในนามของสิทธิ์ สิทธิ์การเข้าถึงโฟลเดอร์กล่องจดหมายของคุณแยกต่างหาก และต้องได้รับนอกเหนือจากการการมอบหมายสิทธิ์ โดยทั่วไป ผู้รับมอบสิทธิ์จะใช้ Outlook เพื่อเข้าถึงโฟลเดอร์แต่ละที่ที่คุณได้กำหนดให้สิทธิ์ เมื่อต้องการทำเช่นนี้ คลิกOPENในการแฟ้ม:เมนูใน Outlook แล้วคลิกโฟลเดอร์ของผู้ใช้อื่น.

อีกวิธีหนึ่งคือ ผู้รับมอบสิทธิ์สามารถเปิดกล่องจดหมายของคุณ โดยการแสดงรายการเป็นกล่องจดหมายเพิ่มเติมในการขั้นสูงแท็บของส่วนกำหนดค่า Outlook ของพวกเขา วิธีนี้ทำให้กล่องจดหมายของคุณจะปรากฏในแผนภูมิของโฟลเดอร์ Outlook ของผู้รับมอบสิทธิ์ นอกจากนี้ วิธีนี้ช่วยให้การเข้าถึงโฟลเดอร์ทั้งหมดในกล่องจดหมายของคุณซึ่งเป็นผู้รับมอบสิทธิ์ได้รับอนุญาตให้สิทธิ์

คุณอาจต้องการผู้รับมอบสิทธิ์ของคุณเพื่อให้ส่งในนามของสิทธิ์ และในบางครั้งมีสิทธิ์ในการส่งเป็นบางครั้ง การกำหนดค่าผู้รับมอบสิทธิ์ที่ มีสิทธิ์เหล่านี้สอง ดำเนินการดังต่อไปนี้:
  • อนุญาตให้ผู้รับมอบสิทธิ์อนุญาตการเข้าถึงกล่องจดหมายทั้งหมด ซึ่งไม่สามารถทำผ่าน Outlook แทน Active Directory ผู้ดูแลต้องทำในบัญชีเจ้าของกล่องจดหมาย แม้ว่าคุณสิทธิ์เจ้าของบนทุก ๆ โฟลเดอร์ในกล่องจดหมายของคุณ ที่ไม่ได้รับสิทธิ์เดียวกันเป็นสิทธิ์การเข้าถึงกล่องจดหมายทั้งหมด
  • ไม่ให้ผู้รับมอบสิทธิ์อนุญาตการส่งเป็น ถ้าคุณอนุญาตผู้รับมอบสิทธิ์อนุญาตการส่งเป็น ข้อความอีเมล์ทั้งหมดที่ถูกส่ง โดยผู้รับมอบสิทธิ์จะสามารถทำกับสิทธิ์การส่งเป็น ผู้รับมอบสิทธิ์จะไม่สามารถส่งในนามของสิทธิ์ใช้
ในสถานการณ์สมมตินี้ ผู้รับมอบสิทธิ์ที่ต้องการส่งในนามของสิทธิ์ใช้ ควรล็อกอินไปยังกล่องจดหมายของตนเอง ถ้าผู้รับมอบสิทธิ์ถูกตอบกลับ หรือส่งต่อข้อความอีเมล์ที่มีอยู่ในโฟลเดอร์ของคุณอย่างใดอย่างหนึ่ง ข้อความอีเมลที่จะอัตโนมัติถูกส่งในนามของคุณ ถ้าผู้รับมอบสิทธิ์สร้างข้อความอีเมลใหม่ในนามของคุณ เหล่านั้นต้องใส่ชื่อของคุณในการจากกล่องข้อความอีเมล์ที่ส่งในนามของคุณ

คำนึงถึงว่าผู้รับมอบสิทธิ์มีเปิดโฟลเดอร์ของคุณหรือกล่องจดหมายของคุณทั้งหมดเป็นกล่องจดหมายที่รอง ข้อความอีเมล์ทั้งหมดที่พวกเขาส่งจากที่คุณจะใช้ส่งในนามของสิทธิ์ตราบเท่าที่กล่องจดหมายของตนเองเป็นกล่องจดหมายหลักสำหรับส่วนกำหนดค่า Outlook ปัจจุบัน

เมื่อผู้รับมอบสิทธิ์ที่ต้องการส่งข้อความอีเมลเมื่อคุณ เหล่านั้นควรล็อกอินไปยังกล่องจดหมายของคุณได้ โดยใช้โปรไฟล์ Outlook แยกต่างหากที่เปิดเท่านั้นกล่องจดหมายของคุณ อีเมลข้อความที่ส่งผู้รับมอบสิทธิ์ในขณะที่พวกเขาเข้าสู่ระบบไปยังส่วนกำหนดค่านี้จะถูกส่งไปจากคุณโดยอัตโนมัติ

การค้นหาบัญชีที่มีสิทธิ์ในการเข้าถึงกล่องจดหมายทั้งหมด โดยไม่มีสิทธิ์ในการส่งเป็น

สคริปต์ตัวอย่างที่อธิบายไว้ในส่วนนี้สามารถค้นหาโดเมน Active Directory หนึ่งครั้งสำหรับบัญชีผู้ใช้ที่สิทธิ์การเข้าถึงกล่องจดหมายทั้งหมดได้รับอนุญาตให้ไปกล่องจดหมายโดยไม่มีสิทธิ์ในการส่งเป็น

สิ่งสำคัญก่อนที่คุณเปลี่ยนแปลงสิทธิ์ ดู "เกี่ยวกับเจ้าของกล่องจดหมายที่มีผู้รับมอบสิทธิ์"ส่วน

สคริปต์มีวิธีการสามแบบต่อไปนี้:
  • ส่งออกคุณสามารถแสดงรายการของผู้ใช้ที่มีการเข้าถึงกล่องจดหมายทั้งหมดสิทธิ์แต่ไม่ส่งเป็นสิทธิ์ได้ คุณสามารถตรวจสอบรายการนี้ใน Notepad หรือโปรแกรมแก้ไขอื่นบัญชีใดที่คุณต้องการไม่มีสิทธิ์ในการส่งเป็น การเอาออกแล้ว
  • นำเข้าคุณสามารถนำเข้ารายชื่อของผู้ใช้ที่มีการเข้าถึงกล่องจดหมายทั้งหมดที่อนุญาตการส่งเป็นควรจะได้รับการอนุญาตได้ โปรดสังเกตว่า คุณไม่สามารถใช้สคริปต์นี้เพื่อให้สิทธิ์การเข้าถึงกล่องจดหมายทั้งหมดและสิทธิ์ในการส่งเป็น แต่ละบัญชีต้องมีการเข้าถึงกล่องจดหมายทั้งหมดสิทธิ์ในการได้รับสิทธิ์ในการส่งเป็น
  • SetAllคุณสามารถให้สิทธิ์ในการส่งเป็นผู้ใช้ทั้งหมดในโดเมนที่มีสิทธิ์ในการเข้าถึงกล่องจดหมายทั้งหมดสำหรับกล่องจดหมายที่เฉพาะ แฟ้มบันทึกจะถูกสร้างขึ้นในรูปแบบเดียวกันกับแฟ้มส่งออก นี่คือเท่ากับการใช้งานโหมดการส่งออกและนำเข้าโดยไม่ต้องการแก้ไขไฟล์การส่งออก
หมายเหตุ:ไม่มีฟังก์ชันยกเลิกในสคริปต์นี้

สิทธิ์ที่จำเป็นสำหรับสคริปต์

คุณต้องรันสคริปต์ในขณะที่คุณเข้าสู่ระบบ ด้วยบัญชีผู้ดูแลที่มาจากฟอเรสต์เดียวกันที่บัญชีของเจ้าของกล่องจดหมายมาจาก สคริปต์อาจไม่ทำงานกับบัญชีผู้ใช้ที่มีสิทธิ์ระดับผู้ดูแลของฟอเรสต์ซึ่งกันและกัน สคริปต์อาจจะไม่ทำงานเมื่อคุณเรียกใช้จากเวิร์กสเตชันที่ไม่ได้เป็นสมาชิกของฟอเรสต์อื่นนอกเหนือจากฟอเรสต์ซึ่งมีการเชื่อมต่อบัญชีของเจ้าของกล่องจดหมาย

Given these conditions, you can run the script with multiple administrative accounts in a single logon session by using theRunAs.exeคำสั่ง This procedure may be useful if you have segmented Active Directory and Exchange Server permissions, and you have no single account that can administer all Exchange servers or all Active Directory domains. You can open a command prompt to run the script as each administrative account. ให้พิจารณาตัวอย่างต่อไปนี้:
RunAs.exe /user:domain\account CMD.EXE
หมายเหตุ:You should not run multiple copies of the script at the same time against the same domain.

The fields in the export file are as follows. The fields are described in the order in which they are presented in the export file.
  • Display name of the mailbox owner account

    There may be more than one line in the output file that lists the same mailbox owner. This behavior occurs when multiple other accounts have Full Mailbox Access permissions to the same mailbox.
  • Domain and logon name of an account that has the Full Mailbox Access permissions but not the Send As permission

    The same account may appear multiple times throughout the export file when the account has access to multiple mailboxes. This is likely to be the case for an application service account or for a person who manages multiple resource mailboxes.
  • Display Name of an account that has the Full Mailbox Access permission but not the Send As permission

    This field is provided in addition to theLogon Namefield to make it easier for you to identify the account.
  • Delegate Status of the mailbox owner

    If the mailbox owner has delegates, the field value isHas Delegates. If the mailbox owner has no delegates, the field value isNo Delegates.
  • Enabled or disabled status of the mailbox owner account

    This field is useful when you want to identify resource accounts or cross-forest mailbox accounts. Typically, these accounts are disabled.
  • Full Distinguished Name of the mailbox owner account

    This field is useful when you want to identify the domain and the container of the mailbox owner account.
  • Full Distinguished Name of the mailbox owner's mailbox database

    This field includes the database, the storage group, the server, and the administrative group for the mailbox.
In the following example, the user who has the logon name "NoSendAs" has the Full Mailbox Access permission but not the Send As permission for the "Mailbox Owner" mailbox:
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [additional fields omitted]

Administrative workstation configuration for the script

This script uses Exchange management interfaces to communicate with Exchange servers. Therefore, this script must be run from an Exchange server or from a workstation with Exchange System Administrator installed.

Editing the export file

The export file is formatted as Unicode plain text so that character sets from multiple languages can be accommodated. Some text editors may be unable to correctly view or edit the file or may save the file as ANSI or ASCII text. The Notepad utility for Windows Server 2003, Windows XP, and Microsoft Windows 2000 can correctly handle Unicode text files. Additionally, Microsoft Office Excel can correctly handle Unicode text files.

The output file is in a tab-delimited format with triple quotation marks around the values for each field. The triple quotation marks are used to make importing and exporting from Excel more deterministic. In Excel, the triple quotation marks will become single quotation marks, and will revert to triple quotation marks when the file is saved again as Unicode text. See the following instructions to correctly open and save an export file in Excel.

นอกจากนี้คุณสามารถกรองไฟล์การส่งออกโดยไม่ใช้ Excel โดยใช้โปรแกรมอรรถประโยชน์ Find.exe หรือโปรแกรมอรรถประโยชน์ Findstr.exe โปรแกรมอรรถประโยชน์เหล่านี้มีอยู่ใน Windows จะช่วยให้คุณค้นหาคำในแฟ้ม และแสดงเฉพาะบรรทัดที่ประกอบด้วยคำเหล่านั้นหรือเฉพาะบรรทัดที่ไม่ประกอบด้วยคำเหล่านั้น ตัวอย่างเช่น ถ้าคุณต้องการตรวจสอบรายการในแฟ้มของเจ้าของกล่องจดหมายทั้งหมดที่มีผู้รับมอบสิทธิ์ ใช้อย่างใดอย่างหนึ่งคำสั่งเหล่านี้เพื่อสร้างแฟ้มที่ประกอบด้วยเฉพาะบรรทัดที่ มีสตริงที่ "ผู้รับมอบมีสิทธิ์":
Find.exe "มีผู้รับมอบสิทธิ์" OriginalFile.txt > HasDelegates.txt

Findstr.exe /C: "มีผู้รับมอบสิทธิ์" OriginalFile.txt > HasDelegates.txt
เป็นอย่างอื่น สมมติว่า คุณกรองข้อมูลออกจากเจ้าของกล่องจดหมายทั้งหมดกับผู้รับมอบสิทธิ์ กระบวนการ/vสวิตช์ outputs บรรทัดทั้งหมดที่ไม่ตรงกับคำที่ค้นหา คุณสามารถใช้คำสั่งเหล่านี้ใด ๆ ในการสร้างแฟ้มที่แยกบรรทัดทั้งหมดของ "ผู้รับมอบมีสิทธิ์":
Find.exe OriginalFile.txt "ผู้รับมอบไม่มีสิทธิ์" > NoDelegates.txt

Find.exe /V "มีผู้รับมอบสิทธิ์" OriginalFile.txt > NoDelegates.txt

Findstr.exe /C: OriginalFile.txt "ผู้รับมอบไม่มีสิทธิ์" > NoDelegates.txt

/C: /V Findstr.exe "มีผู้รับมอบสิทธิ์" OriginalFile.txt > NoDelegates.txt
คุณยังสามารถใช้คำสั่งเหล่านี้เพื่อสร้างแฟ้มที่แสดงรายการบัญชีทั้งหมดที่มีสิทธิ์แบบเต็มรูปแบบการเข้าถึงกล่องจดหมาย แต่ไม่มีสิทธิ์ในการส่งเป็นการบริการบัญชีแอพลิเคชัน กระบวนการ/iสวิตช์ทำคำสั่ง case-insensitive:
Find.exe /I "domain\ServiceAccount" OriginalFile.txt > ServiceAccount.txt

Findstr.exe /I /C: "domain\ServiceAccount" OriginalFile.txt > ServiceAccount.txt
หมายเหตุ:ถ้าคุณใช้โปรแกรมอรรถประโยชน์ Find.exe สร้างแฟ้มตัวกรอง คุณต้องลบบรรทัดหัวข้อที่โปรแกรมอรรถประโยชน์ Find.exe จะสร้างด้านบนของแฟ้ม

ไม่สามารถใช้อักขระตัวแทนชื่อของแฟ้ม (* *) กับโปรแกรมอรรถประโยชน์ Findstr.exe ถ้าคุณใช้อักขระตัวแทน แต่ละบรรทัดในแฟ้มผลลัพธ์จะถูก prefaced ตามชื่อแฟ้ม ตรวจคุณควรสอบแฟ้มผลลัพธ์อย่างระมัดระวังหลังจากที่คุณกรองข้อมูล โดยใช้ 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
    • จุดเริ่มต้นของแฟ้ม: Unicode (UTF-8)
    • ตัวคั่น: แท็บเท่านั้น
    • ถือตัวคั่นที่อยู่ติดกันเป็นอย่างใดอย่างหนึ่ง: unmarked
    • ข้อความ qualifier: กสอง "(ครั้งอัญประกาศ)

วิธีการบันทึกไฟล์การส่งออกหลังจากที่คุณแก้ไขแฟ้มใน Excel

  1. ในไฟล์การส่งออก คลิกบันทึกเป็น.
  2. บันทึกแฟ้ม โดยใช้ชื่ออื่นเพื่อให้คุณเก็บสำเนาข้อ unedited ของแฟ้มต้นฉบับ
  3. คลิกแฟ้ม:คลิกบันทึกเป็นป้อนชื่อแฟ้มสำหรับการบันทึกผลลัพธ์ และจากนั้น คลิกข้อความ unicodeในการบันทึกเป็นชนิดรายการ

ไวยากรณ์ของสคริปต์

นี่คือสคริปต์โหมดข้อความ และควรจะรันในหน้าต่างพร้อมรับคำสั่ง ไม่ใช่จากนั้นเรียกใช้กล่องโต้ตอบ เมื่อต้องเปิดหน้าต่างพร้อมรับคำสั่ง คลิกเริ่มการทำงานคลิกเรียกใช้ประเภท:cmdในการOPENกล่อง แล้วคลิกตกลง.

ล็อกข้อผิดพลาดและการส่งออกแฟ้มจะถูกบันทึกไปยังไดเรกทอรีพรอมต์คำสั่งปัจจุบัน คุณต้องมีสิทธิ์ในการสร้างแฟ้มในไดเรกทอรีนี้ เมื่อต้องการขอรับความช่วยเหลือของบรรทัดคำสั่ง ใส่คำสั่งต่อไปนี้:
CSCRIPT AddSendAs.vbs
เมื่อต้องการส่งออกผู้ใช้ที่มีการเข้าถึงกล่องจดหมายทั้งหมด โดยไม่มีการส่งเป็นสิทธิ์สำหรับโดเมน ใส่คำสั่งต่อไปนี้:
CSCRIPT AddSendAs.vbs [domain controller name] –ExportExample: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"

How to grant the Send As permission for each mailbox in the domain for all users who already have the Full Mailbox Access permission for a mailbox

หมายเหตุ:If you have delegates who also have the Full Mailbox Access permission in your organization, you should not use the SetAll mode. If you do use the SetAll mode in this situation, delegates will be granted the Send As permission. This behavior can cause all e-mail messages that they send to use the Sent As permission instead of the Sent on Behalf Of permission. You can correct this behavior by removing the Send As permission that was mistakenly granted to the delegate:
CSCRIPT AddSendAs.vbs [domain controller name] –SetAllExample:CSCRIPT AddSendAs.vbs CORP-DC-1 –SetAll
If you use the SetAll mode, an export file will be generated as Send_As_Export_H_MM_SS.txt. You should save this file because it is a record of all the accounts that were changed. If you were to run the script again, it would not output the same list of accounts because the accounts would already have been granted the Send As permission.

Errors that you experience while you are running the script will be saved to the Send_As_Errors_H_MM_SS.txt file. The error file name will match the hours_minutes_seconds time stamp of any associated export file.

Script modifications

There may be accounts in your organization that have permissions on many objects, but you do not want to alter the permissions. To reduce the size of the export file, you can filter these accounts by modifying the FMA_EXCLUSIVE_LIST variable that is located near the top of the script. By default, this variable lists a few accounts that should be suppressed in the script output. You can add more accounts by using the following format.
& "<Domain\Name>" & OUTPUT_DELIMITER
For example, you could change the value of the following variable.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
so that it appears as follows.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER & "Mydomain\Service1" & OUTPUT DELIMITER
This change suppresses the listing of the "Mydomain\Service1" account in the export file together with "NT AUTHORITY\SELF" and "NT AUTHORITY\SYSTEM." Notice that the Domain\Name value is case-sensitive, and it must appear exactly as it does or as it would in the export file.

There is another editable variable, FMA_EXCLUSIVE_EXSVC, that has the default value "\Exchange Services" & OUTPUT_DELIMITER. "Exchange Services" is the name of an account that is granted permissions through the Active Directory Connector in Exchange Server 5.5 and in Exchange 2000 migration and co-existence scenarios. This account is created in multiple domains, and it may appear repeatedly in the export file if it is not suppressed.

The FMA_EXCLUSIVE_EXSVC variable accepts only one account as its value. The account name is not case-sensitive. The account must start with a backslash character (\) and should not include the domain to which the account belongs. The account will be suppressed for all domains in which it exists.

If you have used third-party migration tools or directory synchronization methods, a different account may exist in multiple domains that has widely-granted permissions to user mailboxes. In this scenario, you can substitute the name of that account for "\Exchange Services."

Tips and caveats

  • Do not discard log and error files that are generated by the script. They may be valuable for troubleshooting or reversing changes later. Remember, as soon as you have granted the Send As permission to an account, it will no longer be logged in the export file.
  • If an Exchange server or database is down, script processing will be slower. In such a case, you can sort the export file by database and move lines that are associated with a stopped database to a different file for later import.
  • สคริปต์ไม่ใส่ผลลัพธ์ของบัญชีที่กำหนดให้ชื่อเข้าสู่ระบบใน "$" สิ้นสุด หรือไม่ AUTHORITY\SYSTEM NT บัญชีระบบเหล่านี้ควรไม่มักจะต้องมีการส่งเป็นสิทธิ์ และการเอาออกจากไฟล์การส่งออกได้อย่างมากลดขนาดของ
  • ไฟล์การส่งออกต้องอยู่ในรูปแบบ Unicode ก่อนที่สามารถถูกนำเข้า ถ้าคุณบังเอิญได้บันทึกแฟ้มเป็นข้อความ ANSI คุณสามารถแก้ไขปัญหานี้ ด้วยในขณะโหลดแฟ้มใน Notepad และบันทึกเป็น Unicode ข้อความได้
  • ถ้าการนำเข้าไม่ทำงาน แก้ไขกับบัญชีการทดสอบและบรรทัดที่หนึ่งในไฟล์นำเข้า คุณควรกำหนดค่าบัญชีผู้ใช้ทดสอบที่มีกล่องจดหมายที่บนเซิร์ฟเวอร์ Exchange ที่กำลังทำงาน และจากนั้น ให้สิทธิ์ในการเข้าถึงกล่องจดหมายทั้งหมดไปยังบัญชีการทดสอบอื่น ไม่อนุญาตการส่งเป็นสิทธิ์ไปยังบัญชีของการทดสอบอื่น
  • ไม่มีโหมดการยกเลิกสำหรับสคริปต์นี้ได้ เมื่อต้องการใช้เก็บส่งเป็นสิทธิ์ที่คุณได้ให้กับสคริปต์นี้ คุณต้องสร้างสคริปต์อื่น หรือลบแฟ้มเหล่านั้นด้วยตนเอง ไม่มีโหมดการยกเลิกเพื่อหลีกเลี่ยงการใช้สคริปต์นี้เพื่อลบการส่งเป็นสิทธิ์สำหรับผู้ใช้ทั้งหมดในองค์กร
  • สคริปต์ไม่ถูกต้องจัดการบัญชีผู้ใช้ที่ได้รับอนุญาตให้ตัวควบคุมแบบเต็มรูปแบบของวัตถุผู้ใช้พร้อมกับการเข้าถึงกล่องจดหมายทั้งหมด ควบคุมทั้งหมดรวมถึงสิทธิ์ในการส่งเป็น แต่สคริปต์จะส่งออกบัญชีว่าไม่มีสิทธิ์ในการส่งเป็น ซึ่งอาจเพิ่มขนาดของไฟล์การส่งออก แต่ทำไม่เกิดขึ้นจากการนำเข้าแฟ้ม และอนุญาตแล้ว redundantly ให้ส่งเป็นสิทธิ์กับบัญชีผู้ใช้เช่น
  • ไม่สามารถประมวลผล โดยใช้สคริปต์นี้ให้กับการใช้งานไดเรกทอรีของบัญชีผู้ใช้ที่มี distinguished ชื่อ และที่รวมแท็บหรืออัญประกาศคู่ unmatched สคริปต์สามารถประมวลผลเป็นชื่อที่มีตรงคู่อัญประกาศเช่นต่อไปนี้: อย่างถูกต้อง
    " CN =แรก"เล่น"สุดท้าย DC =โดเมน DC = com "
  • แต่ละรุ่นของ Excel สนับสนุนการจำกัดบรรทัดสูงสุดที่แตกต่างกันสำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
    120596ไม่สามารถนำเข้าแฟ้มข้อความที่มีขนาดใหญ่กว่าแถว 65,536 กับ Excel 97, Excel 2000, Excel 2002 และ Excel 2003
    ต่อไปนี้คือ ขีดจำกัดของแถวสำหรับ Excel 2003 และ Excel 2007 ที่ใช้งาน:
    • แถวใน Excel 2003:65,536
    • Excel 2007:1,048,576 แถว
    ถ้าแฟ้มแสดงผลของคุณมีขนาดใหญ่กว่าขีดจำกัดเหล่านี้ คุณต้องแยกแฟ้มลงในส่วนก่อนที่โหลดใน Excel
  • แฟ้ม Send_As_Errors จะแสดงรายการบัญชีเฉพาะมีความล้มเหลวในการอ่าน หรือเขียนสิทธิ์ ถ้าบัญชีผู้ใช้อื่นในโดเมนอย่างถูกต้องถูกประมวลผล บัญชีเหล่านี้อาจมีบางสิ่งบางอย่างในเหมือนที่ป้องกันไม่ให้สคริปต์ทำงานกับแฟ้มเหล่านั้น ปัญหาที่พบโดยทั่วไปรวมต่อไปนี้:
    • ไม่มีสิทธิ์ระดับผู้ดูแลเมื่อต้องการดู หรือตั้งค่าคุณสมบัติในบัญชี
    • เก็บกล่องจดหมายของ Exchange ไม่ทำงาน
    • เวิร์กสเตชันไม่ใช่สมาชิกของโดเมนเดียวกัน
    • แอคเคาท์ผู้ดูแลระบบที่กำลังใช้งานไม่ได้มาจากฟอเรสต์เดียวกัน
เมื่อต้องการรันสคริปต์นี้ คัดลอก และวางบรรทัดทั้งหมดระหว่าง BEGIN สคริปต์และ END สคริปต์ลงในตัวแก้ไขข้อความล้วนเช่น Notepad บันทึกสคริปต์เป็น AddSendAs.vbs begin สคริปต์
Option ExplicitDim OUTPUT_DELIMITEROUTPUT_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 itDim FMA_EXCLUSIVE_LISTFMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITERDim FMA_EXCLUSIVE_EXSVCFMA_EXCLUSIVE_EXSVC = "\Exchange Services" & OUTPUT_DELIMITER'Permission Type: Allow or Denyconst ACCESS_ALLOWED_OBJECT_ACE_TYPE  = 5const ADS_ACETYPE_ACCESS_ALLOWED = &h0const ADS_ACETYPE_ACCESS_DENIED = &h1'Flags: Specifies Inheritanceconst ADS_ACEFLAG_INHERIT_ACE = &h2const ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE = &h4const ADS_ACEFLAG_INHERIT_ONLY_ACE = &h8const ADS_ACEFLAG_INHERITED_ACE = &h10const ADS_ACEFLAG_VALID_INHERIT_FLAGS = &h1fconst ADS_ACEFLAG_SUCCESSFUL_ACCESS = &h40const ADS_ACEFLAG_FAILED_ACCESS = &h80'Declare ADSI constantsConst ADS_OPTION_SECURITY_MASK = 3Const ADS_OPTION_REFERRALS	= 1Const ADS_SECURITY_INFO_DACL = 4Const ADS_CHASE_REFERRALS_NEVER = &h00 Const ADS_CHASE_REFERRALS_SUBORDINATE = &h20 Const ADS_CHASE_REFERRALS_EXTERNAL = &h40'output file nameConst EXPORT_FILE = "Send_As_Export"Const ERROR_FILE = "Send_As_Errors"' script modeconst MODE_INVALID = -1 const MODE_SETALL = 0const MODE_EXPORT = 1const MODE_IMPORT = 2const SETALL = "-SETALL"const EXPORT = "-EXPORT"const IMPORT = "-IMPORT"' argument indexConst ARG_INDEX_MODE = 1Const ARG_INDEX_DC = 0Const ARG_INDEX_FILENAME = 2' column index in import/export fileConst COLUMN_INDEX_USERDISPLAYNAME = 0Const COLUMN_INDEX_FMAALIAS = 1Const COLUMN_INDEX_FMADISPLAYNAME = 2Const COLUMN_INDEX_IFPUBLICDELEGATE = 3Const COLUMN_INDEX_MAILBOXSTATUS = 4Const COLUMN_INDEX_USERADSPATH = 5Const COLUMN_INDEX_HOMEMDB = 6Const EMPTYSTRING = ""Const STRNO = "No Delegates"Const STRYES = "Has Delegates" Const MIN_ARG = 2Const INIT_ARRAY_SIZE = 100' Microsoft Exchange Const EX_MB_SEND_AS_ACCESSMASK  = &H00100Const EX_FULLMailbox_AccessMask = 1Const MESO = "Microsoft Exchange System Objects"Const EX_MB_SEND_AS_GUID = "{AB721A54-1E2F-11D0-9819-00AA0040529B}"Const ForReading	= 1Const ForWriting	= 2Const ForAppending	= 8Const TristateTrue	= -1Const ADS_SCOPE_SUBTREE = 2Dim objUserDim objSDMailBoxDim objSDNTsecurityDim objDACLNTSDDim objNewACEDim sTrusteeAlias()Dim sFMADeniedListDim sFMAExplicitAllowDim fACESendasFoundDim dArraySizeDim TotalACEDim iDim rootDSEDim connDim objCommandDim objCmdDisplayNameDim rsUsersDim FoundObjectDim objFSODim objfileImportDim objfileExportDim objfileErrorDim sImportFilePathDim cScriptModeDim dArgCountDim dArgExpectedDim sDCServerDim sMailboxStatusDim sIfPublicDelegateDim sFMAUserDisplayNameDim sExportFileNameDim sErrorsFileNameDim msPublicDelegatesDim fErrorDim fOneErrorDim fFMAAllowedOn Error Resume NextdArraySize = INIT_ARRAY_SIZEReDim Preserve sTrusteeAlias(dArraySize)dArgCount = Wscript.Arguments.Count If ( dArgCount < MIN_ARG ) Then	DisplaySyntaxEnd Iferr.ClearfError = FalsefOneError = FalsecScriptMode = MODE_INVALIDSelect 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_INVALIDEnd SelectIf (cScriptMode = MODE_INVALID Or dArgCount <> dArgExpected) Then	DisplaySyntaxEnd IfsDCServer = WScript.Arguments(ARG_INDEX_DC)CreateOutputFilesIf ( 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	WendEnd IfIf (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 IfEnd If objFSO.CloseobjfileImport.CloseobjfileExport.CloseobjfileError.CloseSet objFSO = NothingSet objfileImport = NothingSet objfileExport = NothingSet objfileError = NothingSet objCommand = NothingSet conn = NothingWScript.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 IfFunction FindAllFMAUsers (objSD)Dim objACLDim objACEDim intACECountDim strIndentDim dAccessMaskBitDim dPositionDim 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 = NothingEnd FunctionFunction CheckSendAsACE (objDiscretionaryACL, sTAlias)Dim objACEDim 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 FunctionFunction 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 FunctionFunction 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 IfEnd FunctionFunction 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:ผลิตภัณฑ์ของบุคคลที่สามที่กล่าวถึงในบทความนี้ ผลิตขึ้นโดยบริษัทที่ไม่ขึ้นอยู่กับ Microsoft Microsoft ไม่รับประกัน ทั้งโดยนัยหรืออย่างอื่นใด เกี่ยวกับประสิทธิภาพหรือความน่าเชื่อถือของผลิตภัณฑ์เหล่านี้
เซิร์ฟเวอร์องค์กร Blackberry XADM BES GoodLink Cisco Unified ส่งข้อความ RIM OWA

คำเตือน: บทความนี้ได้รับการแปลโดยอัตโนมัติ

คุณสมบัติ

รหัสบทความ: 912918 - การตรวจสอบครั้งสุดท้าย: 12/09/2015 04:18:40 - ฉบับแก้ไข: 4.0

Microsoft Exchange 2000 Server Standard Edition, Microsoft Exchange 2000 Enterprise Server, Microsoft Exchange Server 2003 Standard Edition, Microsoft Exchange Server 2003 Enterprise Edition

  • kbnosurvey kbarchive kbtshoot kbpending kbbug kbprb kbmt KB912918 KbMtth
คำติชม