Espressioni regolari nelle regole di trasporto

 

Si applica a: Exchange Server 2010 SP2, Exchange Server 2010 SP3

Ultima modifica dell'argomento: 2016-03-18

È possibile utilizzare le espressioni regolari nei predicati delle regole di trasporto di MicrosoftExchange Server 2010 che corrispondono ai pattern di testo in varie parti del messaggio (come ad esempio le intestazioni del messaggio, il mittente, i destinatari, l'oggetto del messaggio e il corpo). I predicati vengono utilizzati dalle condizioni e dalle eccezioni per determinare l'opportunità o meno di applicare un'azione configurata a un messaggio di posta elettronica.

Nota

A causa delle variazioni negli ambienti dei clienti, il Servizio Supporto Tecnico Clienti Microsoft non può partecipare alla fase di sviluppo o di test degli script Espressioni regolari ("script RegEx"). Per lo sviluppo, il test e il debug di script RegEx personalizzati, i clienti di Office 365 devono fare affidamento sulle risorse IT interne. In alternativa, i clienti di Office 365 possono scegliere di usare una risorsa di consulenza esterna, come ad esempio Microsoft Consulting Services (MCS). Indipendentemente dalla risorsa di sviluppo dello script, i tecnici del supporto di EXO, CSS ed EOP non possono assistere i clienti con richieste di script RegEx personalizzati.

Per informazioni sulle altre attività di gestione relative alle regole di trasporto, vedere Gestione delle regole di trasporto.

Sommario

Espressioni semplici ed espressioni regolari

Espressioni regolari in Exchange 2010

Creazione di una regola di trasporto che consente di utilizzare un'espressione regolare

Espressioni semplici ed espressioni regolari

Per comprendere le espressioni regolari, è necessario innanzitutto comprendere le espressioni semplici. Un'espressione semplice è un valore specifico che si desidera far corrispondere esattamente in un messaggio. I predicati che utilizzano espressioni semplici corrispondono a parole specifiche o stringhe. Un esempio di espressione semplice è costituito dal titolo di un documento che la propria organizzazione non intende distribuire all'esterno, ad esempio Yearly Sales Forecast.doc. Una porzione di dati contenuti in un messaggio di posta elettronica deve corrispondere esattamente a un'espressione semplice per poter soddisfare una condizione o un'eccezione nelle regole di trasporto.

Un'espressione regolare è una notazione concisa e flessibile che consente di trovare pattern di testo in un messaggio. La notazione è composta da due tipi di carattere di base:

  • Caratteri letterali   Testo che deve trovarsi nella stringa di destinazione. Si tratta di caratteri normali, come sono stati digitati.

  • Metacaratteri   Uno o più caratteri speciali che non vengono interpretati letteralmente. Indicano come il testo può variare nella stringa di destinazione.

Le espressioni regolari possono essere utilizzate per analizzare rapidamente i messaggi di posta elettronica per trovare pattern di testo specifici. Questo permette di rilevare i messaggi con tipi specifici di contenuto, come i codici fiscali, i numeri dei brevetti e i numeri di telefono.

Non è possibile associare questi dati a un'espressione semplice in quanto per quest'ultima è necessario specificare ogni possibile variazione del valore che si desidera individuare. In molti casi, l'uso di espressioni semplici per applicazioni di questo tipo diventa una sfida logistica e trovare una corrispondenza con un gran numero di espressioni semplici nel contenuto del messaggio può diventare un'attività complessa. L'utilizzo di espressioni regolari è in genere più efficace. Invece di specificare tutte le possibili varianti, è possibile configurare il predicato della regola di trasporto per la ricerca di un pattern di testo.

Espressioni regolari in Exchange 2010

In Exchange Management Shell è possibile utilizzare le espressioni regolari in qualsiasi predicato che accetta la proprietà del predicato Patterns. In Exchange Management Console è possibile utilizzare le espressioni regolari con qualsiasi condizione o eccezione che contiene le parole con pattern di testo. Per ulteriori informazioni sui predicati, vedere Predicati delle regole di trasporto.

Avviso

È necessario verificare attentamente le espressioni regolari create per assicurarsi che forniscano i risultati previsti. Un'espressione regolare non correttamente configurata potrebbe produrre corrispondenze non previste e causare un comportamento anomalo delle regole di trasporto. Ciò può causare azioni indesiderate nei messaggi e nel contenuto dei messaggi, con potenziale perdita di dati quando le azioni prevedono il rifiuto o il bounce del messaggio. Inoltre, le espressioni regolari complesse possono influenzare le prestazioni del trasporto di posta. È opportuno testare le espressioni regolari in un ambiente di prova prima di implementarle nell'ambiente di produzione.

Nella tabella seguente sono elencate tutte le stringhe dei pattern che possono essere utilizzati per creare un'espressione regolare corrispondente al pattern in Exchange 2010.

Stringhe del pattern

Stringa del pattern Descrizione

\S

La stringa del pattern \S corrisponde a qualsiasi carattere singolo diverso dallo spazio.

\s

La stringa del pattern \s corrisponde a un qualsiasi spazio singolo.

\D

La stringa del pattern \D corrisponde a qualsiasi cifra non numerica.

\d

La stringa del pattern \d corrisponde a qualsiasi cifra numerica singola.

\w

La stringa del pattern \w corrisponde a qualsiasi carattere Unicode singolo categorizzato come lettera o cifra decimale.

\W

La stringa del pattern \W corrisponde a qualsiasi carattere singolo Unicode non categorizzato come lettera o una cifra decimale.

|

Il carattere barra verticale (|) consente di eseguire una funzione OR.

*

Il carattere asterisco (*) corrisponde a zero o più istanze del carattere che lo precede. Ad esempio, ab*c corrisponde alle stringhe seguenti: ac, abc, abbbbc.

( )

Le parentesi fungono da delimitatori di raggruppamenti. Ad esempio, a(bc)* corrisponde alle stringhe seguenti: a, abc, abcbc, abcbcbc e così via.

\

Una barra rovesciata viene utilizzata come carattere di escape prima di un carattere speciale. I caratteri speciali sono i caratteri utilizzati nelle stringhe di pattern:

  • Barra rovesciata (\)

  • Barra verticale (|)

  • Asterisco (*)

  • Parentesi aperta (()

  • Parentesi chiusa ())

  • Accento circonflesso (^)

  • Segno di dollaro ($)

Se si desidera, ad esempio, eseguire la corrispondenza di una stringa contenente (525), digitare \(525\).

^

L'accento circonflesso (^) indica che la stringa del pattern che lo segue deve trovarsi all'inizio della stringa di testo per cui si esegue la corrispondenza.

Ad esempio, ^fred@contoso corrisponde a fred@contoso.com e a fred@contoso.co.uk ma non a alfred@contoso.com.

$

Il simbolo di dollaro ($) indica che la stringa del pattern che lo precede deve trovarsi alla fine della stringa di testo per cui si esegue la corrispondenza.

Ad esempio, contoso.com$ corrisponde a adam@contoso.com e a kim@research.contoso.com ma non a kim@contoso.com.au.

Costruzione di espressioni regolari

Utilizzando la tabella precedente, è possibile creare un'espressione regolare che corrisponde al pattern dei dati che per cui si desidera eseguire la corrispondenza. Esaminare ciascun carattere o gruppo di caratteri contenuti nei dati per cui si desidera eseguire la corrispondenza procedendo da sinistra verso destra. Leggere la descrizione di ciascuna stringa del pattern per determinare il modo in cui viene applicata ai dati per cui si esegue la corrispondenza. Determinare quindi quale stringa del pattern presente nella tabella rappresenta il carattere o il gruppo di caratteri e aggiungerla all'espressione regolare. Al termine, si ottiene un'espressione regolare completamente costruita.

In questo esempio, l'espressione regolare che segue, corrisponde ai numeri telefonici utilizzati nel Nord America nei formati 425 555-0100 e 425.555.0100:

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

È possibile elaborare questo esempio aggiungendo il formato (425) 555-0100, dove le parentesi delimitano il prefisso. In questo esempio, un'espressione regolare corrisponde a tutti e tre i formati di numero di telefono.

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

L'esempio precedente può essere analizzato come segue:

  • \d\d\d   Questa sequenza indica che deve essere preceduta necessariamente da tre cifre numeriche.

  • ((\s|.|-|\)|\)\s)   Questa sequenza indica che il numero a tre cifre deve essere seguito da uno spazio, da un trattino o da un punto. Ciascuna stringa corrispondente a un carattere è contenuta nei delimitatori di raggruppamenti ed è separata dal carattere barra verticale. Ciò significa che solo uno dei caratteri specificati all'interno dei delimitatori di raggruppamenti può trovarsi in questa posizione nella stringa per cui si esegue la corrispondenza. Per la separazione tra il prefisso e le tre cifre successive, cerca anche una parentesi chiusa o una parentesi chiusa e uno spazio.

  • \d\d\d   Questa sequenza indica che deve essere seguita necessariamente da tre cifre numeriche.

  • (\s|.|-)   Questa sequenza indica che il numero a tre cifre deve essere seguito da uno spazio, da un trattino o da un punto.

  • \d\d\d\d   Questa sequenza indica che deve essere seguita necessariamente da quattro cifre numeriche.

L'espressione regolare sopra riportata corrisponderà ai valori di esempio riportati di seguito:

  • (425)555.0100

  • 425 555 0100

  • 425. 555-0100

  • (425) 555-0100

  • 425-555-0100

  • (425) 555-0100

Creazione di una regola di trasporto che consente di utilizzare un'espressione regolare

In questo esempio viene creata una regola di trasporto in Shell che utilizza espressioni regolari da corrispondere ai numeri dei codici fiscali presenti nell'oggetto di un messaggio di posta elettronica.

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" 

In questo esempio si può visualizzare la nuova regola di trasporto.

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

 ©2010 Microsoft Corporation. Tutti i diritti riservati.