前面所述的通讯组和安全组有一个共同的特征就是其成员的加入是静态的。比如一个用户邮箱账户被加入了某个通讯组或安全组,那么不管其对象属性如何变化,其始终属于该组成员。另外,就是如果一个用户要想加入某个通讯组或安全组必须要通过特定的加入操作(无论是管理员添加,还是用户自助申请)。
能否有一种可能,即随着用户属性的变化,如其所在的部门或者联系地址等发生了变化,而自动的加入或更改其所属的组呢?当然,Exchange Server 2013能够非常好的满足这个要求,可以通过“动态通讯组”这一功能来实现。比如,现在存在两个部门一个是销售部,一个是市场部,为了灵活方便的管理用户群发邮件,那么可以基于用户属性中的部门来建立动态通讯组。由此,建立Sale和Market两个动态通讯组,设置其识别“部门”属性值。现在一个员工之前是销售部的,现在其被调往了市场部,随着HR对其所在“部门”属性值的修改,该员工的用户邮箱账户会被自动的变为Market动态组中的成员,从而避免需要用户自己或管理员手动进行更改。
从本上讲,动态通讯组可以理解为一个启用了邮件地址的筛选器,在收到发向它的邮件后,通过运行筛选器在活动目录内查找匹配该筛选器的收件人对象,然后向这些对象分配邮件。
一、通过EAC创建动态通讯组
1、通过IE访问https://exchange-server(FQDN)/ecp打开EAC。在Exchange管理中心窗口中,点击导航栏中的“收件人”,选择右边窗口导航条中的“组”,点击添加“+”按钮,在下拉菜单中选择“动态通讯组”。
2、在“新建动态通讯组”窗口中定义该通讯组的“显示名称”和“别名”。和通讯组一样,“别名”将直接影响动态通讯组的邮件地址。
和通讯组及安全组不通的是,在此处需要定义一个筛选器,用于筛选适合于该组条件的收件人。默认选择为“所有收件人类型”,可以按需要进行修改,比如,仅选择邮箱用户,即“具有Exchange邮箱的用户”。然后,点击“添加规则”,并在下拉列表中选择基于筛选的属性值。
可以用于此处的收件人对象的属性值包括:
“收件人容器”(即:收件人对象在活动目录中所在OU或组容器)、“省/市/自治区”、“公司”、“部门”以及“自定义属性”1到15。
选择要用于评估筛选的属性值后,点击其右边的“输入语句…”,在弹出“指定词语或短语”对话框中添加作为筛选条件的关键词。
对于同一个规则来讲,这些关键词是“或”的关系。最后,点击“保存”,完成动态通讯组的创建。
以上创建了一个筛选了所有邮箱用户的“自定义属性1”为“Department Manager”的动态通讯组。
3、使用Get-DynamicDistributionGroup可以获取动态通讯组相关的信息,比如需要查看当前动态通讯组包含哪些成员:
$DM = Get-DynamicDistributionGroup “Department Manager”
Get-Recipient -RecipientPreviewFilter $DM.RecipientFilter
4、通过使用New-DynamicDistributionGroup可以通过EMS创建动态通讯组。如创建一个包含所有邮箱用户的动态通讯组。在此,需要注意的是如果不指定Alias,则别名默认使用Name。
New-DynamicDistributionGroup -IncludedRecipients MailboxUsers -Name “AllMailUser”
Get-DynamicDistributionGroup “AllMailUser” | fl Name,Alias,EmailAddresses
5、验证是否包含相应的成员
$AMU = Get-DynamicDistributionGroup “AllMailUser”
Get-Recipient -RecipientPreviewFilter $AMU.RecipientFilter
6、通过MAPI客户端,在全球通讯簿中可以找到新建的动态通讯组。
二、管理现有动态通讯组
对于现有动态通讯组可以通过在EAC中双击要配置的通讯组来进行相应的管理,由于该属窗口的大多数选项卡与通讯组相似,同样在此不再累述。仅介绍不相同的选项卡——“成员身份”。
这里用于添加、删除和修改现有的筛选器规则,对于一个动态通讯组可以添加多个筛选器规则,而这些规则之间为“与”关系,即:收件人对应属性值必须满足每个规则条件才能作为该组成员。
三、一个真实的案列
大家明白,微软每月第二周星期二要推送本月补丁。(吐槽一下:每月准时要来一次,日期还都带二。)因此,企业中需要安排针对Exchange服务器的补丁更新,而这一更新有可能需要服务器重启。在没有成本做高可用的情况下,就这能停服了。但是在维护不同的服务器之前需要提前邮件通知该邮箱服务器上存储邮箱的用户。比如有多台邮箱服务器,显然聪明的管理员一般不会选择在同一天凌晨对这些所有的服务器都进行维护。通常的做法是一天维护其中一台或几台,这样尽量减少单次影响的用户。
问题来了,比如今天需要维护服务器“ex01”,那么需要提前通知这台服务器上的所有邮箱用户;明天需要维护服务器放“ex02”,同样也需要提前通知。而且,不能一次性全部通知所有用户,这样会引起全体用户的不适。然而,随着时间的推移,每台邮箱服务器中的邮箱用户也在变化。最要紧的是这种事情不是一次性的,而是每月要来一次。
解决问题的方案是:针对不同的服务器,分别创建动态通讯组,筛选条件为指定邮箱用户所在服务器为指定服务器。
由于,EAC在创建动态通讯组时,不支持收件人属性值为“服务器”,所以只能通过EMS来创建:
New-DynamicDistributionGroup -Name “Beijing MX Server Users” -RecipientFilter {((RecipientTypeDetails -eq ‘UserMailbox’ -and ServerName -eq ‘ex01’))}
Get-DynamicDistributionGroup “Beijing MX Server Users” | fl Name,Alias,EmailAddresses
$BMXSU = Get-DynamicDistributionGroup “Beijing MX Server Users”
Get-Recipient -RecipientPreviewFilter $BMXSU.RecipientFilter
本文所述:
操作系统版本:Windows Server 2012 R2 Datacenter Edition
邮件系统版本:Exchange Server 2013 SP1 Enterprise Edition