Office Servers and Services

"La connaissance ne vaut que si elle est partagée" / "An effective Knowledge is a shared one"

Exchange 2010/2007 : Création d’une règle de transport :

Posted by Teruin laurent sur août 19, 2010


Comme bon nombre d’entre vous le savent les règles de transport peuvent être d’un grand secours pour réacheminer des flux de messagerie. Dans ce petit article nous allons créer une simple règle de transport qui permettra le réacheminement d’un flux de messagerie vers une autre adresse email entre deux boites autres lettres une hébergée sur Exchange 2007 une autre sur Exchange 2010

Dans l’environnement Exchange 2007 la création des règles de transport est relativement simple. Dans 2010 la commande new-transportrule
a pris un peu d’embonpoint comme nous le verrons par la suite

 

Création d’une règle de transport en environnement 2007.

 

Identifier la commande powershell

La commande Powershell qui est nécessaire à la création de la règle de transport est la suivante :

New-TransportRule -Name <String> -Actions <TransportRuleAction[]> [-Comments <String>] [-Conditions <TransportRulePredicate[]>] [-Confirm [<SwitchParameter>]] [-DomainController <Fqdn>] [-Enabled <$true | $false>] [-Exceptions <TransportRulePredicate[]>] [-Priority <Int32>] [-TemplateInstance <PSObject>] [-WhatIf [<SwitchParameter>]]

 

Identifier les conditions de déclenchement de la régle.

Dans Exchange 2007 ont parle de Predicats. Ce sont en fait les conditions et valeurs que l’on doit spécifier pour que la régle se déclenche. Les prédicats sont nombreux et obeissent a des régles de syntaxes précises. la définition du prédicat est donné par le technet

« Les prédicats donnent pour instruction à une condition ou à une exception d’examiner un élément spécifique d’un message électronique afin de déterminer si la règle de transport s’applique. Certains prédicats examinent les champs À ou De d’un message, tandis que d’autres examinent l’objet, le corps ou la taille de la pièce jointe. Pour déterminer si une règle de transport doit s’appliquer à un message, la plupart des prédicats requièrent la spécification d’une valeur à l’aide de laquelle les prédicats testent le message. Ces valeurs sont attribuées à une ou plusieurs propriétés de prédicat. Certains prédicats ne nécessitent pas de propriété de prédicat. »

Il faudra donc trouver le bon predicat la bonne syntaxe de ce dernier et indiquez les valeurs qui doivent être testées. Attention certains prédicats sont pris en charge sur des serveurs de transport d’autre sur des serveurs Edge.

La commande Get-TransportRulePredicate [-Name <String>] vous donnera la liste des prédicats utilisables.

Cependant vous obtiendrez de plus amples renseignement en tapant le nom de votre prédicat suivit de | FL comme le montre l’écran suivant

 

Dans notre cas c’est le prédicat idéal car nous voulons faire une régle qui effectue un traitement sauf si : le message vient de la personne qui est censé recevoir.

La premiére etape est donc de déclarer la condition

Pour connaitre les conditions possibles utilisez la commande : Get-transportRulePredicate

 

Pour connaitre les paramétres utiliser la commande Get-transportRulePredicate –name « nomdupredicat » | fl

 

La seconde étape est de déclarer l’exception . Pour connaitre les exceptions possible utiliser également la commande : Get-transportRulePredicate

La troisieme étape est de déclarer l’action a réaliser. Pour cela utiliser la commande Get-transportRuleAction

Pour ce faire nous allons utiliser des variables dans lesquelles nous allons stocker , les conditions, les execptions, et les actions

Voici un petit exemple de ce que l’on peut faire

Dans cet exemple on créez un régle qui lorsque ce eric cantona recoit un message celui-ci est discretement envoyé a une boite aux lettres de backup saut si ce message provient de lui-même. Noter que si vous ne spécifiez rien la régle est active par défaut.

Dans notre cas de figure nous avons du utiliser un mail user plutôt qu’un contact. Si vous remplacer le get-mailuser par un get-contact et que votre objet est un contact cela ne fonctionera pas.

Création d’une règle de transport en environnement 2010.

 

Dans l’environnement Exchange 2010 la syntaxe est différente car comme vous pouvez le voir la commande à pris un peu de poid non ?

New-TransportRule -Name <String> [-ADComparisonAttribute <DisplayName | FirstName | Initials | LastName | Office | PhoneNumber | OtherPhoneNumber | Email | Street | POBox | City | State | ZipCode | Country | UserLogonName | HomePhoneNumber | OtherHomePhoneNumber | PagerNumber | MobileNumber | FaxNumber | OtherFaxNumber | Notes | Title | Department | Company | Manager | CustomAttribute1 | CustomAttribute2 | CustomAttribute3 | CustomAttribute4 | CustomAttribute5 | CustomAttribute6 | CustomAttribute7 | CustomAttribute8 | CustomAttribute9 | CustomAttribute10 | CustomAttribute11 | CustomAttribute12 | CustomAttribute13 | CustomAttribute14 | CustomAttribute15>] [-ADComparisonOperator <Equal | NotEqual>] [-AddManagerAsRecipientType <To | Cc | Bcc | Redirect>] [-AddToRecipients <RecipientIdParameter[]>] [-AnyOfCcHeader <RecipientIdParameter[]>] [-AnyOfCcHeaderMemberOf <RecipientIdParameter[]>] [-AnyOfRecipientAddressContainsWords <Word[]>] [-AnyOfRecipientAddressMatchesPatterns <Pattern[]>] [-AnyOfToCcHeader <RecipientIdParameter[]>] [-AnyOfToCcHeaderMemberOf <RecipientIdParameter[]>] [-AnyOfToHeader <RecipientIdParameter[]>] [-AnyOfToHeaderMemberOf <RecipientIdParameter[]>] [-ApplyClassification <String>] [-ApplyHtmlDisclaimerFallbackAction <Wrap | Ignore | Reject>] [-ApplyHtmlDisclaimerLocation <Append | Prepend>] [-ApplyHtmlDisclaimerText <DisclaimerText>] [-ApplyRightsProtectionTemplate <RmsTemplateIdParameter>] [-AttachmentContainsWords <Word[]>] [-AttachmentIsUnsupported <$true | $false>] [-AttachmentMatchesPatterns <Pattern[]>] [-AttachmentNameMatchesPatterns <Pattern[]>] [-AttachmentSizeOver <ByteQuantifiedSize>] [-BetweenMemberOf1 <RecipientIdParameter[]>] [-BetweenMemberOf2 <RecipientIdParameter[]>] [-BlindCopyTo <RecipientIdParameter[]>] [-Comments <String>] [-Confirm [<SwitchParameter>]] [-CopyTo <RecipientIdParameter[]>] [-DeleteMessage <$true | $false>] [-Disconnect <$true | $false>] [-DomainController <Fqdn>] [-Enabled <$true | $false>] [-ExceptIfADComparisonAttribute <DisplayName | FirstName | Initials | LastName | Office | PhoneNumber | OtherPhoneNumber | Email | Street | POBox | City | State | ZipCode | Country | UserLogonName | HomePhoneNumber | OtherHomePhoneNumber | PagerNumber | MobileNumber | FaxNumber | OtherFaxNumber | Notes | Title | Department | Company | Manager | CustomAttribute1 | CustomAttribute2 | CustomAttribute3 | CustomAttribute4 | CustomAttribute5 | CustomAttribute6 | CustomAttribute7 | CustomAttribute8 | CustomAttribute9 | CustomAttribute10 | CustomAttribute11 | CustomAttribute12 | CustomAttribute13 | CustomAttribute14 | CustomAttribute15>] [-ExceptIfADComparisonOperator <Equal | NotEqual>] [-ExceptIfAnyOfCcHeader <RecipientIdParameter[]>] [-ExceptIfAnyOfCcHeaderMemberOf <RecipientIdParameter[]>] [-ExceptIfAnyOfRecipientAddressContainsWords <Word[]>] [-ExceptIfAnyOfRecipientAddressMatchesPatterns <Pattern[]>] [-ExceptIfAnyOfToCcHeader <RecipientIdParameter[]>] [-ExceptIfAnyOfToCcHeaderMemberOf <RecipientIdParameter[]>] [-ExceptIfAnyOfToHeader <RecipientIdParameter[]>] [-ExceptIfAnyOfToHeaderMemberOf <RecipientIdParameter[]>] [-ExceptIfAttachmentContainsWords <Word[]>] [-ExceptIfAttachmentIsUnsupported <$true | $false>] [-ExceptIfAttachmentMatchesPatterns <Pattern[]>] [-ExceptIfAttachmentNameMatchesPatterns <Pattern[]>] [-ExceptIfAttachmentSizeOver <ByteQuantifiedSize>] [-ExceptIfBetweenMemberOf1 <RecipientIdParameter[]>] [-ExceptIfBetweenMemberOf2 <RecipientIdParameter[]>] [-ExceptIfFrom <RecipientIdParameter[]>] [-ExceptIfFromAddressContainsWords <Word[]>] [-ExceptIfFromAddressMatchesPatterns <Pattern[]>] [-ExceptIfFromMemberOf <RecipientIdParameter[]>] [-ExceptIfFromScope <InOrganization | NotInOrganization>] [-ExceptIfHasClassification <String>] [-ExceptIfHasNoClassification <$true | $false>] [-ExceptIfHeaderContainsMessageHeader <HeaderName>] [-ExceptIfHeaderContainsWords <Word[]>] [-ExceptIfHeaderMatchesMessageHeader <HeaderName>] [-ExceptIfHeaderMatchesPatterns <Pattern[]>] [-ExceptIfManagerAddresses <RecipientIdParameter[]>] [-ExceptIfManagerForEvaluatedUser <Sender | Recipient>] [-ExceptIfMessageTypeMatches <OOF | AutoForward | Encrypted | Calendaring | PermissionControlled | Voicemail | Signed | ApprovalRequest | ReadReceipt>] [-ExceptIfRecipientADAttributeContainsWords <Word[]>] [-ExceptIfRecipientADAttributeMatchesPatterns <Pattern[]>] [-ExceptIfRecipientAddressContainsWords <Word[]>] [-ExceptIfRecipientAddressMatchesPatterns <Pattern[]>] [-ExceptIfRecipientInSenderList <Word[]>] [-ExceptIfSCLOver <SclValue>] [-ExceptIfSenderADAttributeContainsWords <Word[]>] [-ExceptIfSenderADAttributeMatchesPatterns <Pattern[]>] [-ExceptIfSenderInRecipientList <Word[]>] [-ExceptIfSenderManagementRelationship <Manager | DirectReport>] [-ExceptIfSentTo <RecipientIdParameter[]>] [-ExceptIfSentToMemberOf <RecipientIdParameter[]>] [-ExceptIfSentToScope <InOrganization | NotInOrganization | ExternalPartner | ExternalNonPartner>] [-ExceptIfSubjectContainsWords <Word[]>] [-ExceptIfSubjectMatchesPatterns <Pattern[]>] [-ExceptIfSubjectOrBodyContainsWords <Word[]>] [-ExceptIfSubjectOrBodyMatchesPatterns <Pattern[]>] [-ExceptIfWithImportance <Low | Normal | High>] [-From <RecipientIdParameter[]>] [-FromAddressContainsWords <Word[]>] [-FromAddressMatchesPatterns <Pattern[]>] [-FromMemberOf <RecipientIdParameter[]>] [-FromScope <InOrganization | NotInOrganization>] [-HasClassification <String>] [-HasNoClassification <$true | $false>] [-HeaderContainsMessageHeader <HeaderName>] [-HeaderContainsWords <Word[]>] [-HeaderMatchesMessageHeader <HeaderName>] [-HeaderMatchesPatterns <Pattern[]>] [-LogEventText <Nullable>] [-ManagerAddresses <RecipientIdParameter[]>] [-ManagerForEvaluatedUser <Sender | Recipient>] [-MessageTypeMatches <OOF | AutoForward | Encrypted | Calendaring | PermissionControlled | Voicemail | Signed | ApprovalRequest | ReadReceipt>] [-ModerateMessageByManager <$true | $false>] [-ModerateMessageByUser <RecipientIdParameter[]>] [-Organization <OrganizationIdParameter>] [-PrependSubject <Nullable>] [-Priority <Int32>] [-Quarantine <$true | $false>] [-RecipientADAttributeContainsWords <Word[]>] [-RecipientADAttributeMatchesPatterns <Pattern[]>] [-RecipientAddressContainsWords <Word[]>] [-RecipientAddressMatchesPatterns <Pattern[]>] [-RecipientInSenderList <Word[]>] [-RedirectMessageTo <RecipientIdParameter[]>] [-RejectMessageEnhancedStatusCode <RejectEnhancedStatus>] [-RejectMessageReasonText <RejectText>] [-RemoveHeader <HeaderName>] [-SCLOver <SclValue>] [-SenderADAttributeContainsWords <Word[]>] [-SenderADAttributeMatchesPatterns <Pattern[]>] [-SenderInRecipientList <Word[]>] [-SenderManagementRelationship <Manager | DirectReport>] [-SentTo <RecipientIdParameter[]>] [-SentToMemberOf <RecipientIdParameter[]>] [-SentToScope <InOrganization | NotInOrganization | ExternalPartner | ExternalNonPartner>] [-SetHeaderName <HeaderName>] [-SetHeaderValue <HeaderValue>] [-SetSCL <SclValue>] [-SmtpRejectMessageRejectStatusCode <Nullable>] [-SmtpRejectMessageRejectText <Nullable>] [-SubjectContainsWords <Word[]>] [-SubjectMatchesPatterns <Pattern[]>] [-SubjectOrBodyContainsWords <Word[]>] [-SubjectOrBodyMatchesPatterns <Pattern[]>] [-WhatIf [<SwitchParameter>]] [-WithImportance <Low | Normal | High>]

 

Pour connaitre les prédicats de conditions la commande n’as pas changée. Cependant la nous pouvons noter quelques critéres supplémentaires….

Cependant malgré cela, la création de la même régle en Exchange 2010 est devenue nettement plus simple comme le montre l’exemple suivant :

De plus lors de création en mode de commande il est possible d’adresser dans le cas du blindcopy des adresses Email externes sans avoir a déclarer un quelquonque object de type mailuser dans l’environnement Exchange 2010 Exemple :

Si vous essayer de faire cela en Exchange 2007 voici ce que cela donne. Pour que cela fonctionne il faut créer un objet de type Mailuser.

Pour plus d’information vous pouvez vous reporter aux liens suivants :

Exchange 2010 New-transportrule : http://technet.microsoft.com/fr-fr/library/bb125138.aspx

Exchange 2007 New-transportrule : http://technet.microsoft.com/fr-fr/library/bb125138(EXCHG.80).aspx

Laurent Teruin

 

 

 

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :