Expressões regulares nas regras de transporte

Aplica-se a: Exchange Server 2013, Exchange Server 2016, Exchange Server 2019, Exchange Online

Você pode usar expressões regulares em predicados de regra de transporte Microsoft Exchange Server 2013 para corresponder padrões de texto em diferentes partes de uma mensagem (como cabeçalhos de mensagem, remetente, destinatários, assunto de mensagem e corpo). Predicados são usados por condições e exceções para determinar se uma ação configurada deve ser aplicada a uma mensagem de email.

Observação

Devido às variações nos ambientes do cliente, o CSS (Serviços de Suporte ao Cliente) da Microsoft não pode participar do desenvolvimento ou teste de scripts de expressão regular personalizados ("Scripts RegEx"). Para desenvolvimento, teste e depuração de scripts personalizados regEX, Office 365 clientes precisarão contar com recursos internos de TI. Como alternativa, os clientes do Office 365 podem optar por usar um recurso de consultoria externo como o Microsoft Consulting Services (MCS). Independentemente do recurso de desenvolvimento de script, os engenheiros de suporte do CSS EXO e EOP não estão disponíveis para ajudar os clientes com consultas personalizadas de script RegEx.

Procurando tarefas de gerenciamento relacionadas a regras de transporte? Consulte Managing Transport Rules.

Conteúdos

Este artigo contém as seguintes seções:

Expressões simples versus expressões regulares

Para entender as expressões regulares, é preciso começar entendendo expressões simples. Uma expressão simples é um valor específico que você deseja corresponder exatamente em uma mensagem. Predicados usando expressões simples correspondem a palavras ou cadeias de caracteres específicas. Um exemplo de uma expressão simples é o título de um documento que sua organização não deseja ser distribuído fora da organização, como Vendas Yearis Forecast.doc. Um pedaço de dados em uma mensagem de email deve corresponder exatamente a uma expressão simples para atender a uma condição ou exceção nas regras de transporte.

Uma expressão regular é uma notação concisa e flexível para localização de padrões de texto em uma mensagem. A notação consiste em dois tipos básicos de caracteres:

  • Caracteres literais: texto que deve existir na cadeia de caracteres de destino. Esses caracteres são caracteres normais, conforme digitado.
  • Metacaracters: um ou mais caracteres especiais que não são interpretados literalmente. Esses caracteres indicam como o texto pode variar na cadeia de caracteres de destino.

Você pode usar expressões regulares para analisar rapidamente mensagens de email para encontrar padrões de texto específicos. Essas expressões permitem detectar mensagens com tipos específicos de conteúdo, como SSNs (números de segurança social), números de patente e números de telefone.

Não é possível fazer correspondência para esses dados com uma expressão simples, pois uma expressão simples exige que você insira todas as variações possíveis do valor que deseja detectar. Em muitos casos, o uso de expressões simples para esses aplicativos torna-se um desafio logístico e corresponder a um grande número de expressões simples no conteúdo da mensagem pode ser intensivo em recursos. Usar expressões regulares é mais eficiente. Em vez de especificar todas as variações possíveis, você pode configurar o predicado da regra de transporte para pesquisar um padrão de texto.

Expressões regulares no Exchange Server 2013

No Shell de Gerenciamento do Exchange, você pode usar expressões regulares em qualquer predicado que aceite a propriedade predicado Patterns . No Console de Gerenciamento do Exchange, você pode usar expressões regulares com qualquer condição ou exceção que contenha as palavras com padrões de texto. Para obter mais informações sobre predicados, consulte Transport Rule Predicates.

Aviso

Você deve testar cuidadosamente as expressões regulares que você constrói para garantir que elas produzam os resultados esperados. Uma expressão regular configurada incorretamente pode produzir correspondências inesperadas e causar comportamento indesejado das regras de transporte. Essas implicações podem resultar em ações indesejáveis sendo tomadas em mensagens e conteúdo de mensagens, potencialmente resultando em perda de dados quando ações como rejeitar ou enviar uma mensagem são usadas. Além disso, expressões regulares complexas podem afetar o desempenho do transporte por email. Teste suas expressões regulares em um ambiente de teste antes de implementá-las na produção.

A tabela a seguir lista as cadeias de caracteres de padrão que você pode usar para criar uma expressão regular correspondente a padrões no Exchange Server 2013:

Cadeia de Caracteres padrão Descrição
\S A cadeia de caracteres de padrão \S corresponde a qualquer caractere único que não seja um espaço.
\s A cadeia de caracteres padrão \s corresponde a qualquer espaço em branco único.
\D A cadeia de caracteres padrão \D corresponde a qualquer dígito não-numérico.
\D A cadeia de caracteres padrão \d corresponde a qualquer dígito numérico único.
\W A cadeia de caracteres de padrão \w corresponde a qualquer caractere Unicode categorizado como uma letra ou um dígito decimal.
\W A cadeia de caracteres de padrão \W corresponde a qualquer caractere Unicode não categorizado como uma letra ou dígito decimal.
* O caractere de asterisco ( * ) corresponde a zero ou mais instâncias do caractere anterior. Por exemplo, ab*c corresponde às seguintes cadeias de caracteres: ac, abc e abbbbc.
( ) Parênteses agem como delimitadores de agrupamento. Por exemplo, a(bc)* corresponde às seguintes cadeias de caracteres: a, abc, abcbc, abcbcbc, e assim por diante.
\ Uma barra invertida é usada como um caractere de escape antes de um caractere especial. Caracteres especiais são caracteres usados em cadeias de caracteres de padrão: barra de fundo ( \ ); Tubo; Asterisco ( * ); Parênteses de abertura ( (); Parênteses de fechamento ( ) ); Caret ( ^ ); Sinal de dólar ( $ ). Por exemplo, se você quiser corresponder a uma cadeia de caracteres que contém (525), você digitaria (525).
^ O circunflexo ( ^ ) indica que a cadeia de caracteres de padrão após o circunflexo deve existir no início do texto que está sendo correspondido. Por exemplo, ^fred@contoso corresponde fred@contoso.com e fred@contoso.co.uk , mas não alfred@contoso.com.
$ O caractere de sinal $ de dólar indica que a cadeia de caracteres de padrão anterior deve existir no final da cadeia de caracteres de texto que está sendo correspondida. Por exemplo, contoso.com$ corresponde adam@contoso.com e kim@research.contoso.com, mas não corresponde kim@contoso.com.aua .

Construindo expressões regulares

Usando a tabela anterior, você pode construir uma expressão regular que corresponda ao padrão dos dados que você deseja corresponder. Trabalhando da esquerda para a direita, examine cada caractere ou grupo de caracteres nos dados que você deseja corresponder. Leia a descrição de cada cadeia de caracteres de padrão para determinar como ela se aplica aos dados que você está correspondendo. Em seguida, determine qual cadeia de caracteres de padrão na tabela representa esse caractere ou grupo de caracteres e adicione esse cadeia de caracteres padrão à expressão regular. Quando tiver concluído, você terá uma expressão regular inteiramente construída.

Este exemplo de expressão regular corresponde a números de telefone norte-americanos nos formatos 425 555-0100 e 425.555.0100.

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

Você pode expandir esse exemplo adicionando o formato de telefone (425) 555-0100, que usa parênteses para o código de área. Este exemplo de uma expressão regular corresponde a todos os três formatos de número de telefone.

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

Você pode analisar o exemplo anterior da seguinte maneira:

  • \d\d\d: essa parte requer que exatamente três dígitos numéricos apareçam primeiro.
  • ((\s|.| -|)|) \s): essa parte requer que exista um espaço, um período ou um hífen após o número de três dígitos. Cada cadeia de caracteres de correspondência de caracteres está contida nos delimitadores de agrupamento e separada pela barra vertical. Essa separação significa que apenas um dos caracteres especificados dentro dos delimitadores de agrupamento pode existir nesse local na cadeia de caracteres que está sendo correspondida. Para a separação entre o código de área e os próximos três dígitos, ele também procura um parêntese fechado ou parênteses fechados e espaço.
  • \d\d\d: essa parte requer que exatamente três dígitos numéricos apareçam em seguida.
  • (\s|.| -): essa parte requer que exista um espaço, um período ou um hífen após o número de três dígitos.
  • \d\d\d\d: essa parte requer que exatamente quatro dígitos numéricos apareçam em seguida.

A expressão regular acima irá corresponder aos valores do exemplo a seguir:

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

Criando uma regra de transporte que usa uma expressão regular

Este exemplo cria uma regra de transporte no PowerShell que usa expressões regulares para corresponder a SSNs no assunto de uma mensagem de email.

   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"

Este exemplo permite que você exiba a nova regra de transporte.

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