傳輸規則中的規則運算式

 

適用版本: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上次修改主題的時間: 2009-04-09

本主題說明可以與傳輸規則上的述詞搭配使用之規則運算式的執行方式。述詞是供條件及例外狀況使用,用以判定是否應該將設定的動作套用至電子郵件。

如需傳輸規則的相關資訊,請參閱傳輸規則的概觀

何謂規則運算式?

首先,您必須先了解什麼是簡易運算式。「簡易運算式」代表您想要與條件或例外狀況進行比對的特定值。舉例來說,您的組織不想要散佈到組織外部的文件標題,即為簡易運算式的一例。電子郵件中的部分資料必須完全符合簡易運算式,才能滿足傳輸規則中的條件或例外狀況。

「規則運算式」是簡要並具彈性的表示法,用以尋找郵件中的文字模式。表示法是由兩種基本字元類型所組成:文字 (一般) 文字字元 (指出必須存在於目標字串中的文字) 及中繼字元 (指出或控制文字在目標字串中的變化)。您可以使用規則運算式來快速剖析電子郵件,以找出特定的字元模式。

在電子郵件中尋找文字模式的功能可讓您比對述詞與郵件中會動態變更的資料。這類資料的範例包括「身分證號碼」(SSN) 及專利號碼。因為簡易運算式需要您輸入想要偵測之值的每個變化,所以理論上並不能使用簡易運算式來比對此資料。而透過使用規則運算式,便可以設定述詞來搜尋郵件中之 SSN 或專利號碼的模式。

您可以將規則運算式用於任何條件或例外狀況規則述詞,但不含 "is a delivery report"。如需接受規則運算式模式比對之述詞的相關資訊,請參閱傳輸規則述詞

執行規則運算式

在 Exchange 管理命令介面中,您可以將規則運算式用於所有接受 Patterns 述詞內容的述詞。在 Exchange 管理主控台中,您可以將規則運算式與所有含有 with text patterns 字詞的條件及例外狀況搭配使用。表 1 列出所有可用來建立模式比對規則運算式的模式字串。

Caution請注意:
您必須仔細測試所建構的規則運算式,以確定它們會產生預期的結果。不正確地設定規則運算式會產生未預期的比對結果,並造成不想要的傳輸規則行為。請先在測試環境中測試規則運算式,然後再實際執行它們。

表 1   模式字串

模式字串 描述

\S

\S 模式字串會比對所有不是空格的單一字元。

\s

\s 模式字串會比對所有單一空白字元。

\D

\D 模式字串會比對所有非數字的字元。

\d

\d 模式字串會比對所有單一數字。

\w

\w 模式字串會比對所有依字母或十進位數字分類的單一 Unicode 字元。

|

管線 (|) 字元會執行 OR 函數。

*

萬用字元 (*) 會比對零或多個前一個字元的執行個體。例如,ab*c 符合下列字串: ac, abc, abbbbc.

( )

括號會作為群組分隔符號。例如,a(bc)* 符合下列字串:aabcabcbcabcbcbc,以此類推。

\

反斜線 ( \ ) 是用於搭配特殊字元的逸出字元。特殊字元是用於模式字串中的下列字元:

  • 反斜線:\
  • 垂直線:|
  • 星號:*
  • 左括弧:(
  • 右括弧:)
  • 插入符號:^
  • 貨幣符號:$

例如,如果想要比對含有 (525) 的字串,請輸入 \(525\)。

\\

如果要讓反斜線字元被視為反斜線,而非逸出字元,則會使用兩個反斜線。例如,如果想要比對含有 \d 的字串,請輸入 \\d

^

插入號 (^) 字元指出接在插入號後面的模式字串必須存在於正在比對之文字字串的開頭。例如,^fred@contoso 會比對 fred@contoso.com fred@contoso.co.uk,但是不會比對 alfred@contoso.com

此字元也可以與貨幣 ($) 字元搭配使用,以指定要比較的確切字串。例如,^kim@contoso.com$ 只符合 kim@contoso.com 而不符合其他項目,如 kim@contoso.com.au

$

貨幣 ($) 字元指出前面的模式字串必須存在於正在比對之文字字串的結尾。例如,contoso.com$ 會比對 adam@contoso.com kim@research.contoso.com,但是不會比對 kim@contoso.com.au

此字元也可以與插入號 (^) 字元搭配使用,以指定要比較的確切字串。例如,^kim@contoso.com$ 只符合 kim@contoso.com 不符合其他項目,如 chris@sales.contoso.com

您可以使用表 1,建構用來比對想要比對之資料模式的規則運算式。請由左至右檢查每個想要比對之資料中的字元或字元群組。讀取每個模式字串的描述,以判定如何將它套用至想要比對的資料中。然後,再判定表 1 中的哪個模式字串代表該字元或字元群組,並將該模式字串新增至規則運算式。完成時,您就會擁有建構完整的規則運算式。

例如,下列規則運算式會比對格式為 425 555-0100 及 425.555.0100 的北美電話號碼:

425(\s|.)\d\d\d(-|.)\d\d\d\d

您可以新增電話格式 (425) 555-0100 (用括號括住區碼),來延伸此範例。下列規則運算式會比對這三種電話號碼格式:

(\\()*\d\d\d(\\)|\s|.)\d\d\d(-|.)\d\d\d\d

您可以依下列方式分析前述範例:

  • (\\()*   此部分讓第一個括號變成選用的。因為右括號也是規則運算式分隔符號,所以必須將它取代為兩個反斜線 \\。成對的 () 括號會與 \\( 字元群組在一起,讓萬用字元 * 可以將 \\(字元處理成選用項目。
  • \d\d\d   此部分要求其後應接 3 位數字。
  • (\\)|\s|.)   此部分要求在三位數字後面要有左括號、空格或句號。每個字元比對字串是包含在群組分隔符號中,且用管線字元予以隔開。這表示正在比對之字串的這個位置中,只可以有群組分隔符號內的其中一個指定字元。
  • \d\d\d   此部分要求其後應接 3 位數字。
  • (-|.)   此部分要求在三位數字後面要有連字號或句號。因為連字號及句號是存在於群組分隔符號中,所以正在比對之字串的這個位置只可以有這兩個字元中的其中一個字元。
  • \d\d\d\d   此部分要求其後應接 4 位數字。

使用規則運算式的傳輸規則範例

下列範例顯示如何在 Exchange 管理命令介面中建立新規則時使用規則運算式:

建立傳輸規則,以使用規則運算式來比對電子郵件之主旨中的「身分證號碼」

  1. 執行下列命令:

    $Condition = Get-TransportRulePredicate SubjectMatches
    $Condition.Patterns = @("\d\d\d-\d\d-\d\d\d\d")
    $Action = Get-TransportRuleAction RejectMessage
    $Action.RejectReason = "The transmission of Social Security Numbers is prohibited."
    New-TransportRule -Name "Social Security Number Block Rule" -Conditions $Condition -Actions $Action 
    
  2. 執行下列命令,即可檢視新的傳輸規則:

    Get-TransportRule "Social Security Number Block Rule" | Format-List
    

執行此 Get-TransportRule 命令時,會顯示下列資訊:

Identity           : Social Security Number Block Rule,753ed939-1227-4b2a-a8e0-ec49b0615f30
Name               : Social Security Number Block Rule
RuleCollectionName : Transport
Priority           : 0
Comments           :
ManuallyModified   : False
Conditions         : {SubjectMatches}
Exceptions         :
Actions            : {RejectMessage}
State              : Enabled
IsValid            : True
ObjectState        : Unchanged

相關資訊

如需各命令的詳細語法及參數的資訊,請參閱下列主題:

如需傳輸規則的相關資訊,請參閱下列主題:

若要確保您目前閱讀的是最新資訊,並尋找其他的 Exchange Server 2007 說明文件,請造訪 Exchange Server 技術資源中心.