SCROLL
Среднее время на прочтение: 3 мин.

Управление пользовательскими почтовыми правилами MS Outlook из командной консоли Exchange Managment Shell

Правила для входящих писем в MS Outlook помогают пользователям организовывать свои почтовые ящики. Обычно пользователи сами для себя создают необходимые правила обработки входящей почты, через приложение MS Outlook, но! системный администратор может так же управлять правилами обработки почты, в пользовательских почтовых ящиках.

Это может быть полезно, в случае если необходимо централизованно добавить всем пользователям правило, (прим.) которое будет помечать входящие письма от руководства, как важные.

Управление почтовыми правилами осуществляется через консоль EMS (Exchange management Shell). В работе имеется MS Exchange 2010, на нем и рассмотрим различные методы управления почтовыми правилами.

Типы правил Outlook

Правила Outlook могут быть как на стороне сервера (Server-side), так и на стороне клиента (Client-side). Для управления ими нужно иметь понимание какое различие между этими правилами.

  • Правила на стороне сервера (Server-side): их выполнение полностью выполняется сервером Exchange. Они применяются даже тогда, когда клиент Outlook пользователя находится в автономном режиме.
  • Правила на стороне клиента (Client-side). Эти правила выполняются только в том случае, если Outlook подключен к сети и пользователь вошел в систему. Правило не будет работать, если к электронной почте обращаются с другого почтового клиента или мобильного устройства. Так же, невозможно управлять ими через EMS (Exchange managment Shell).

Чтобы проверить, является ли правило на стороне сервера или на стороне клиента, вы можете использовать окно «Управление правилами и оповещениями» в Outlook. К клиентским правилам добавляется (только клиент) к имени правила, а к серверным правилам ничего не добавляется:

Наверняка определить типа правила, можно только в Outlook, в консоли EMS (Exchange management Shell) нет конкретного обозначения типа правила, но обычно правила на стороне клиента имеют более короткое описание в EMS, но вряд ли это надежный способ определения типа правила.

Управление правилами Outlook с помощью EMS

Начиная с Exchange Server 2010, Microsoft предоставила возможность использовать EMS (Exchange management Shell) для удаленного управления правилами Outlook. Для этого используются следующие командлеты:

  • Get-InboxRule — просмотр имеющихся правил в указанном почтовом ящике.
  • New-InboxRule — удаленное создание правил.
  • Enable-InboxRule и Disable-InboxRule — используются для включения\отключения правил.
  • Set-InboxRule — изменение правил
  • Remove-InboxRule — удаление правил.

Просмотр правил (Get-InboxRule)

Для предварительного просмотра всех правил, установленных для определенного почтового ящика, выполним команду.

PowerShell
Get-InboxRule -Mailbox <mailbox_name>

Вывод.

PowerShell
[PS] C:\>Get-InboxRule -Mailbox j.doe
Name                          Enabled                   Priority                 RuleIdentity
----                          -------                   --------                 ------------
RULE_ELMA                     True                      1                        3851757569047540121
TOMILIN A.                    True                      2                        3995872757123395993
РЕЗЕРВНОЕ КОПИРОВАНИЕ         True                      3                        4067930351161323929
FIRSTSSL                      True                      4                        4139987945199251865

У каждого правила есть свой собственный, отдельный параметр RuleIdentity. Этот параметр можно использовать для просмотра его настроек и описания, например.

PowerShell
Get-InboxRule –Mailbox <mailbox_name> -Identity <number> | FL

Вывод.

PowerShell
[PS] C:\>Get-InboxRule -Mailbox j.doe -Identity 3851757569047540121 | FL

RunspaceId                            : e6045952-673e-4c1a-9fd8-2cd17049db93
Description                           : Если сообщение:
                                            в теме сообщения содержатся определенные слова '[ELMA]'
                                        Выполните следующие действия:
                                            переместить сообщение в папку 'ELMA'

Enabled                               : True
Identity                              : example.com/Users/...\3851757569047540121
InError                               : False
Name                                  : RULE_ELMA
Priority                              : 1
RuleIdentity                          : 3851757569047540121
SupportedByTask                       : True
BodyContainsWords                     : {}
ExceptIfBodyContainsWords             : {}
FlaggedForAction                      :
ExceptIfFlaggedForAction              :
FromAddressContainsWords              : {}
ExceptIfFromAddressContainsWords      : {}
From                                  :
ExceptIfFrom                          :
HasAttachment                         : False
ExceptIfHasAttachment                 : False
...

Однако удобней искать и просматривать правила Outlook по их имени и описанию.

PowerShell
Get-InboxRule –Mailbox <mailbox_user> | Select Name, Description | FL

Вывод.

PowerShell
[PS] C:\>Get-InboxRule -Mailbox j.doe | Select Name, Description | FL


Name        : RULE_ELMA
Description : Если сообщение:
                  в теме сообщения содержатся определенные слова '[ELMA]'
              Выполните следующие действия:
                  переместить сообщение в папку 'ELMA'


Name        : TOMILIN A.
Description : Если сообщение:
                  получено от 'TOMILIN A.'


Name        : РЕЗЕРВНОЕ КОПИРОВАНИЕ
Description : Если сообщение:
                  в теме сообщения содержатся определенные слова 'РЕЗЕРВНОЕ КОПИРОВАНИЕ'


Name        : FIRSTSSL
Description : Если сообщение:
                  получено от 'FIRSTSSL'
              Выполните следующие действия:
                  переместить сообщение в папку 'FIRSTSSL'
                  и остановить дальнейшую обработку правил в этом сообщении

Создание правил (New-InboxRule)

Рассмотрим несколько примеров как удаленно создать правила на стороне сервера (Server-side).

Пример 1. Создадим правило, для почтового ящика «j.doe«, которое перемещает сообщения, в теме которых содержится текст «SPAM«, в папку «Нежелательная почта«.

PowerShell
New-InboxRule -Mailbox j.doe -Name "Move to Spam" -SubjectContainsWords "SPAM" -MoveToFolder ":\Нежелательная почта" -StopProcessingRules $True

Вывод.

PowerShell
[PS] C:\Windows\system32>New-InboxRule -Mailbox j.doe -Name "Move to Spam" -SubjectContainsWords "SPAM" -MoveToFolder ":\Нежелательная почта" -StopProcessingRules $True

Confirm
Использование Outlook Web App или Windows PowerShell для изменения правил приведет к удалению всех правил, отключенных
ранее с помощью Outlook. Если требуется сохранить правила, отключенные с помощью Outlook, нажмите кнопку "Нет" и
измените правила в Outlook. Продолжить?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "Y"): y

Name                       Enabled                       Priority                RuleIdentity
----                       -------                       --------                ------------
Move to Spam               True                          1                       6517888548450873753

Пример 2. Рассмотрим случай когда нужно создать правило, для всех имеющихся почтовых ящиков. Для этого напишем простой скрипт, который сперва получил названия всех имеющихся почтовых ящиков (кроме ящиков мест и системных) и для каждого из имеющегося почтового ящика будет создано правило (которое рассмотрели выше).

PowerShell
$user_list = Get-Mailbox | Select Alias, RecipientTypeDetails | Where { $_.RecipientTypeDetails -eq "UserMailbox"}

foreach ($al in $user_list) {
   $mail = $al.Alias
   Add-MailboxPermission -Identity $mail -user administrator -AccessRights FullAccess -Confirm:$false
   New-InboxRule -Mailbox $mail -Name "Move to Spam" -SubjectContainsWords "SPAM" -MoveToFolder ":\Нежелательная почта" -StopProcessingRules $True -Confirm:$false
   Remove-MailboxPermission -Identity $mail -user e.administrator -AccessRights FullAccess -Confirm:$false
}
Хочу обратить внимание, что для корректного применения политики, необходимо сперва выдать доступ к почтовому ящику пользователя, для пользователя от имени которого выполняется данный скрипт. После добавления правила, выданный доступ убираем.

Посмотреть список всех доступных условий (Conditions), для создания правил Outlook, можно выполнив команду.

PowerShell
Get-InboxRule -Mailbox <mailbox_name> | Get-Member

Включение\Отключение правил (Enable-InboxRule, Disable-InboxRule)

Правила размещенные на стороне сервера (Server-side), можно включать и отключать. Делается это следующими командами.

PowerShell
Disable-InboxRule -Mailbox <mailbox_name> -Identity <rule_name>
Enable-InboxRule -Mailbox <mailbox_name> -Identity <rule_name>

Изменение правил (Set-InboxRule)

Этот командлет позволяет изменять любое правило на стороне сервера (Server-side). Для примера изменим правило, которые применили выше. Изменим его так, чтобы оно реагировало на слово «SPAM», включенное в тело письма, а не на его тему.

PowerShell
Set-InboxRule -Mailbox <mailbox_name> -Identity <rule_name> -BodyContainsWords "SPAM" -SubjectContainsWords $nule

Удаление правил (Remove-InboxRule)

Для удаления правила, используется следующая конструкция.

PowerShell
Remove-InboxRule -Mailbox <mailbox_name> -Identity <rule_name>

Обсуждение

2 комментариев
  • Спасибо за тему!
    Как раз искал по работе с правилами инфу. На технете информация есть, да и с командлетами вроде все понятно. Но только здесь все в примерах хорошо «разжевано», еще раз спс !!