次の方法で共有


Exchange Onlineのメール フロー ルールの正規表現

メール フロー ルール (トランスポート ルールとも呼ばれます) の条件と例外で正規表現 (RegEx) を使用して、メッセージのさまざまな部分 (メッセージ ヘッダー、送信者、受信者、件名、メッセージ本文など) のテキスト パターンを一致させることができます。 条件と例外は、ルール内のアクションを電子メール メッセージに適用するかどうかを決定します。

注:

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

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

単純式と正規表現

単純式は、メッセージ内で正確に一致させる特定の値です。 単純な式を使用する条件と例外は、特定の単語またはテキスト文字列と一致します。 たとえば、 Yearly Sales Forecast.docxという名前のドキュメントを検索するメール フロー ルールの条件です。

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

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

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

単純な式では検出する値のすべてのバリエーションが必要であるため、変数データを単純な式と合理的に一致させることはできません。 メッセージ コンテンツ内の多数の単純な式に一致すると、リソースを集中的に消費する可能性があります。 正規表現の使用の方が効率的です。 可能なすべてのバリエーションを指定する代わりに、テキスト パターンを検索するようにメール フロー ルールの条件を構成できます。

Exchange Onlineの正規表現

Exchange Online PowerShell では、末尾にパラメーター名が正規表現をMatchesPatterns使用します。 Exchange 管理センター (EAC) では、..で終わる条件と例外名。は、正規表現を使用するこれらのテキスト パターンのいずれかに一致します。 Exchange Onlineのメール フロー ルールの条件と例外の詳細については、Exchange Onlineの「メール フロー ルールの条件と例外 (述語)」を参照してください。

警告

正規表現を慎重にテストします。 正規表現が正しく構成されていないと、予期しない一致が発生し、次のような不要なメール フロー ルールの動作が発生する可能性があります。

  • メッセージとメッセージ コンテンツに対する望ましくないアクション。
  • 潜在的なデータ損失。

複雑な正規表現は、メール フローのパフォーマンスにも影響する可能性があります。 正規表現を運用環境に実装する前に、テスト環境でテストするようにしてください。

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

パターン文字列 説明
\S \S パターン文字列は、スペース以外の任意の 1 文字と一致します。
\s \s パターン文字列は、任意の 1 つのスペース文字と一致します。
\D \D パターン文字列は、数値以外の任意の桁数と一致します。
\d \d パターン文字列は、任意の 1 つの数値の桁数と一致します。
\w \w パターン文字列は、文字または 10 進数字として分類された 1 つの Unicode 文字と一致します。
\W \W パターン文字列は、文字または数値として分類されない 1 つの Unicode 文字と一致します。
* アスタリスク ( * ) 文字は、前の文字の 0 個以上のインスタンスと一致します。 たとえば、ab*cおよび の文字列acabcabbbbc一致します。
| パイプ ( | ) 文字は、OR 演算子として機能します。 たとえば、'contoso|fabrikam' は、 または のfabrikam任意のcontosoインスタンスと一致します。
( ) かっこは、グループ化の区切り記号として機能します。 たとえば、\a(bc)*\などの文字列abcbcaabcabcbcbcと一致します。
\ 円記号は、特殊文字の前のエスケープ文字として使用されます。 パターン文字列で使用される特殊文字は、次のとおりです。
  • バック スラッシュ \
  • パイプ |
  • アスタリスク *
  • かっこを開く (
  • かっこを閉じる )
  • キャレット ^
  • ドル記号 $

たとえば、 を含む文字列と一致させる場合は、 (525)を使用します \(525\)

^ キャレット ( ^ ) 文字は、一致するテキスト文字列の先頭にキャレットに続くパターン文字列が存在する必要があることを示します。 たとえば、 ^fred@contoso は と 一致しますfred@contoso.comfred@contoso.co.ukが、 は一致しませんalfred@contoso.com
$ ドル記号 ( $ ) 文字は、一致するテキスト文字列の末尾に、前のパターン文字列が存在する必要があることを示します。 たとえば、 contoso.com$kim@research.contoso.com が一致しますadam@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: 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

正規表現を使用するメール フローの作成

次の例では、Exchange Online PowerShell にメール フロー ルールを作成し、正規表現を使用して電子メール メッセージの件名の SSN と一致させます。

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"

詳細な構文とパラメーターについては、「New-TransportRule」を参照してください。

次の例は、新しいメール フロー ルールを示しています。

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

詳細な構文およびパラメーターの情報については、Get-TransportRule を参照してください。