Sono certo al 100% che un titolo di questo tipo possa destare qualche curiosità, ma ancora una volta la realtà dei sistemi con cui lavoriamo va al di la di ogni possibile fantasia. Credo che convenga andare avanti per spiegare meglio cosa accade...

PROBLEMA
Una piccola premessa: il problema si è verificato recentemente dopo una migrazione da Exchange 2003 ad Exchange 2007 presso un cliente che ha, nella sua organizzazione, anche le mailbox dei suoi agenti a giro per il Mondo (con la M maiuscola) che usano esclusivamente l'OWA per collegarsi alla propria mailbox.

In particolare, uno di questi agenti, dopo aver immesso username e password, si vede recapitare questo chiaro ed esplicativo errore:
 

owa 2007 country 1

TROUBLESHOOTING

In un primo momento ho pensato che il problema fosse legato alla creazione dell'utente, anche perchè così suggerisce la descrizione: la situazione particolare a cui facevo riferimento è la creazione di una nuova mailbox non attraverso l'interfaccia di Exchange 2007 (GUI o powershell poco importa) ma attraverso la vecchia interfaccia dell'ADUC presente con Exchange 2003.
E' infatti risaputo (confused smile ) che dopo aver migrato ad Exchange 2007, la creazione di una mailbox su un server Exchange 2007 da una vecchia ADUC di 2003 non è più supportata e tra le altre cose è causa di un errore in OWA. Tecnicamente parlando, quando si crea una mailbox su 2007 viene impostato anche un parametro "sconosciuto" alla ADUC di 2003: il parametro in questione si chiama ExchangeVersion ed altro non è che un numerello che fa comparire la mailbox come Legacy oppure come User mailbox (tant'è che il suo valore deve essere 0.1 per una mailbox su 2007).
 

Grande è stato lo stupore quando ho visto che l'utente in questione aveva una ExchangeVersion pari a 0.1 e quindi in linea con quella degli altri utenti sad smile e che quindi le mie ricerche dovevano rivolgersi altrove.

Ricordando gli insegnamenti del mio Maestro ("Usa l'event viewer, Luke" - ok, perdonatemi la stro..ata), ho aperto il magico strumento nella speranza che potesse indicarmi la via verso la soluzione del problema e l'event viewer non mi ha deluso  dato che ho trovato questo signore
 

owa 2007 error 1

( P.S. Il nome è di fantasia - cercate un po' Ivan Drago su S. Google)
 Allora, fortunatamente qualcosa c'è: peccato che per avere ulteriori informazioni era necessario alzare il livello di logging per le validazioni OWA. Da un bel (si fa per dire) prompt powershell ho provveduto a dare:
 

    Set-EventLogLevel -Identity "MSExchange ADAccess\Validation" -Level High   

ed ho rifatto un test di login: questa volta l'event viewer mi ha regalato molte più informazioni:

 owa 2007 error 2

Leggendo questo evento sembra che il povero W3WP (WWW Worker process) che gestisce l'applicazione OWA sia andato in crash mentre cercava di elaborare l'attributo CountryOrRegion dell'utente in quanto ques'ultimo riportava un valore non valido rispetto a quanto elencato nella ISO-3166.
Proviamo a leggerlo meglio: la ISO-3166 è quella "norma" dell'ISO che fa corrispondere a ciascun Paese un codice a due lettere (il classico IT per l'Italia, FR per la Francia, ecc. ecc.) e non è niente di più che una semplice tabella. L'evento mi sta dicendo che in questa tabella NON esiste un codice CS il cui nome "amichevole" è Serbia and Montenegro. Oh bella, che all'ISO si siano scordati questo paese whatchutalkingabout smile ? 
 
Se però pensiamo agli eventi di cronaca recente (2006) ci ricorderemo che Serba e Montenegro si sono "amichevolmente" separati diventando rispettivamente  Repubblica Serba e Repubblica del Montenegro: dopo questa separazione, l'ISO si è adeguata buttando via il vecchio codice CS e generando i nuovi codici RS ME, come si evince cercando un po' nel sito dell'ISO relativo ai Country Codes (http://www.iso.org/iso/country_codes.htm).

Ora, Exchange 2007 SP1 (al contrario della prima versione che considerava i due paesi un'unica entità) ha fatto tesoro di questa modifica ed usa una "tabella" aggiornata; al contrario la console Active Directory Users and Computers è un po' più vecchiotta e se si va a guardare le proprietà di un qualunque utente, nella scheda Address si scoprirà che il menù a discesa riporta ancora la vecchia dicitura (nota: per aggiornare ADUC è necessaria una patch da richiedere a Microsoft - codice Q927774)

   ad serbia and montenegro  

Ovviamente chi aveva creato Mr. Ivan Drago lo aveva (giustamente) messo nella Country Serbia and Montenegro, l'unica disponibile sebbene Ivan fosse un Serbo a tutti gli effetti, causando una "discrepanza" tra la lista dell'ADUC e quanto riportato nelle DLL di Exchange.
 
SPIEGAZIONE (?)

La domanda che però sorge spontanea è: ma che cavolo (volevo scrivere un altra parola che comincia sempre con "c") c'entra il country in AD (normalmente messo con scopi puramente descrittivi) con OWA? Purtroppo quelle che sto per fare non sono altro che congetture basate su una serie di notizie raccattate in qua e là sulla rete: è pur vero che alcuni siti sono, in un modo o nell'altro, legati a Microsoft (es. blog degli sviluppatori) ma nè Technet e nè MSDN riportano alcun approfondimento su questa feature (o almeno io non sono stato in grado di trovarlo).
 

La cosa migliore è partire dal comando Set-EventLogLevel: se guardiamo un po' più nel dettaglio la componente su cui stiamo aumentando il livello di log, scopriamo che si tratta di un "sottoprocesso" (chiamato Validation) del processo ADAccess (che, come il nome suggerisce, si occupa di parlare con Active Directory). Che cosa fa Validation? Sostanzialmente sembra che il compito di questo signore sia garantire che tutte le proprietà di un recipient di Exchange siano logicamente corrette. Posso quindi immaginare che Validation non solo guardi che i vari attributi siano valorizzati ma controlli anche che al loro interno non ci siano scritte cavolate: tanto per fare un esempio, l'attributo alias di un utente contiene dei caratteri non validi (es. uno spazio) il caro validation riporta un errore.

Questo tutto sommato spiega anche il comportamento in OWA (solo in OWA tra l'altro), dato che il campo countryOrRegion non è logicamente valido dato che contiene un valore che non è presente nella tabella ISO-3166. Rimane comunque un fatto curioso: perchè questo problema viene fuori solo con OWA (non ho provato con POP3/IMAP - con MAPI la mailbox funzionava benissimo), ovvero perchè il Validation non si arrabbia con MAPI? . Ai posteri (o agli esperti Microsoft) l'ardua sentenza.....