Управління поштовими правилами в ящику Exchange за допомогою PowerShell

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

зміст:

  • Клієнтські і серверні правила Outlook
  • Перегляд правил в ящику Exchange
  • Пошук правил в ящиках користувачів Exchange
  • Створюємо правило для вхідної пошти Outlook за допомогою PowerShell
  • Як відключити і видалити входить правило Outlook з PowerShell

Клієнтські і серверні правила 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 обмежений (див. Статтю). В 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