CZ 
30.11.2025 Ondřej VÍTEJTE V MÉM SVĚTĚ

An English translation is available for this article. Pro tento článek je dostupný anglický překlad.
Exchange - creating Inbox Rules using PowerShell and OWA

Exchange - vytváření pravidel pomocí PowerShellu a OWA

| Petr Bouška - Samuraj |
Emaily přicházející do schránky můžeme automaticky zpracovávat (provádět akce) pomocí pravidel (Inbox Rules). Tato pravidla se obvykle vykonávají přímo na Exchange serveru, až na některé výjimky, které vyžadují spuštění v aplikaci Outlook (client-only). Pravidla se nejčastěji spravují v Microsoft Outlook. Zde se podíváme na možnost správy pravidel pro sdílenou schránku (Shared Mailbox) pomocí Outlook on the web (OWA). A na možnost vytvářet (hromadně) pravidla pomocí cmdletu v Exchange Management Shell (EMS).
zobrazeno: 7 013x (1 429 CZ, 5 584 EN) | Komentáře [0]

Správa pravidel pro sdílenou schránku

Pokud mimo vlastní schránky využíváme také nějakou sdílenou (máme na ni přiřazena plná práva), tak ji vidíme v Outlooku. Nicméně při nastavování Pravidel a oznámení (Rules & Alerts) v Outlooku lze pracovat pouze s pravidly pro naši vlastní schránku.

Pozn.: Jediné řešení by bylo přidat schránku do Outlooku jako další účet (do kterého se musíme přihlásit). Pak můžeme při nastavení pravidel přepínat účty.

Jednodušší způsob správy pravidel pro sdílenou schránku je přes Outlook on the Web (OWA).

  • v pravém horním rohu klikneme na svůj účet a zvolíme Open another mailbox
Outlook on the web (OWA) - Open another mailbox
  • zadáme název schránky, Search directory a Open (otevře se v novém okně)
  • ve sdílené schránce klikneme vpravo nahoře na Settings (ozubené kolečko) a poté na Options
  • pravidla se spravují pod Mail - Automatic processing - Inbox and sweep rules
Outlook on the web (OWA) - Inbox and sweep rules

Konfigurace pravidel pomocí PowerShellu

Jako administrátoři můžeme pravidla ve schránkách spravovat pomocí Exchange Management Shell (EMS). K dispozici máme několik cmdletů:

Omezení množství pravidel ve schránce

Exchange neomezuje množství pravidel, která můžeme ve schránce vytvořit. Ale celková velikost pravidel ve schránce může být maximálně 256 kB. Bohužel se nedozvíme, kolik aktuálně pravidla zabírají. Pokud se při vytváření pravidla zobrazí chyba, že nelze uložit pravidlo na Exchange, tak je možná vyčerpána kapacita.

Schránky vytvořené na novějších verzích Exchange mají nastavenu velikost pro pravidla 256 kB. Ale dříve byla hodnota 64 kB. Hodnotu kvóty pro schránku si můžeme ověřit a případně upravit.

[PS] C:\> Get-Mailbox bouska | FT Alias, RulesQuota

Alias  RulesQuota
-----  ----------
bouska 256 KB (262,144 bytes)

Vytvoření pravidla

Pravidla se vytváří jednoduše pomocí parametrů, které definují podmínky, akce a vyjímky. Můžeme je různě kombinovat.

Níže je příklad pravidla, které přepošle email, který obsahují určitě slovo v adrese příjemce. Pravidlo musíme pojmenovat a určit schránku, ke které patří. V některých případech je potřeba přesněji specifikovat adresy (než v příkladu) a řetězce uzavřít do uvozovek.

New-InboxRule -Name ForwardMail -Mailbox test-mailbox -RecipientAddressContainsWords petr -ForwardTo bouska `
 -StopProcessingRules $true 

Informace o existujících pravidlech

Seznam pravidel pro schránku.

Get-InboxRule -Mailbox test-mailbox

Detailní informace o konkrétním pravidle.

Get-InboxRule -Mailbox test-mailbox -Identity ForwardMail | FL *

Smazání všech pravidel pro schránku

Get-InboxRule -Mailbox test-mailbox | Remove-InboxRule 

Praktický příklad - schránka s mnoha adresami a pravidla pro přeposílání

Dostal jsem následující zadání. Zajistit, aby emaily odeslané na více než 200 speciálních adres dorazily do jedné společné schránky, kterou může zpracovávat více uživatelů. Zároveň bylo potřeba některé zprávy automaticky přeposílat podle adresy příjemce.

Využití aliasů vs. distribučních skupin

Společnou schránku pro sběr emailů je ideální vytvořit jako sdílenou schránku (Shared Mailbox). K této schránce můžeme přidat aliasy pro jednotlivé adresy. Můžeme využít PowerShell cmdlet (adresy třeba načítat z CSV souboru).

Set-Mailbox test-mailbox@firma.cz -EmailAddresses @{Add=$alias}

Problém s aliasy

Objevil se zásadní problém. V Outlooku se nezobrazuje konkrétní alias, na který byl email odeslán. Viditelný je pouze název sdílené schránky. Pokud chceme zjistit cílovou adresu, musíme se podívat do hlavičky zprávy.

Řešení pomocí distribučních skupin

Možné řešení je vytvořit pro každou emailovou adresu samostatnou distribuční skupinu (Distribution Group), do které přidáme sdílenou schránku jako člena. Zprávy tak budou doručeny do sdílené schránky a zároveň bude viditelné, na jakou adresu byly odeslány.

Příklad hromadného vytvoření distribučních skupin z CSV souboru:

$addresses=import-csv c:\addresses.csv
foreach($alias in $addresses) {
  $alias=$($alias.alias)
  $alias=$alias.Substring(0, $alias.IndexOf("@"))
  New-DistributionGroup -Name $alias -Alias $alias -Members test-mailbox@firma.cz -OrganizationalUnit "OU=Test,DC=firma,DC=cz" `
 -MemberJoinRestriction Closed -MemberDepartRestriction Closed -RequireSenderAuthenticationEnabled $false
  Set-DistributionGroup -Identity $alias -HiddenFromAddressListsEnabled $true 
}

Přeposílací pravidlo - filtrování podle adresy příjemce

Druhá část zadání spočívala v automatickém přeposílání zpráv na základě adresy příjemce. Musíme zvážit limit 256 kB pro pravidla ve schránce. Potřebujeme vytvořit více než 200 pravidel. Patrně je vhodné použít úsporný zápis, aby bylo každé pravidlo co nejmenší. Například krátký název pravidla nebo vyhledávaný řetězec.

Pro filtrování zpráv můžeme využít podmínku RecipientAddressContainsWords - with specific words in the recipient’s addresses. Pravidlo se aplikuje na zprávy se zadaným slovem v adrese příjemce. V praxi pravidlo na sdílené schránce korektně funguje pro adresy distribučních skupin.

Pozn.: Můžeme použít celou emailovou adresu nebo jen její část jako hledaný řetězec. Důležité ale je, aby šlo o jednoznačný řetězec, který se nepřekrývá s jinými adresami.

New-InboxRule -Name ForwardPetr -Mailbox test-mailbox -RecipientAddressContainsWords "petr@" -ForwardTo bouska -StopProcessingRules $true 

Problém s řetězcem delším než 9 znaků

Při testování se objevil nečekaný problém, ke kterému jsem na internetu nenalezl žádné informace. Pokud byl řetězec v parametru RecipientAddressContainsWords delší než devět znaků, tak se pravidlo neuplatnilo (ignorovalo).

Přeposílací pravidlo - filtrování podle hlavičky zprávy

Jako funkční řešení se ukázalo použít jinou podmínku, filtrování podle hlavičky zprávy. Podmínka HeaderContainsWords - with specific words in the message header. Pravidlo se aplikuje na zprávy s konkrétním slovem v hlavičce emailu.

New-InboxRule -Name ForwardPetr -Mailbox test-mailbox -HeaderContainsWords "<petr@" -ForwardTo bouska -StopProcessingRules $true 

Pozn.: V mém případě jsem měl adresy připravené v Excelu. Bylo jednoduché vygenerovat jednotlivé příkazy přímo tam. Stejně by se dalo načítat CSV.

Související články:

Microsoft Exchange

Skoro od začátku mé praxe se věnuji administraci poštovního serveru od firmy Microsoft, tedy Exchange Serveru. Začínal jsem na verzi 2003 a dostal se až k Exchange Online. Články popisují mnoho oblastí správy. Nejvíce od migrace na Exchange Server 2016 a jeho kompletní konfiguraci. Ale také Exchange Hybrid a bezpečnost elektronické pošty.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

Zatím zde nejsou žádné komentáře.

Přidat komentář

Vložit tag: strong em link

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách