方案:在 Exchange Server 中部署通讯簿策略
本主题中的方案介绍了通讯簿策略 (ABP 的部署解决方案,这些策略) 三种最常见的组织类型,其中多个实体 (公司、政府机构、学校教室等) 共享一个通用的 Exchange 环境。 在所有方案中,收件人筛选器都会将收件人划分为单独的虚拟组织,然后定义应用于这些虚拟组织中的用户的 ABP。 有关详细信息,请参阅本主题后面的 通讯簿策略注意事项和最佳做法 部分。
有关 ABP 的详细信息,请参阅 Exchange Server 中的通讯簿策略。 有关 ABP 过程,请参阅 Exchange Server 中通讯簿策略的过程。
方案 1:一个 Exchange 组织中的两家独立公司
此方案适用于共享同一 Exchange 环境,但没有共同员工或管理层的公司或部门。 此外,这些部门没有特殊的安全或隐私问题。
在此方案中,Contoso 和 Humongous Insurance 是共享同一 Exchange 环境的两家独立公司。 每个公司的 ABP 允许一家公司的员工在全球地址列表中仅看到同一公司的成员, (Outlook 中的 GAL) ,Outlook 网页版 (以前称为 Outlook Web App) 。 所有通讯组都属于一家公司或另一家公司,没有一个通讯组包含两家公司的成员。
此表描述了此方案所需的 GAL、脱机通讯簿 (OAB) 、会议室列表和地址列表:
ABP 元素 | Contoso | Humongous Insurance |
---|---|---|
全局地址列表 | GAL_CON | GAL_HI |
脱机通讯簿 | OAB_CON | OAB_HI |
会议室列表 | AL_CON_Rooms | AL_HI_Rooms |
地址列表 | AL_CON_Groups AL_CON_Users AL_CON_Contacts |
AL_HI_Groups AL_HI_Users AL_HI_Contacts |
方案 2:两家公司在一个 Exchange 组织中共享 CEO
此方案适用于共享 Exchange 环境的公司或部门,只有共同的员工是高层管理人员。
在此方案中,Fabrikam 和 Tailspin Toys 是同一 Exchange 环境中的独立公司,共享同一个 CEO,他们是两家公司之间唯一的共同点。 此方案使用三个具有以下要求的 ABP:
一家公司的员工在浏览 GAL 时只能看到公司中的收件人,两家公司的员工都可以在 GAL 和通讯组中看到 CEO。
CEO 可以看到这两家公司中的所有收件人,能够创建跨两家公司的通讯组,并且这些组在每个公司的 GAL 中可见。 但是,组成员只能看到各自公司的其他成员, (其他公司的组成员) 隐藏。
查看 CEO 的组成员身份的员工只会看到公司中的组。 他们不会看到其他公司的组。
每家公司都有一个名为“高级领导”的通讯组,其中包括该公司和首席执行官的管理。
这三个 ABP 的名称为:ABP_FAB、ABP_TAIL和ABP_CEO。
此表描述了此方案所需的 GAL、OAB、会议室列表和地址列表:
ABP 元素 | Fabrikam | Tailspin Toys | CEO |
---|---|---|---|
名称 | ABP_FAB | AB_TAIL | ABP_CEO |
全局地址列表 | GAL_FAB | GAL_TAIL | 默认全局通讯簿 |
脱机通讯簿 | OAB_FAB | OAB_TAIL | 默认脱机通讯簿 |
会议室地址列表 | AL_FAB_Rooms | AL_TAIL_Rooms | 所有会议室 |
地址列表 | AL_FAB_Users_DGs AL_FAB_Contacts |
AL_TAIL_Users_DGs AL_TAIL_Contacts |
AL_FAB_Users_DGs AL_FAB_Contacts AL_TAIL_Users_DGs AL_TAIL_Contacts |
有关为此方案创建所需元素的完整演练,请参阅本主题末尾 的方案 2:两家公司在一个 Exchange 组织中共享 CEO 的详细部署步骤 部分。
方案 3:教育
此方案适用于需要划分教室以确保学生隐私的学校或大学,并具有以下要求:
每个班级的学生只能查看其班级中的其他学生、自己的教师以及校长。
教师只能在自己的班级中看到学生。
教师可以看到校长和所有其他教师。
通讯组是为与每个班级关联的家长和教职员工创建的。
此表描述了此方案所需的 GAL、OAB、会议室列表和地址列表:
ABP 元素 | Students_ClassA | Teachers_ClassA | 校长 |
---|---|---|---|
全局地址列表 | GAL_StudentsClassA | GAL_TeachersClassA | GAL_Everyone |
脱机通讯簿 | OAB_StudentsClassA | OAB_TeachersClassA | 默认脱机通讯簿 |
会议室地址列表 | AL_BlankRoom | AL_BlankRoom | 所有会议室 |
地址列表 | AL_ClassAAL_Principal | AL_ClassAAL_AllTeachersAL_AllGroupsAL_Principal | AL_ClassA AL_ClassB AL_AllTeachers AL_AllStudents AL_AllGroups |
通讯簿策略的注意事项和最佳做法
以下是在组织中使用 ABP 时要考虑的重要问题:
不能同时使用分层通讯簿 (HAB) 和 ABP。 若要了解详细信息,请参阅Understanding Hierarchical Address Books。
分配有 ABP 的用户需要存在于为 ABP 指定的 GAL 中。
如果在组织中创建了 ABP,但未将 ABP 分配给某些用户,则这些收件人可以看到 所有 地址列表。
若要将收件人划分为虚拟组织,我们建议对收件人使用 CustomAttribute1 到 CustomAttribute15 属性。 这些属性比公司、部门或 StateOrProvince 等其他预装条件属性工作得更好,因为:
并非所有收件人类型都支持 公司、 部门 或 StateOrProvince 属性 (例如通讯组、动态通讯组和启用邮件的公用文件夹) 。
CustomAttribute1 到 CustomAttribute15 属性不能由用户在其自己的邮箱上配置,并且完全由管理员控制。
即使是支持 公司、 部门 或 StateOrProvince 属性的收件人类型也需要不同的 cmdlet 来配置它们。
例如,若要为邮箱、邮件用户或邮件联系人配置 公司、 部门 或 StateOrProvince 的值,则不能使用 Set-Mailbox、 Set-MailUser 或 Set-MailContact cmdlet。 相反,你需要使用 Set-User 和 Set-Contact cmdlet。 相比之下,所有收件人类型的相应 Set-* cmdlet 上都提供了 CustomAttribute1 到 CustomAttribute15 参数。
有关收件人筛选的详细信息,请参阅 边缘传输服务器上的收件人筛选。
通过 LDAP 直接访问 Active Directory 的客户端应用程序将绕过内置于 ABPs 中的逻辑。
ABP 中指定的 GAL 至少必须包含所有地址列表 (包括 ABP 中指定的会议室地址列表) , (如果 ABP 包含) 的其他地址列表,则没关系。 不要创建包含少于同一 ABP 中地址列表的收件人的 GAL。
建议不要创建跨虚拟组织边界的通讯组。 包含多个虚拟组织成员的组会导致以下问题:
如果组成员在向通讯组发送邮件时请求送达回执或已读回执,他们将看到所有组成员的电子邮件地址。
当某些组成员没有有效的数字 ID 时,发送到通讯组的加密邮件可能会导致问题。 例如,假设一个通讯组包含三个来自代理 A 的成员,以及来自代理 B 的两个成员。此外,机构 A 的成员之一和机构 B 中的两名成员的数字 ID 无效。 如果代理 A 的成员向通讯组发送加密邮件,他们将收到一条警告,指出有三个收件人没有有效的数字 ID。 但是,只有代理 A 中成员的电子邮件地址才会显示在警告消息中。
ABP 不适用于使用 Get-Group cmdlet 的所有用户或进程,因此这些用户将看到他们有权访问的任何组的所有成员。
因为如果出现此问题,我们建议你阻止用户在 Outlook 或 Outlook 网页版 中管理自己的组。 为此,请从用户中删除 MyDistributionGroupMembership RBAC 角色分配。 有关详细信息,请参阅 管理角色分配策略。
如果允许用户使用 Outlook 或 Outlook 网页版 来管理组,则组所有者必须能够查看完整的组成员身份列表。
所有 ABP 都必须包含一个房间地址列表。 但是,如果组织不使用会议室地址列表,则可以创建空会议室地址列表。
注意:ABP 所需的会议室列表是指定会议室 (包含筛选器
RecipientDisplayType -eq 'ConferenceRoomMailbox'
) 的地址列表。 它不是使用 New-DistributionGroup 或 Set-DistributionGroup cmdlet 上的 RoomList 开关创建的会议室查找器通讯组。 有关详细信息,请参阅 创建和管理会议室邮箱。部署 ABP 不会阻止一个虚拟组织中的用户向另一个虚拟组织中的用户发送电子邮件。 如果要阻止用户跨虚拟组织发送电子邮件,建议创建邮件流规则 (也称为传输规则) 来查找收件人之间发送的邮件。 例如,若要防止 Contoso 用户接收来自 Fabrikam 用户的邮件,反之亦然,但仍允许 Fabrikam 的高级领导团队向 Contoso 用户发送邮件,可以在 Exchange 命令行管理程序中创建以下邮件流规则:
New-TransportRule -Name "Ethical Wall: Contoso-Fabrikam" -BetweenMemberOf1 "AllFabrikamEmployees" -BetweenMemberOf2 "AllContosoEmployees" -DeleteMessage -ExceptIfFrom seniorleadership@fabrikam.com
有关邮件流规则的详细信息,请参阅 Exchange Server 中的邮件流规则。
若要在 Skype for Business 或 Lync 客户端中配置类似于通讯簿策略的功能,可以为特定用户设置 msRTCSIP-GroupingID 属性。 有关详细信息,请参阅 PartitionByOU Replaced with msRTCSIP-GroupingID。
方案 2 的详细部署步骤:两家公司在一个 Exchange 组织中共享 CEO
本部分将指导你完成 方案 2:两家公司在一个 Exchange 组织中共享 CEO 的部署步骤。 如果你还记得,Fabrikam 和 Tailspin Toys 是共享同一个首席执行官的独立公司。
若要了解如何在本地 Exchange 组织中打开 Exchange 命令行管理程序,请参阅 Open the Exchange Management Shell。
步骤 1:安装和配置通讯簿策略路由代理
ABP 路由代理使分配了不同 GAL 的用户彼此显示为外部收件人。 有关详细说明,请参阅 使用 Exchange 命令行管理程序安装和配置通讯簿策略路由代理。
步骤 2:定义虚拟组织
在此方案中, CustomAttribute15 属性定义虚拟组织:Fabrikam 收件人的值 FAB
、Tailspin Toys 收件人的值 TAIL
和 CEO 的值 CEO
,这是 Fabrikam 和 Tailspin 用户可以看到 CEO 所必需的。 如果你不在 Fabrikam 和 Tailspin Toys 虚拟组织中包括 CEO,则 CEO 可以看到每个人,但没有人能看到该 CEO。 有关收件人筛选的详细信息,请参阅 边缘传输服务器上的收件人筛选。
若要为 Fabrikam 和 Tailspin Toys 邮箱、通讯组、动态通讯组、邮件联系人和邮件用户设置 CustomAttribute15 属性值,请使用以下语法:
$<VariableName> = Get-<RecipientType> -ResultSize Unlimited | where PrimarySMTPAddress -match <fabrikam.com | tailspintoys.com>
$<VariableName> | foreach {Set-<RecipientType> -Identity ($_.GUID).ToString() -CustomAttribute15 <FAB | TAIL>
注意:
如果将收件人的 GUID 值用于 Identity 参数,则如果两个组织中的用户名 (相似, julia@fabrikam.comjulia@contoso.com) ,则有助于避免冲突。
cmdlet 名称的有效 <RecipientType> 值为 Mailbox、DistributionGroup、DynamicDistributionGroup、MailContact 和 MailUser。 需要单独为每个收件人类型配置 CustomAttribute15 属性值。
本示例设置所有 Fabrikam 邮箱上的 CustomAttribute15 属性的值FAB
。
$FAB_MBX = Get-Mailbox -ResultSize Unlimited | where PrimarySMTPAddress -match fabrikam.com
$FAB_MBX | foreach {Set-Mailbox -Identity ($_.GUID).ToString() -CustomAttribute15 FAB}
步骤 3:创建通讯簿策略的必需元素
创建地址列表
此组织需要四个自定义地址列表:
AL_FAB_Users_DGs
AL_FAB_Contacts
AL_TAIL_Users_DGs
AL_TAIL_Contacts
此示例创建名为 AL_FAB_Users_DGs 的地址列表,其中包含所有 Fabrikam 用户、通讯组、动态通讯组 和 CEO。
New-AddressList -Name "AL_FAB_Users_DGs" -RecipientFilter "((RecipientType -eq 'UserMailbox') -or (RecipientType -eq 'MailUniversalDistributionGroup') -or (RecipientType -eq 'DynamicDistributionGroup')) -and (CustomAttribute15 -eq 'FAB') -or (CustomAttribute15 -eq 'CEO')"
此示例创建名为 AL_FAB_Contacts 的地址列表,其中包含所有 Fabrikam 邮件联系人。
New-AddressList -Name "AL_FAB_Contacts" -RecipientFilter "(RecipientType -eq 'MailContact') -and (CustomAttribute15 -eq 'FAB')"
此示例创建名为 AL_TAIL_Users_DGs 的地址列表,其中包含所有 Tailspin Toys 用户、通讯组、动态通讯组 和 CEO。
New-AddressList -Name "AL_TAIL_Users_DGs" -RecipientFilter "((RecipientType -eq 'UserMailbox') -or (RecipientType -eq 'MailUniversalDistributionGroup') -or (RecipientType -eq 'DynamicDistributionGroup')) -and (CustomAttribute15 -eq 'TAIL') -or (CustomAttribute15 -eq 'CEO')"
此示例创建名为 AL_TAIL_Contacts 的地址列表,其中包含所有 Tailspin Toys 邮件联系人。
New-AddressList -Name "AL_TAIL_Contacts" -RecipientFilter "(RecipientType -eq 'MailContact') -and (CustomAttribute15 -eq 'TAIL')"
有关详细信息,请参阅 创建地址列表。
创建会议室列表
此组织需要两个自定义会议室列表:
AL_FAB_Rooms
AL_TAIL_Rooms
此示例为 Fabrikam 会议室邮箱创建名为 AL_FAB_Rooms 的会议室列表。
New-AddressList -Name AL_FAB_Rooms -RecipientFilter "(Alias -ne $null) -and (CustomAttribute15 -eq 'FAB') -and (RecipientDisplayType -eq 'ConferenceRoomMailbox') -or (RecipientDisplayType -eq 'SyncedConferenceRoomMailbox')"
本示例为 Tailspin Toys 会议室邮箱创建名为 AL_TAIL_Rooms 的会议室列表。
New-AddressList -Name AL_TAIL_Rooms -RecipientFilter "(Alias -ne $null) -and (CustomAttribute15 -eq 'TAIL') -and (RecipientDisplayType -eq 'ConferenceRoomMailbox') -or (RecipientDisplayType -eq 'SyncedConferenceRoomMailbox')"
注意:如果组织没有任何会议室邮箱 (ABP 需要会议室列表,则此示例创建名为 AL_BlankRoom 的空白会议室列表,即使它是空的) :
New-AddressList -Name AL_BlankRoom -RecipientFilter "(Alias -ne $null) -and ((RecipientDisplayType -eq 'ConferenceRoomMailbox') -or (RecipientDisplayType -eq 'SyncedConferenceRoomMailbox'))"
有关创建地址列表的详细信息,请参阅 创建地址列表。
创建 GALs
此组织需要两个自定义 GAL:
GAL_FAB
GAL_TAIL
此示例为 Fabrikam 创建名为 GAL_FAB 的 GAL,其中包含所有 Fabrikam 收件人 ,并允许 Fabrikam 用户查看 CEO。
New-GlobalAddressList -Name "GAL_FAB" -RecipientFilter "(CustomAttribute15 -eq 'FAB') -or (CustomAttribute15 -eq 'CEO')"
此示例为 Tailspin Toys 创建名为 GAL_TAIL 的 GAL,其中包含所有 Tailspin Toys 收件人 ,并允许 Tailspin Toys 用户看到 CEO。
New-GlobalAddressList -Name "GAL_TAIL" -RecipientFilter "(CustomAttribute15 -eq 'TAIL') -or (CustomAttribute15 -eq 'CEO')"
注意:请勿在包含 ABP 地址列表中缺少的收件人的 ABP 中使用 GAL。 所有地址列表的组合必须与 GAL 中的收件人匹配。
有关详细信息,请参阅 使用 Exchange 命令行管理程序创建全局地址列表。
创建 OAB
此组织需要两个自定义 GAL:
OAB_FAB
OAB_TAIL
此示例为包含 Fabrikam GAL 的 Fabrikam 创建名为 OAB_FAB 的 OAB。
New-OfflineAddressBook -Name "OAB_FAB" -AddressLists "GAL_FAB"
此示例为 Tailspin Toys 创建名为 OAB_TAIL 的 OAB,其中包含 Tailspin Toys GAL。
New-OfflineAddressBook -Name "OAB_TAIL" -AddressLists "GAL_TAIL"
注意: 如果希望用户看到虚拟组织中的所有收件人,请确保在 OAB 中包含 GAL。 否则,可以通过指定 OAB 中包含的地址列表的缩减列表来减小 OAB 的下载大小。
有关详细信息,请参阅 使用 Exchange 命令行管理程序创建脱机通讯簿。
步骤 4:创建通讯簿策略
此组织需要三个 ABP:
ABP 元素 | Fabrikam | Tailspin Toys | CEO |
---|---|---|---|
名称 | ABP_FAB | ABP_TAIL | ABP_CEO |
全局地址列表 | GAL_FAB | GAL_TAIL | 默认全局通讯簿 |
脱机通讯簿 | OAB_FAB | OAB_TAIL | 默认脱机通讯簿 |
会议室地址列表 | AL_FAB_Rooms | AL_TAIL_Rooms | 所有会议室 |
地址列表 | AL_FAB_Users_DGs AL_FAB_Contacts |
AL_TAIL_Users_DGs AL_TAIL_Contacts |
AL_FAB_Users_DGs AL_FAB_Contacts AL_TAIL_Users_DGs AL_TAIL_Contacts |
此示例创建名为 ABP_FAB 的 ABP,其中包含 Fabrikam 的 GAL、OAB、会议室列表和地址列表。
New-AddressBookPolicy -Name "ABP_FAB" -AddressLists "AL_FAB_Users_DGs","AL_FAB_Contacts" -OfflineAddressBook "\OAB_FAB" -GlobalAddressList "\GAL_FAB" -RoomList "\AL_FAB_Rooms"
此示例创建名为 ABP_TAIL 的 ABP,其中包含 Tailspin Toys 的 GAL、OAB、会议室列表和地址列表。
New-AddressBookPolicy -Name "ABP_TAIL" -AddressLists "AL_TAIL_Users_DGs","AL_TAIL_Contacts" -OfflineAddressBook "\OAB_TAIL" -GlobalAddressList "\GAL_TAIL" -RoomList "\AL_TAIL_Rooms"
此示例创建名为 ABP_CEO 的 ABP,其中包含 CEO 的 GAL、OAB、会议室列表和地址列表。
New-AddressBookPolicy -Name "ABP_CEO" -AddressLists "AL_FAB_Users_DGs","AL_FAB_Contacts","AL_TAIL_Users_DGs","AL_TAIL_Contacts" -OfflineAddressBook "\Default Offline Address Book" -GlobalAddressList "\Default Global Address List" -RoomList "\All Rooms"
有关详细信息,请参阅 Exchange Server 中通讯簿策略的过程。
步骤 5:将通讯簿策略分配给邮箱
此示例将名为 ABP_FAB 的 ABP 分配给所有 Fabrikam 邮箱。
$Fab = Get-Mailbox -ResultSize unlimited -Filter "CustomAttribute15 -eq 'FAB'"; $Fab | foreach {Set-Mailbox -Identity $_.Identity -AddressBookPolicy 'ABP_FAB'}
本示例将名为 ABP_TAIL 的 ABP 分配给所有 Tailspin Toys 邮箱。
$Tail = Get-Mailbox -ResultSize unlimited -Filter "CustomAttribute15 -eq 'TAIL'"; $Tail | foreach {Set-Mailbox -Identity $_.Identity -AddressBookPolicy 'ABP_TAIL'}
此示例将名为 ABP_CEO 的 ABP 分配给名为 Gabriela Laureano 的 CEO。
Set-Mailbox -Identity "Gabriela Laureano" -AddressBookPolicy "ABP_CEO"
注意:如果用户在将 ABP 应用到其邮箱时已连接到 Outlook 或 Outlook 网页版,则需要关闭并重启其客户端应用程序,然后才能看到新的地址列表和 GAL。
有关详细信息,请参阅 将通讯簿策略分配给邮箱。
其他注意事项
创建或修改地址列表或 GAL 后,需要更新成员身份。
如果地址列表包含大量收件人, (我们的建议超过 3000) ,则应使用 Exchange 命令行管理程序更新地址列表 (而不是 Exchange 管理中心) 。 有关详细信息,请参阅 更新地址列表。
若要更新 GAL,始终需要使用 Exchange 命令行管理程序。 有关详细信息,请参阅 使用 Exchange 命令行管理程序更新全局地址列表。