다음을 통해 공유


전송 규칙의 정규식

 

적용 대상: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

마지막으로 수정된 항목: 2009-04-09

이 항목에서는 전송 규칙에서 조건자와 함께 사용할 수 있는 정규식의 구현에 대해 설명합니다. 조전자는 구성된 작업을 전자 메일 메시지에 적용해야 하는지 결정하기 위해 조건 및 예외에서 사용됩니다.

전송 규칙에 대한 자세한 내용은 전송 규칙 개요를 참조하십시오.

정규식이란 무엇입니까?

먼저 단순식이 무엇인지부터 이해해야 합니다. 단순식은 사용자가 조건 또는 예외와 일치시키고자 하는 특정 값을 나타냅니다. 단순식의 예로 조직에서 외부로 배포되기를 원하지 않는 문서의 제목을 들 수 있습니다. 전자 메일 메시지의 데이터는 전송 규칙의 조건 또는 예외를 만족하도록 단순식과 정확하게 일치해야 합니다.

정규식은 메시지에서 텍스트의 패턴을 찾는 데 사용되는 간결하고 유연한 표기법입니다. 이 표기법은 두 개의 기본 문자 유형인 리터럴(일반) 텍스트 문자와 메타 문자로 구성됩니다. 리터럴 문자는 대상 문자열에 반드시 있어야 하는 텍스트를 나타내며, 메타 문자는 텍스트가 대상 문자열에서 다양화될 수 있는 방법을 나타내거나 이를 제어합니다. 정규식을 사용하면 전자 메일 메시지를 빠르게 구문 분석하여 특정 문자 패턴을 찾을 수 있습니다.

전자 메일 메시지의 텍스트 패턴을 찾는 기능을 사용하면 동적으로 변경될 수 있는 메시지에 포함된 데이터에 대해 조건자를 일치시킬 수 있습니다. 이러한 데이터의 예로는 SSN(사회 보장 번호)과 특허 번호가 있습니다. 이러한 데이터는 단순식에는 적절히 일치시킬 수 없는데, 이는 단순식의 경우 검색하려는 값의 모든 변형을 입력해야 하기 때문입니다. 정규식을 사용하면 메시지에서 SSN이나 특허 번호의 패턴을 검색할 수 있는 조건자를 구성할 수 있습니다.

모든 조건 또는 예외 규칙 조건자에서 정규식을 사용할 수 있습니다. 단, "배달 보고서"는 예외입니다. 정규식 패턴 일치를 허용하는 조건자에 대한 자세한 내용은 전송 규칙 조건부를 참조하십시오.

정규식 구현

Exchange 관리 셸에서는 Patterns 조건자 속성을 허용하는 모든 조건자에서 정규식을 사용할 수 있습니다. Exchange 관리 콘솔에서는 텍스트 패턴이 있는 단어가 포함된 모든 조건 또는 예외에서 정규식을 사용할 수 있습니다. 표 1에서는 패턴 일치 정규식을 만드는 데 사용할 수 있는 모든 패턴 문자열을 보여 줍니다.

경고

사용자가 만든 정규식은 신중히 테스트하여 원하는 결과가 산출되는지 확인해야 합니다. 잘못 구성된 정규식은 예기치 않은 결과를 산출하고 불필요한 전송 규칙 동작을 야기할 수 있습니다. 프로덕션 환경에서 구현하기 전에 테스트 환경에서 정규식을 테스트하십시오.

표 1   패턴 문자열

패턴 문자열 설명

\S

\S 패턴 문자열은 공백이 아닌 모든 단일 문자와 일치합니다.

\s

\s 패턴 문자열은 모든 단일 공백 문자와 일치합니다.

\D

\D 패턴 문자열은 숫자가 아닌 모든 문자와 일치합니다.

\d

\d 패턴 문자열은 모든 한 자리 숫자와 일치합니다.

\w

\w 패턴 문자열은 문자 또는 10진수로 분류된 단일 유니코드 문자와 일치합니다.

|

파이프( | ) 문자는 OR 함수를 수행합니다.

*

와일드카드( * ) 문자는 0개 이상의 이전 문자 인스턴스와 일치합니다. 예를 들어 ab*cac, abc, abbbbc 문자열과 일치합니다. ac, abc, abbbbc.

( )

괄호는 그룹 구분 기호의 역할을 합니다. 예를 들어, a(bc)*a, abc, abcbc, abcbcbc 등의 문자열과 일치합니다.

\

백슬래시( \ )는 특수 문자와 함께 사용되는 이스케이프 문자입니다. 특수 문자는 패턴 문자열에 사용되는 다음과 같은 문자입니다.

  • 백슬래시: \

  • 파이프: |

  • 별표: *

  • 여는 괄호: (

  • 닫는 괄호: )

  • 캐럿: ^

  • 달러 기호: $

예를 들어 (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   정확하게 세 자리 숫자가 다음에 와야 합니다.

  • (\\)|\s|.)   세 자리 숫자 다음에 여는 괄호, 공백 또는 마침표가 와야 합니다. 각 문자 일치 문자열은 그룹 구분 기호에 포함되며 파이프 문자로 구분됩니다. 즉, 그룹 구분 기호 내에서 지정된 문자 중 하나만 일치시킬 문자열에서 이 위치에 올 수 있습니다.

  • \d\d\d   정확하게 세 자리 숫자가 다음에 와야 합니다.

  • (-|.)   세 자리 숫자 다음에 하이픈이나 마침표가 와야 합니다. 구룹 구분 기호에 하이픈과 마침표가 있기 때문에 일치시킬 문자열의 이 위치에는 둘 중 하나만 올 수 있습니다.

  • \d\d\d\d   정확하게 네 자리 숫자가 다음에 와야 합니다.

정규식을 사용하는 전송 규칙의 예

다음 예에서는 Exchange 관리 셸에서 새로운 규칙을 만들 때 정규식을 사용할 수 있는 방법을 보여 줍니다.

전자 메일 메시지의 제목에 있는 SSN(사회 보장 번호)과 일치하는 정규식을 사용하는 전송 규칙을 만들려면 다음을 수행합니다.

  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

자세한 내용

각 명령의 구문과 매개 변수에 대한 자세한 내용은 다음 항목을 참조하십시오.

전송 규칙에 대한 자세한 내용은 다음 항목을 참조하십시오.