Definiowanie własnego adresu do EWS w Exchange Rules 2007 i 2010, diagnozowanie problemów z EWS i Autodiscover

1. Wstęp

W niektórych sytuacjach, w Exchange Rules 2007 i 2010, przy uaktualnianiu wysłanych wiadomości przez usługę Sent Items Update występują problemy z połączeniem się z usługą EWS (Exchange Web Services). Aby zdiagnozować przyczynę problemów z EWS należy sprawdzić zawartość plików dziennika usługi SentItemsUpdater.

2. Pliki dziennika (logi)

Miejsce, w którym znajdują się pliki dziennika usługi Sent ItemsUpdate można sprawdzić w panelu administracyjnym programu Exchange Rules.
Aby uruchomić program kliknij:

- dla Exchange 2007: menu Start, Programy, CodeTwo, CodeTwo ExchangeRules 2007, Administration

- dla Exchange 2010: menu Start, Programy, CodeTwo, CodeTwo ExchangeRules 2010, Administration

Następnie z menu Tools należy wybrać Log files:

ExchangePathToSendItemsUpdaterLogFiles
Rys. 1. Exchange Rules - ścieżka do plików logów dla SentItems Updater

3. Rodzaje problemów

Aby ustalić adres do EWS, usługa Sent Items Update łączy się najpierw z usługą Autodiscover, która powinna zwrócić adres EWS. Jeśli nie uda się połączyć z usługą Autodiscover, lub adres zwrócony przez Autodiscover-a nie pozwoli połączyć się z EWS, Sent Items Update próbuje połączyć się z usługą EWS za pomocą domyślnego adresu: https://localhost/ews/exchange.asmx. Jeśli i ta próba połączenia się z EWS zawiedzie, wówczas aktualizacja wiadomości (dodanie stopek) w folderze Sent Items (Elementy Wysłane) nie będzie możliwa.
Należy wówczas ustawić własny adres do usługi EWS w pliku konfiguracyjnym - zobacz kolejny punkt: Definiowanie własnego adresu do EWS.

 Poniżej przedstawiono typowe problemy, które mogą wystąpić podczas komunikacji z usługami EWS i Autodiscover.

Problem 1. Brak uprawnień w IIS do usługi Autodiscover dla użytkownika CodeTwo Update Agent. Rozwiązanie: patrz Definiowanie własnego adresu do EWS

15.07.2010 16:11:56 7a0  AutodiscoverUrl(); Exc: The remote server returned an error: (401) Unauthorized. ... 
15.07.2010 16:11:56 7a0  AutodiscoverUrl(); EmailAddress: test@test.com
15.07.2010 16:11:56 7a0  AutodiscoverUrl(); WithTest: True
15.07.2010 16:11:56 7a0  AutodiscoverUrl(); host: https://vjb-es2k7-x64.ex.local/Autodiscover/Autodiscover.xml
...

  

Problem 2. Brak możliwości połączenia z EWS. Rozwiązanie: patrz Definiowanie własnego adresu do EWS

15.07.2010 15:40:25 1004  TestEws(); EWS-url: https://vjb-es2k7-x64.ex.local_wrong_address/EWS/Exchange.asmx
15.07.2010 15:40:28 1004  TestEws(); Exc: Unable to connect to EWS on address: https://vjb-es2k7-x64.ex.local_wrong_address/EWS/Exchange.asmx. The remote name could not be resolved: 'vjb-es2k7-x64.ex.local_wrong_address'...
...

  

Problem 3. Brak uprawnień w IIS do usługi EWS dla użytkownika CodeTwo Update Agent. Rozwiązanie: patrz Dodawanie uprawnień w IIS użytkownikowi CodeTwo Update Agent do usługi EWS

22.07.2010 14:15:20 1014  MakeRawSoapRequest(); Exc: The remote server returned an error: (401) Unauthorized. ...
22.07.2010 14:15:20 1014  MakeRawSoapRequest(); EWS-Url: https://localhost/ews/exchange.asmx
...

 

4. Definiowanie własnego adresu do EWS 

Możliwe jest zdefiniowanie własnego adresu do EWS w pliku konfiguracyjnym. W tym celu należy otworzyć (na przykład w notatniku systemowym) plik SentItemsUpdater.Service.exe.config znajdujący się w katalogu, w którym zainstalowany jest Exchange Rules 2007 lub 2010 (zwykle jest to katalog C:\Program Files\CodeTwo\CodeTwo ExchangeRules 2010\ lub C:\Program Files\CodeTwo\CodeTwo ExchangeRules 2007\).
Należy dodać nowy klucz EWSUrl przed znacznikiem </appSettings> z wartością, która będzie adresem do usługi EWS (YOUR_HOST należy zamienić na odpowiedni adres hosta).
Uwaga: Klucz EWSUrl można dodać tylko wtedy, gdy taki klucz jeszcze nie istnieje; jeśli taki klucz już istnieje, należy zmodyfikować wartość istniejącego klucza.

<appSettings>
   ...
   <add key="EWSUrl" value="https://YOUR_HOST/EWS/Exchanges.asmx" />
</appSettings>

Jeśli w pliku konfiguracyjnym istnieje już zdefiniowany klucz dla EWSUrl, ale otoczony jest znakami komentarza (zaznaczone poniżej na czerwono), to należy je usunąć (<!-- oraz -->). Po usunięciu komentarzy, wpis powinien wyglądać tak jak powyżej.

<appSettings>
   ...
   <!-- <add key="EWSUrl" value="https://YOUR_HOST/EWS/Exchanges.asmx" /> -->
</appSettings>

Należy upewnić się, że adres do EWS jest prawidłowy. Można to zrobić wklejając adres w przeglądarce internetowej (zalogowany użytkownik musi mieć prawa administratora). Wynik powinien być taki, jak na przykładzie poniżej:

ExchangeRulesEWSUrlInInternetBrowser
Rys. 2. Przeglądarka internetowa z wybranym adresem do serwisu EWS (przykładowo: https://localhost/EWS/Exchange.asmx)

 Po wpisaniu nowego adresu w pliku konfiguracyjnym należy zrestartować usługę CodeTwo Sent Items Update.

 ExchangeRulesSentItemsUpdaterRestart
Rys. 3. Restart serwisu CodeTwo Sent Items Update

4. Dodawanie uprawnień w IIS użytkownikowi 'CodeTwo Update Agent' do usługi EWS

Należy upewnić się, że użytkownik CodeTwo Update Agent posiada wystarczające uprawnienia do uruchamiania usługi EWS. Uprawnienia można nadać w Internet Information Services (IIS) Manager.
Uruchamiamy go wybierając menu Start, Settings, Control Panel, Administrative Tools, Internet Information Services (IIS) Manager. Następnie rozwijamy gałąź Web Sites, Default Web Sites i wybieramy EWS. Potem klikamy prawym przyciskiem myszy na EWS i wybieramy Permissions. W oknie z uprawnieniami klikamy Add... i wpisujemy nazwę użytkownika CodeTwo Update Agent:

ExchangeRulesEWSPermissionsInIISPart1
Rys. 4. Nadawanie uprawnień w IIS dla użytkownika 'CodeTwo Update Agent' - krok 1.

Minimalne wymagane uprawnienia zostały przedstawione poniżej.

 ExchangeRulesEWSPermissionsInIISPart2
Rys. 5. Nadawanie uprawnień w IIS dla użytkownika 'CodeTwo Update Agent' - krok 2.