Управление почтовыми правилами в ящике Exchange с помощью PowerShell

Правила Outlook позволяют пользователям организовать различные условия обработки для входящей почты. Можно по определенным критериям переместить письма от конкретных отправителей в нужную папку, поставить флаг важности, перенаправить письмо другому пользователю и т.д. Пользователи обычно создают и управляют правилами через графический интерфейс Outlook. В Exchange 2010 / 2013 / 2016 администратор может управлять правилами в ящиках пользователей через консоль PowerShell. В этой статье мы рассмотрим создавать, удалять, отключать и изменять правила для входящей почты Outlook через Exchange Management Shell.

Клиентские и серверные правила Outlook

Администратору Exchange следует отличать правила Outlook, которые функционируют на стороне клиента (Client-side rules) и на стороне сервера (Server-side rules).

  • Серверные правила Outlook отрабатывают на стороне сервера при получении письма. При этом не важно, запущен ли Outlook у пользователя или нет (правила, которые создаются через Outlook Web App всегда выполняются на стороне сервера). На стороне сервера могут выполняться следующие виды правил: установка флага важности письма, перемещение письма в другую папку ящика, удаление сообщения, пересылка письма в другой ящик.
  • Клиентские правила выполняются только в запущенном клиенте Outlook: например, перемещение письма в PST файл, пометить письмо прочитанным, вывести оповещение или воспроизвести звук. Этими правилами управлять из PowerShell нельзя. В интерфейсе Outlook у таких правил указан статус «только клиент».

Правила для входящих писем в Outlook, только клиент

Просмотр правил в ящике Exchange

Чтобы вывести список правил в ящике Exchange, запустите консоль EMS и выполните следующую команду PowerShell:

Get-InboxRule –Mailbox abivanov

Get-InboxRule список входящих правил в ящике exchange

Как вы видите, для каждого правила выводится его имя, статус (Enabled: True/False), приоритет (Proirity) и RuleIdentity.

Можно вывести более подробную информацию о конкретном Inbox правиле, указав его имя:

Get-InboxRule -Mailbox abivanov -Identity "HelpDesk"| fl

Обычно содержание правила можно понять по полю Description:

Get-InboxRule -Mailbox abivanov -Identity "HelpDesk "| Select Name, Description | fl

Get-InboxRule - получить данные о правиле

Поиск правил в ящиках пользователей Exchange

В некоторых случаях администратору нужно найти определенные правила в ящике пользователя. Например, вам нужно найти все правила, в которых выполняется удаление писем:

Get-InboxRule -Mailbox abivanov | ?{ $_.DeleteMessage }

Также может быть сценарий, когда по запросу службы информационной безопасности, вам нужно найти во всех ящиках организации правила автоматической пересылки почты:

foreach ($i in (Get-Mailbox -ResultSize unlimited)) { Get-InboxRule -Mailbox $i.DistinguishedName | where {$_.ForwardTo} | fl MailboxOwnerID,Name,ForwardTo >> C:\PS\All_Mailbox_Forward_Rules.txt }

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

Создаем правило для входящей почты Outlook с помощью PowerShell

Создать новое правило Outlook для входящей почты можно с помощью командлета Exchange New-InboxRule. К примеру, вы хотите переслать все письма с определенными ключами в теме письма в другой ящик. Выполните команду:

New-InboxRule -Name ZenossAlerttoHelpdesk -Mailbox rootadmin -SubjectContainsWords "Zenoss Alert" -ForwardTo "Helpdesk"

Следующее правило поставит красную категорию и высокую для всех писем с ключом «Годовое собрание» в теме от отправителя secretary@winitpro.ru:

New-InboxRule -Mailbox abivanov –name SecretaryRule -From secretary@winitpro.ru –SubjectContainsWords “Годовое собрание" -ApplyCategory {Red Category} -MarkImportance 2

Для всех пользователей в определенном OU создадим правило, которое автоматически перемещает письма с темой «Казино» в каталог «Нежелательная почта» (Junk Email).

$mbxs = Get-mailbox -organizationalUnit Managers
$mbxs | % { }
$mbxs | % { New-inboxrule -Name SpamMail -mailbox $_.alias -subjectcontainswords “[казино]” -movetofolder “$($_.alias):Junk Email” }

Список все доступных условий (Conditions), которые вы можете использовать в правилах Exchange можно вывести так:

Get-InboxRule -Mailbox abivanov | get-member

все условия (Conditions) для inbox правил в exchange

ApplyCategory
BodyContainsWords
CopyToFolder
DeleteMessage
Description
Enabled
FlaggedForAction
ForwardAsAttachmentTo
ForwardTo
From
FromAddressContainsWords
FromSubscription
HasAttachment
HasClassification
HeaderContainsWords
Identity
InError
IsValid
MailboxOwnerId
MarkAsRead
MarkImportance
MessageTypeMatches
MoveToFolder
MyNameInCcBox
MyNameInToBox
MyNameInToOrCcBox
MyNameNotInToBox
Name
Priority
ReceivedAfterDate
ReceivedBeforeDate
RecipientAddressContainsWords
RedirectTo
RuleIdentity
SendTextMessageNotificationTo
SentOnlyToMe
SentTo
StopProcessingRules
SubjectContainsWords
SubjectOrBodyContainsWords
SupportedByTask
WithImportance
WithinSizeRangeMaximum
WithinSizeRangeMinimum
WithSensitivity

Чтобы изменить какое-то правило Outlook, нужно использовать командлет Set-InboxRule, например:

Set-InboxRule -Mailbox abivanov –identity SecretaryRule -FromAddressContainsWords {mail.ru}

Совет. Размер правил в ящике Microsoft Exchange ограничен (см. статью). В Exchange 2003 размер правил ограничен 32 Кб, а в Exchange 2016/2013/2010 – под правила выделяется 64 кб. Если при редактировании правил появляется ошибка:

Некоторые правила невозможно загрузить в Microsoft Exchange, и они были отключены. Некоторые параметры не поддерживаются, или не хватает места для хранения всех ваших правил

Вы можете изменить размер квоты под правила (RulesQuota) до 256 Кб, выполнив команду:

Set-Mailbox -identity abivanov -RulesQuota 256Kb

Как отключить и удалить входящее правило Outlook из PowerShell

Чтобы отключить конкретное правило Outlook, нужно указать:

Disable-Inboxrule –Mailbox abivanov -Identity “SecretaryRule”

При этом его статус (Enabled) меняется False и оно более не применяется ко входящим письмам.

Чтобы удалить правило, выполните:

Remove-Inboxrule –Mailbox abivanov -Identity SecretaryRule

Команда запросит подтверждение, просто введите Y. Чтобы удалить все правила в определенном ящике, выполните:

Get-inboxrule -mailbox abivanov | disable-inboxrule


Предыдущая статья Следующая статья


Комментариев: 5 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)