A Technet fórumon volt egy kérdés ami egy Outlook hibára vonatkozott (megosztott postafiókban a jogosult nem látja a privátnak jelölt levelet még akkor sem, ha ezt megengedtük neki). A környezet Exchange 2003. Egy megoldási javaslatként (vagyis inkább a hiba megkerüléseként) feldobtam, hogy írok egy Event Sink-et ami leveszi a megosztott postafiókba beeső levelekről a privát jelzést.

Útközben kiderült, hogy éppen Exchange 2007-re migrálnak. Ó, semmi gond, akkor nem Event Sink-et írunk, hanem Transport Agent-et. Vagy mégsem?

Az Exchange 2007-ben létezik a Transport Rule intézménye. Meg lehet oldani a fenti problémát ezzel?

Próbáljuk meg!

Itt van az a EMS Script ami a megoldást adja:

$DGOU = "test.local/Users"
$NoSensitiveDGName = "No Sensitive Message"
$NoSensitiveDGAccount = "nsdg"
New-DistributionGroup -Name $NoSensitiveDGName -OrganizationalUnit $DGOU -SAMAccountName $NoSensitiveDGAccount -Type "Distribution"
$condition = Get-TransportRulePredicate SentToMemberOf
$condition.Addresses = @(( Get-DistributionGroup $NoSensitiveDGName ))
$action = Get-TransportRuleAction RemoveHeader
$action.MessageHeader = "Sensitivity"
New-TransportRule -Name "RemoveSensitivity" -Conditions @($condition) -Action @($action) -Enabled: $true

Az eredeti feladatnál kicsit tovább mentem. a fenti script létrehoz egy disztribuciós listát. Aki ennek a listának a tagja lesz annak a bejövő leveleiről lekerül a privát jelzés (valamint a Personal és a Confidential is).

A fenti feladat kapcsán eszembe jutott egy régi Event Sink. Karsai Peti írta valamikor a távoli múltban. Ez a Sink képes Exchange 2003 alatt leszedni a levelekről az olvasási értesítőt, ami sokakat zavar.

Kicsit átírtam az előző EMS scriptet, így alkalmas lett olvasási értesítők eltávolítására. Természetesen ez is egy disztribúciós lista tagsággal kontrollálható:

$DGOU = "test.local/Users"
$NoReceiptDGName = "No Read Receipt"
$NoReceiptDGAccount = "nrr"
New-DistributionGroup -Name $NoReceiptDGName -OrganizationalUnit $DGOU -SAMAccountName $NoReceiptDGAccount -Type "Distribution"
$condition = Get-TransportRulePredicate SentToMemberOf
$condition.Addresses = @(( Get-DistributionGroup $NoSensitiveDGName ))
$action1 = Get-TransportRuleAction RemoveHeader
$action1.MessageHeader = "Disposition-Notification-To"
$action2 = Get-TransportRuleAction RemoveHeader
$action2.MessageHeader = "Read-Receipt-To"
New-TransportRule -Name "RemoveReadReceipt1" -Conditions @($condition) -Action @($action1) -Enabled: $true
New-TransportRule -Name "RemoveReadReceipt2" -Conditions @($condition) -Action @($action2) -Enabled: $true