Правила 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 у таких правил указан статус «только клиент».
Просмотр правил в ящике Exchange
Чтобы вывести список правил в ящике Exchange, запустите консоль EMS и выполните следующую команду PowerShell:
Get-InboxRule –Mailbox abivanov
Как вы видите, для каждого правила выводится его имя, статус (Enabled: True/False), приоритет (Proirity) и RuleIdentity.
Можно вывести более подробную информацию о конкретном Inbox правиле, указав его имя:
Get-InboxRule -Mailbox abivanov -Identity "HelpDesk"| fl
Обычно содержание правила можно понять по полю Description:
Get-InboxRule -Mailbox abivanov -Identity "HelpDesk "| Select Name, Description | fl
Поиск правил в ящиках пользователей 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"
Следующее правило поставит красную категорию и высокую для всех писем с ключом «Годовое собрание» в теме от отправителя [email protected]:
New-InboxRule -Mailbox abivanov –name SecretaryRule -From [email protected] –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
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, и они были отключены. Некоторые параметры не поддерживаются, или не хватает места для хранения всех ваших правил
Вы можете изменить размер квоты под правила (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
Спасибо ! Интересная тема.
Тема интересная.
Но еще интереснее обсудить настройку OoF на стороне почтового сервера, когда она настроена у клиента с пересылкой писем на другой почтовый ящик.
В Exchange 2013 такое правило (скрытое правило), можно увидеть, указав ключ -IncludeHidden.
А вот в Exchange 2010 такого ключа нет. И остаётся только Exchange Web Services (EWS) API. Вот про него очень не хватает статьи!
На сайте есть базовая статья про настройку автоответа в Exchange 2010 https://winitpro.ru/index.php/2014/05/15/nastrojka-avtootveta-polzovatelya-v-exchange-2010/
Про скрытые правила не знал. Что-то и инфы по IncludeHidden немного.
Т.е. правило пересылки в автоответе не отобразится в списке правил?
Вот здесь можно подробно почитать, о чём именно идёт речь:
https://social.technet.microsoft.com/Forums/ru-RU/a9e2e5ef-8045-409c-9e62-2ae9b415b2cf/
Про IncludeHidden стало известно от сотрудника Microsoft. На TechNet указано, что этот ключ для внутреннего использования, без пояснения подробностей)
Так что ждём статью про EWS))))
С Наступающим!
Спс и Вас с наступающими!
По поводу EWS даже не знаю, очень уже непопулярная тематика… Один с таким объемом не справлюсь.
…я когда пытался добавлять правила через PoSh прилетало жуткое сообщение — что-то типа, если вы назначите данное правило, то правила на стороне клиента буду удалены! Легкий шок не дал нажать на кнопку «Ok» )))
Интересно, это у нас так криво настроили Exchange (подрядчики) или автор про такую фичу забыл упомянуть ? (;
Какая версия Exchnage? У пользователя уже были правила? Не может быть, что проблема связана с превышением лимита на размер правил?
Exch 2013, Outlook 2016.
У пользователя было только 2 правила. Шибко разбираться не стал, поверил спецам — те сказали, да есть такая фича у Exchange. И, вроде, ссылку давали на оффсайт — мельком глянул, удостоверился и забыл… Странно, что это малоизвестно… Может я все-таки что-то напутал, ок — если найду, то скину ссылку!
Собственно, искать и не пришлось — все есть в описаниях командлетов на оффсайте:
New-InboxRule
Description
When you create, modify, remove, enable, or disable an Inbox rule in Exchange PowerShell, any client-side rules disabled by Microsoft Outlook and outbound rules are removed.
Set-InboxRule
Description
The Set-InboxRule cmdlet allows you to modify the rule conditions, exceptions, and actions.
When you create, modify, remove, enable, or disable an Inbox rule in Exchange PowerShell, any client-side rules created by Microsoft Outlook are removed.
Или я все-таки что-то не так понимаю ??
При добавлении нового правила с помощью New-InboxRul уведомление появляется:
Confirm. Using Outlook Web App or Windows PowerShell to modify your rules will delete any rules that were previously turned off using Outlook. If you want to preserve the rules you turned off using Outlook, select «No» and use Outlook to edit your rules. Are you sure you want to proceed?
Cтарые правила не удалились несмотря на предупреждение. При этом не появилось и новое правило, лишь висит уведомление «Имеются не показанные правила, созданные в другой версии Outlook или OWA»…
New-InboxRule — показывает и старые и новые правило… Я в задумчивости…
Да, такое было предупреждение, вроде…
Видимо, от настроек серверов зависит — у нас удаляются все client-side правила.
Я шибко разбираться не могу — доступ только к серверу баз данных. Да и то обрезанный.
Подскажите, плз, а есть ли возможность узнать сколько занимает конкретное правило или суммарно все правила созданные пользователем в Outlook?