次の方法で共有


トランスポート ルールの正規表現

適用対象: Exchange Server 2013、Exchange Server 2016、Exchange Server 2019、Exchange Online

Microsoft Exchange Server 2013 トランスポート ルール述語の正規表現を使用して、メッセージのさまざまな部分 (メッセージ ヘッダー、送信者、受信者、メッセージの件名、本文など) のテキスト パターンと一致させることができます。 述語は、構成済みのアクションをメール メッセージに適用する必要があるかどうかを判断するために条件と例外で使用されます。

注:

お客様の環境の違いにより、Microsoft カスタマー サポート サービス (CSS) は、カスタム正規表現スクリプト ("RegEx スクリプト") の開発またはテストに参加できません。 RegEX カスタム スクリプトの開発、テスト、デバッグのために、Office 365お客様は内部 IT リソースに依存する必要があります。 あるいは、Office 365 のお客様は、Microsoft Consulting Services (MCS) などの外部コンサルティング リソースの利用をお選びいただけます。 スクリプト開発リソースに関係なく、CSS EXO および EOP サポート エンジニアは、カスタム RegEx スクリプトの問い合わせを顧客に支援するために使用できません。

トランスポート ルールに関連する管理タスクをお探しですか? 「トランスポート ルールの管理」を参照してください。

コンテンツ

この記事に含まれるセクションは次のとおりです。

単純式と正規表現

正規表現を理解するには、まず単純な式を理解する必要があります。 単純式は、メッセージ内で正確に一致させる特定の値です。 単純な式を使用する述語は、特定の単語または文字列と一致します。 単純な式の例としては、組織が組織外に配布したくないドキュメントのタイトル ( Yearly Sales Forecast.docなど) があります。電子メール メッセージ内のデータは、トランスポート ルールの条件または例外を満たすために、単純な式と完全に一致する必要があります。

正規表現とは、メッセージ内のテキストのパターンを検出するための簡潔で柔軟な表記法です。 表記は、2 つの基本的な文字の種類で構成されます。

  • リテラル文字: ターゲット文字列に存在する必要があるテキスト。 これらの文字は、型指定された通常の文字です。
  • メタ文字: リテラルで解釈されない 1 つ以上の特殊文字。 これらの文字は、ターゲット文字列内のテキストがどのように変化するかを示します。

正規表現を使用すると、電子メール メッセージをすばやく解析して、特定のテキスト パターンを見つけることができます。 これらの式を使用すると、社会保障番号 (SSN)、特許番号、電話番号など、特定の種類のコンテンツを含むメッセージを検出できます。

単純表現では検出する値のすべての可能なバリエーションを入力する必要があるため、このデータを単純表現と合理的に一致させることはできません。 多くの場合、このようなアプリケーションに単純な式を使用することは物流上の課題となり、メッセージ コンテンツ内の多数の単純な式の照合はリソースを集中的に消費する可能性があります。 正規表現の使用の方が効率的です。 すべての可能なバリエーションを指定する代わりに、テキスト パターンを検索するためのトランスポート ルール述語を構成できます。

Exchange Server 2013 の正規表現

Exchange 管理シェルでは、 Patterns 述語プロパティを受け入れる任意の述語で正規表現を使用できます。 Exchange 管理コンソールでは、テキスト パターンを含む単語を含む任意の条件または例外で正規表現を使用できます。 述語の詳細については、「Transport Rule Predicates」を参照してください。

警告

予期した結果が得られるように、構築する正規表現を慎重にテストする必要があります。 正規表現を誤って構成すると、予期しない一致が発生したり、不要なトランスポート ルールの動作が生じたりする場合があります。 これらの影響により、メッセージやメッセージ コンテンツに対して望ましくないアクションが実行される可能性があり、メッセージの拒否やバウンスなどのアクションを使用すると、データが失われる可能性があります。 また、複雑な正規表現は、電子メールトランスポートのパフォーマンスに影響を与える可能性があります。 正規表現を運用環境に実装する前に、テスト環境でテストするようにしてください。

次の表に、Exchange Server 2013 でパターンマッチング正規表現を作成するために使用できるパターン文字列の一覧を示します。

パターン文字列 説明
\S \S パターン文字列は、スペース以外の任意の 1 文字と一致します。
\s \s パターン文字列は、任意の 1 つのスペース文字と一致します。
\D \D パターン文字列は、数値以外の任意の桁数と一致します。
\d \d パターン文字列は、任意の 1 つの数値の桁数と一致します。
\w \w パターン文字列は、文字または 10 進数字として分類された 1 つの Unicode 文字と一致します。
\W \W パターン文字列は、文字または数値として分類されない 1 つの Unicode 文字と一致します。
* アスタリスク ( * ) 文字は、その前にある文字の 0 個以上のインスタンスと一致します。 たとえば、ab*c は、ac、abc、abbbbc という文字列と一致します。
( ) かっこは、グループ化の区切り記号として機能します。 たとえば、a(bc)* は、a、abc、abcbc、abcbcbc などの文字列と一致します。
\ 円記号は、特殊文字の前にエスケープ文字として使用されます。 特殊文字は、パターン文字列で使用される文字です: 円記号 ( \ );パイプ;アスタリスク ( * );かっこを開く ( ( );かっこ ( ) を閉じます。キャレット ( ^ );ドル記号 ( $ )。 たとえば、(525) を含む文字列と一致させる場合は、「(525)」と入力します。
^ キャレット (^) 文字は、キャレットに続くパターン文字列が、一致させる文字列の先頭に存在する必要があることを示します。 たとえば、^fred@contoso は と一致します fred@contoso.com が、 fred@contoso.co.uk は一致しません alfred@contoso.com。
$ ドル記号 $ 文字は、一致するテキスト文字列の末尾に、前のパターン文字列が存在する必要があることを示します。 たとえば、contoso.com$ は と 一致しますadam@contoso.comkim@research.contoso.comが、 と一致kim@contoso.com.auしません。

正規表現の構築

前の表を使用することにより、一致させる必要のあるデータのパターンと一致する正規表現を作成できます。 一致させる必要のあるデータ内の各文字または文字のグループを、左から右に順に調べます。 各パターン文字列の説明を参照し、それが一致させる必要のあるデータにどのように適用されるかを判断してください。 次に、その文字または文字のグループを表す表内のパターン文字列を特定し、そのパターン文字列を正規表現に追加します。 終了すると、完全に構築された正規表現が得られます。

この正規表現の例は、425 555-0100 および 425.555.0100 という形式の北米の電話番号と一致します。

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

この例は、市外局番の前後にかっこを使用した (425) 555-0100 という電話番号形式を追加することによって拡張できます。 この正規表現の例は、3 つの電話番号すべての形式と一致します。

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

前の例は、次のように分析できます。

  • \d\d\d: この部分では、3 桁の数字が最初に表示される必要があります。
  • ((\s|.|-|)|)\s): この部分では、3 桁の数字の後にスペース、ピリオド、またはハイフンが存在する必要があります。 文字と一致させる各文字列が、グループ化の区切り記号内に含まれ、パイプ文字で区切られています。 この区切りは、グループ化区切り記号内の指定された文字の 1 つだけが、一致する文字列内のこの場所に存在できることを意味します。 エリア コードと次の 3 桁の数字を区別するために、閉じたかっこ、または閉じたかっことスペースも検索します。
  • \d\d\d: この部分では、次に 3 桁の数字が表示される必要があります。
  • (\s|.|-): この部分では、3 桁の数値の後にスペース、ピリオド、またはハイフンが存在する必要があります。
  • \d\d\d\d: この部分では、4 桁の数字が次に表示される必要があります。

上記の正規表現は、次のサンプル値と一致します。

  • (425)555.0100
  • 425 555 0100
  • 425 555 0100
  • (425) 555-0100
  • 425-555-0100
  • (425) 555-0100

正規表現を使用するトランスポート ルールの作成

次の使用例は、電子メール メッセージの件名で正規表現を使用して SSN と一致させるトランスポート ルールを PowerShell に作成します。

   New-TransportRule -Name "Social Security Number Block Rule" -SubjectOrBodyMatchesPatterns '\d\d\d-\d\d-\d\d\d\d' -RejectMessageEnhancedStatusCode "5.7.1" -RejectMessageReasonText "This message has been rejected because of content restrictions"

この例では、新しいトランスポート ルールを表示できます。

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