В Exchange Server есть два типа групп рассылки — статические и динамические. Статические группы формируются путем прямого добавления пользователей в группу, а вот с динамическими все сложнее. Список пользователей в динамических группах рассылки (Dynamic Distribution Group) не является постоянным, а определяется с помощью специально заданных условий и фильтров и обновляется каждый раз, когда группе направляется почтовое сообщение.
Членство в динамической группе рассылки определяется на основании атрибутов пользователей в Active Directory. С одной стороны это удобно, поскольку дает возможность формировать группу по определенному признаку, например по принадлежности к департаменту или географическому расположению. Однако управлять членством в динамической группе гораздо сложнее, чем в статической. Добавить, удалить и даже просто посмотреть состав группы можно только с помощью PowerShell. Для примера создадим динамическую группу рассылки и затем отредактируем ее.
Создать динамическую группу рассылки можно из графической оснастки ECP. Для этого переходим в раздел recipients — groups и выбираем создание новой динамической группы рассылки.
Указываем имя группы, выбираем ее расположение в Active Directory
и сохраняем группу.
Теперь откроем свойства группы, перейдем на вкладку membership и посмотрим, каким образом определяется членство в группе. Как видите, сейчас принадлежность к группе определяется только нахождением в определенном контейнере (OU). При необходимости можно добавить дополнительное правило фильтрации.
Однако в ECP возможности фильтрации сильно ограничены. Для выбора доступны всего несколько стандартных пользовательских атрибутов, а также для фильтрации можно использовать произвольные атрибуты (Custom Attributes).
Поскольку PowerShell предоставляет гораздо больше возможностей для фильтрации, то переходим в консоль. Для начала выведем список доступных фильтров командой:
Get-DynamicDistributionGroup "Test DDL" | fl name,*filter*,*container
Список членов группы определяется этими тремя параметрами:
RecipientContainer — фильтр, основанный на местоположении получателя в Active Directory. В качестве значения может быть указано отдельное подразделение (OU) или весь домен.
RecipientFilter — фильтр OPATH, основанный на значении любого доступного свойства получателя. При составлении фильтра можно использовать операторы сравнения, поддерживаются подстановочные знаки (wildcards) и частичные совпадения.
LdapRecipientFilter — фильтр LDAP, применяющийся к пользователям при создании динамической группы рассылки. Этот параметр формируется из параметра RecipientFilter, изменять его вручную нельзя.
Примечание. В Microsoft Exchange Server 2003 и более ранних версиях для создания групп рассылки использовался синтаксис фильтрации LDAP. Начиная с Exchange Server 2007 вместо синтаксиса фильтрации LDAP используется новый синтаксис фильтрации OPATH. Применение OPATH позволяет создавать фильтры непосредственно в командах командной консоли Exchange с помощью параметра -RecipientFilter.
Как видите, в нашу группу входят все объекты (пользователи, группы рассылки и т.п), находящиеся в OU DDL_Test и имеющие почтовый адрес, кроме служебных почтовых ящиков.
Выведем список членов группы командой:
Get-DynamicDistributionGroup "Test DDL" | ForEach {Get-Recipient -RecipientPreviewFilter $_.RecipientFilter -OrganizationalUnit $_.RecipientContainer}
Теперь перед нами задача настроить фильтр так, чтобы максимально упростить управление членством в группе. На мой взгляд наиболее удобный вариант — это добавить в исключения обычную группу, в которую можно просто добавлять пользователей по мере необходимости. Сделать это можно с помощью параметра MemberOfGroup.
Создаем в AD группу ExcludeFromDDL. Группа может не иметь почтового адреса, но обязательно должна быть Universal и иметь тип Distribution.
Составляем вот такой фильтр:
((RecipientType -eq 'UserMailbox') -and (-not(MemberOfGroup -eq 'CN=ExcludeFromDDL,OU=DDL_Test,OU=Exchange,DC=ruchange,DC=ru')))
Т.е. только пользовательские ящики, не входящие в группу ExcludeFromDDL.
Применяем фильтр к группе:
Set-DynamicDistributionGroup -Identity "Test DDL" -RecipientFilter {
((RecipientType -eq 'UserMailbox') -and (-not(MemberOfGroup -eq 'CN=ExcludeFromDDL,OU=DDL_Test,OU=Exchange,DC=ruchange,DC=ru')))
}
Проверяем получившийся в результате фильтр:
(Get-DynamicDistributionGroup -Identity "Test DDL").RecipientFilter
Как видите, наши параметры добавились к уже имеющимся.
Проверяем список членов группы. Сейчас в него входят два почтовых ящика.
Добавляем ящик DDL_Test в группу ExcludeFromDDL
и еще раз проверяем. Теперь в группе остался только один ящик, DDL_Test из группы исключен. Что и требовалось доказать.
После того, как вы отредактируете фильтр из консоли PowerShell, изменять членство в группе из ECP станет невозможно. На вкладке Membership вы увидите вот такую картину.
В принципе для фильтрации можно взять и другие атрибуты. Полный список атрибутов пользователя, которые можно использовать для фильтрации, можно найти здесь.
fg8ygyu