Заметки о Windows и других программных продуктах Microsoft...

Управление динамическими группами рассылки Exchange

Управление динамическими группами рассылки Exchange

В 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 вы увидите вот такую картину.

свойства группы после редактирования

 

В принципе для фильтрации можно взять и другие атрибуты. Полный список атрибутов пользователя, которые можно использовать для фильтрации, можно найти здесь.