Правила почтового ящика Outlook позволяют пользователям настроить различные условия обработки для входящей почты в папке Inbox. С помощью правил Outlook вы можете переместить письма от конкретных отправителей в нужную папку, переслать письмо другому пользователю и т.д. Пользователи могут создавать и управлять правилами ящика через графический интерфейс Outlook. Администратор Exchange может управлять правилами в ящиках пользователей через PowerShell. В этой статье мы рассмотрим, как создавать, удалять, отключать и изменять правила для входящей почты Outlook в ящиках Exchange Server и Microsoft 365 (Exchange Online) с помощью PowerShell.
Клиентские и серверные правила в Outlook
В ящике Outlook можно настроить два типа правил: клиента (Client-side rules) и на стороне сервера (Server-side rules).
- Серверные правила Outlook (Server-side rules) — выполняются на стороне сервера Exchange при получении письма. При этом не важно, запущен ли Outlook у пользователя или нет. На стороне сервера могут выполняться следующие виды правил: установка флага важности письма, перемещение письма в другую папку ящика, удаление сообщения, пересылка письма в другой ящик. Правила, которые создаются через Outlook Web App всегда выполняются на стороне сервера;
- Клиентские правила (Client-side rules) выполняются только в запущенном клиенте Outlook. Пример таких правил: перемещение письма в PST файл, отметить письмо прочитанным ( как проверить, прочитал ли пользователь Exchange письмо ), вывести оповещение или воспроизвести звук. Этими правилами нельзя управлять из PowerShell. В интерфейсе Outlook у таких правил указан статус «только клиент».
Когда вы создаете новое правило в Outlook, которое обрабатывается на клиенте, появится предупреждение:
This rule is a client-only rule, and will process only when Outlook is running.
Get-InboxRule: Просмотр правил в ящике Exchange
Попробуем просмотреть правила в почтовом ящике пользователя. Подключитесь к своему серверу Exchange с помощью PowerShell.
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://msk-exch1.remontka.com/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Import-PSSession $Session
Если у вас Exchange Online, используйте модуль Exchange Online PowerShell :
Install-Module -Name ExchangeOnlineManagement
Connect-ExchangeOnline
В Microsoft 365 можно использовать в PowerShell аутентификацию с помощью сертификата .
Для управления правилами ящика используются следующие командлеты:
- Get-InboxRule
- New-InboxRule
- Enable-InboxRule
- Disable-InboxRule
- Set-InboxRule
- Remove-InboxRule
Чтобы вывести список правил в ящике Exchange, выполните команду:
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
В ящике Outlook могут присутствовать скрытые server-side правила. Эти правила не отображаются ни в клиенте Outlook ни в OWA. Чтобы вывести скрытые правила ящика, добавьте параметр — IncludeHidden :
Get-InboxRule -Mailbox abivanov -IncludeHidden
С помощью PowerShell вы можете найти определенные правила в ящике пользователя. Например, вам нужно найти все правила, в которых выполняется удаление писем:
Get-InboxRule -Mailbox abivanov | ?{ $_.DeleteMessage }
Также может быть сценарий, когда по запросу службы информационной безопасности, вам нужно найти во всех ящиках организации правила автоматической пересылки почты :
foreach ($i in (Get-Mailbox -ResultSize unlimited)) { Get-InboxRule -Mailbox $i.DistinguishedName | where {$_.ForwardTo} | fl MailboxOwnerID,Name,ForwardTo >> C:PSAll_Mailbox_Forward_Rules.txt }
В целевом тестовом файле будет содержаться список ящиков, названия правил пересылки и адресатов, которым пересылаются сообщения.
Создать правило для входящей почты Outlook с помощью PowerShell
Создать новое правило Outlook для входящей почты можно с помощью командлета Exchange New-InboxRule . К примеру, вы хотите переслать все письма с определенными ключами в теме письма в другой ящик. Выполните команду:
New-InboxRule -Name ZenossAlerttoHelpdesk -Mailbox rootadmin -SubjectContainsWords "Zenoss Alert" -ForwardTo "Helpdesk"
New-InboxRule: 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.
Следующее правило поставит красную категорию и высокую для всех писем с ключом «Годовое собрание» в теме от отправителя [email protected] :
New-InboxRule -Mailbox abivanov –name SecretaryRule -From [email protected] –SubjectContainsWords "Годовое собрание" -ApplyCategory "Red Category" -MarkImportance "High" -StopProcessingRules $true
Пример правила, которое перемещает все письма полученные до 01.01.2023 в папку Archive:
New-InboxRule -Name "Move to Archive" -Mailbox abivanov -MoveToFolder "abivanov:InboxArchive" -ReceivedBeforeDate "01.01.2023"
Переслать все письма за определенный период:
New-InboxRule -name ForwardTo -mailbox abivanov -ReceivedAfterDate 12/12/2022 -ReceivedBeforeDate 01/01/2023 -ForwardTo [email protected]
Можете создать для всех пользователей в определенном Organizational Unit (OU) в AD правило, которое автоматически перемещает письма с темой «Казино» в каталог «Нежелательная почта» (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
-MessageTypeMatches Calendaring
.Если вы хотите создать правило в общем почтовом ящике Exchange , проверьте что вам назначена роль «Organization Management» или предоставлены права»Full Access» на почтовыя ящик. Вы можете предоставить права на ящик с помощью команды PowerShell :
Add-MailboxPermission -Identity sharedmbx -User aivanov -AccessRights FullAccess -AutoMapping:$false -InheritanceType All
Чтобы изменить какое-то правило 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
Можно удалить все правила ящика через Outlook, для этого запустите его с дополнительным параметром:
Outlook.exe /cleanrules
Будут удалены все client-side и server-правила для всях ящиков, подключенных в вашем профиле Outlook.
Если при попытке включить или отключить автоответ в Outlook (Out of Office), появляется ошибка:
The Out Of Office Rules cannot be displayed. The client operation failed.
Или
System resources are critically low.
Причина проблемы – поврежденные правила в ящике. Воспользуйтесь PowerShell для удаления всех правил в ящике (в том числе скрытых)
Get-InboxRule -Mailbox abivanov -IncludeHidden | Remove-InboxRule