Książka adresowa trybu offline na serwerze Exchange 2016 i nowszym

Książka adresowa trybu offline (Offline Address Book, OAB) na serwerze pocztowym Exchange to lokalna kopia zbioru list adresów utworzonych na serwerze.
Umożliwia ona użytkownikowi wykonywanie lokalnych zapytań dotyczących rozwiązywania adresów skrzynek pocztowych utrzymywanych przez serwer Exchange, gdy program Outlook skonfigurwany jest w trybie buforowanej wymiany.
Tryb ten umożlwia pracę z programem Outlook, gdy nie ma on bezpośredniego połączenia z Serwerem Exchange. Można go włączyć podczas konfiguracji konta w programie Outlook lub później w opcji Zarządzania kontem e-mail.

Opcja włączenia/wyłączenia trybu buforowanej wymiany Zdjęcie 1. Opcja włączenia/wyłączenia trybu buforowanej wymiany.

W przypadku, gdy program Outlook nie jest w trybie buforowanej wymiany, przegląd książki adresowej odbywa się przez bezpośrednie połączenie z serwerem i odpytanie Globalnej Listy Adresowej lub innej listy adresów przechowywanej na serwerze Echange. Tryb buforowany pozwala więc na zmniejszenie obciążenia serwera pocztowego, który nie musi obsłużyć każdego zapytania dotyczącego listy adresowej.
Książka adresowa trybu offline tworzona jest automatycznie podczas instalacji serwera pocztwoego i zawiera ona kopię Globalnej Listy Adresów (Global Address List, GAL), w której znajdują się adresy e-mail wszystkich skrzynek pocztowych w organizacji. Istnieje możliwość utworzenia własnej książki adrsowej typu OAB i przypisywania jej bezpośrednio do wybranych użytkowników lub uczynienia jej domyślną książką adresową dla całej organizacji.

W serwerze Exchange 2010 i poprzednich wersjach serwerów dystrybucja książki adresowej offline odbywała się przy użyciu dystrybucji folderów publicznych i dystrybucji internetowej, a książka adresowa trybu offline była wykonywana przy użyciu wyznaczonego serwera tzw. OAB Generation Server.

Lista skrzynek systemowych (arbitrażowych) Zdjęcie 2. Lista skrzynek systemowych (arbitrażowych).

Jeśli serwer z jakiegoś powodu nie działał, klienci mieli problem z pobieraniem OAB do momentu aż został on ponownie uruchomiony lub książka adresowa trybu offline została przeniesiona na inny działający serwer.
Z biegiem lat OAB jak i jej dystrybucja uległa ulepszeniu i udoskonaleniu. Począwszy od Exchange 2013, książka adresowa offline jest dystrybuowana przy użyciu metody dystrybucji opartej na sieci Web. Za generowanie książki nie odpowiada już OAB Generation Server a realizowane jest to przy użyciu specjalnej systemowej (tzw. arbitrażowej) skrzynki pocztowej o nazwie SystemMailbox {bb558c35-97f1-4cb9-8ff7-d53741dc928c}. Zaletą skrzynki arbitrażowej jest jej mobilność. Można ją przenieść do bazy danych z włączonym trybem DAG (Database Availability Group). Gdyby serwer, na którym znajduję się baza danych zawierająca skrzynkę arbitrażową przestałby działać, baza danych zostanie przeniesiona na następny serwer, a wraz z nią zostanie również przeniesiona skrzynka arbitrażowa. Dzięki czemu wzrasta bezawaryjność.

W przeszłości OAB miała wiele wersji, obecnie obsługuje tylko wersję 4. Ta wersja OAB to Unicode i umożliwia klientom otrzymywanie aktualizacji różnicowych, zamiast zawsze korzystać z pełnych pobrań. W oczywisty sposób zmniejsza to ruch sieciowy i czas transferu OAB do programu Outlook.
Wszystkie wersje klientów Outlooka obsługiwane przez Exchange w pełni obsługują OAB w wersji 4.

Za generowanie OAB zajmuje się usługa Mailbox Assistants Service. Umożliwia uruchamianie lub wstrzymywanie generowania OAB w zależności od obciążenia serwerów Exchange. We wcześniejszych wersjach odpowiedzialna za to była usługa Exchange System Attendant Service.

Generowanie OAB jest kontrolowane przez asystenta skrzynki pocztowej o nazwie OABGeneratorAssistant, który działa w ramach usługi Microsoft Exchange Mailbox Assistants. Generowanie OAB odbywa się w wyznaczonej skrzynce pocztowej arbitrażu, która ma wartość OrganizationCapabilityOABGen dla właściwości PersistedCapability. Skrzynka pocztowa arbitrażu z taką możliwością jest również nazywana skrzynką pocztową organizacji. Można pobrać skrzynki pocztowe OAB Generating za pomocą poniższego polecenia:

Get-Mailbox -Arbitration | where {$_.PersistedCapabilities -like "*oab*"}

Domyślnie co 8 godzin OAB jest generowana. W razie potrzeby możemy zmienić harmonogram lub ręcznie wymusić aktualizację OAB.

Systemowa skrzynka arbitrażowa SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c} jest kluczowym elementem biorącym udział w generowaniu/aktualizowaniu dostępnych książek adresowych offline, a także przy tworzeniu nowych książek adresowych offline.
W środowisku Exchange organizacji powinna być skonfigurowana tylko jedna skrzynka pocztowa dla generacji OAB, gdyż OAB zachowuje unikalny identyfikator ostatniej aktualizacji w programie Outlook, który wykorzystywany jest przy kolejnym połączeniu Outlooka z serwerem pocztowym. Gdy skonfigurwane zostanie wiele skrzynek pocztowych, gdy klient programu Outlook zostanie przekierowany do innej skrzynki pocztowej generującej OAB, wówczas nie będzie miał sygnatury czasowej ostatniej aktualizacji, dlatego zażąda pełnego pobrania książki adresowej trybu offline (OAB). Klienci zaczną więc pobierać pełne dane OAB. Jeśli Twoja organizacja jest duża, a OAB ma więcej niż 100 MB, spowoduje to duże zużycie przepustowości sieci i zasobów systemowych serwera Exchange. W związku z czym zawsze zaleca się utrzymywanie jedynej skrzynki pocztowej w całej organizacji.

Pliki książki adresowej typu offline (OAB) są generowane i przechowywane w wyznaczonej skrzynce pocztowej (domyślnie SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}), więc miejscem docelowym dla żądań pobierania OAB jest serwer skrzynek pocztowych (ang. Mailbox Server), który przechowuje systemową arbitrażową skrzynkę pocztową lub w przypadku wdrożenia DAG, jej aktywną kopię. Pliki OAB są kopiowane ze skrzynki pocztowej do folderu %ExchangeInstallPath%\ClientAccess\OAB\ w celu jej pobrania przez klientów. Jeżeli organizacja posiada dodatkowe lokacje w usłudze Active Directory, w których znajdują się inne serwery pocztowe pełniące role serwerów skrzynek pocztowych (wykorzystywanych do tworzenia DAG) i włączona jest opcja Shadow Copies dla OAB, wówczas żądania klientów odnosie OAB są przekierowane do serwerów pocztowych w tej samej lokacji co komputer użytkownika z programem Outlook. Usługa Client Access (frontend) dokona przekierowania żądania OAB do odpowiedniego serwera z usługą Mailbox Server (serwer skrzynek pocztowych) w tej samej lokacji lub najbliższej.

Warto jednak pamiętać, że przy domyślnej instalacji środowiska Exchange, zwłaszcza gdy posiadamy tylko jeden serwer z usługą Mailbox Server (serwer skrzynek pocztowych), funkcja Shadow Copies jest domyślnie wyłączona.

Jak działa dystrybucja OAB?
Klienci domyślnie pobierają OAB raz na 24 godziny. Użytkownicy mogą również ręcznie pobrać OAB, kiedy tylko chcą. Taką możliwość daje opcja Pobierz książkę adresową na kracie Plik w programie Outlook. Adresy URL OAB są udostępniane klientom w pliku XML za pomocą opcji autodiscover. Adres URL będzie podobny do https://mail.domena.pl/OAB.

Opcja ręcznej aktualizacji książki adresowej w programie Outlook Zdjęcie 3. Opcja ręcznej aktualizacji książki adresowej w programie Outlook.

Proces pobierania książki adresowej typu offiline przez program Outlook przebiega następująco:
1. Korzystając z automatycznego wykrywania (opcja Autodiscover), adresy URL OAB są przekazywane do klienta Outlook, a klient Outlook łączy się z usługami Client Access (frontend) na serwerze skrzynek pocztowych (Mailbox Server).
2. Usługi Client Access na serwerze skrzynek pocztowych, który akceptuje połączenie i wykonuje następujące kroki:
- Usługa Frond End Client Access wysyła zapytanie do usługi Active Directory, aby znaleźć systemową skrzynkę pocztową, która jest odpowiedzialna za generowanie domyślnej książki adresowej trybu offline (OAB) użytkownika. OAB określony jest dla bazy danych skrzynek pocztowych lub bezpośrednio dla danej skrzynki pocztowej użytkownika.
- Ponownie wysyła zapytanie do usługi Active Directory, aby znaleźć bazę danych skrzynek pocztowych, która obsługuje skrzynkę pocztową dla OAB, oraz serwer skrzynek pocztowych, który aktualnie przechowuje aktywną kopię bazy danych.
- Przekazuje żądanie pobrania OAB do zidentyfikowanego serwera skrzynek pocztowych.
- Pobiera pliki OAB z folderu %ExchangeInstallPath%\ ClientAccess\OAB\ i przesyła je z powrotem do klienta.




Kontrola poprawności działania dystrybucji OAB
Zdaża się czasmi, że podczas migracji środowiska pocztowego na nowszą wersję serwera Exchange, książka adresowa trybu offline przestaje funkcjonować. W programie Outlook pojawia się problem z jej aktualizacją lub pobraniem. Poniższa analiza zostanie wykonana w środowisku tesowym skaładającym się z dwóch serwerów pocztowych pełniąchy role:
- Exch1.msa.domena.pl: komputer pełniący rolę Edge Transport Server.
- Exch2.msa.domena.pl: komputer pełniący rolę Mailbox Server.

Wewnętrzna domena DNS usługi Acrive Directory ma postać msa.domena.pl natomiast zewnętrzna domena DNS: domena.pl. Serwer pocztowy widoczny jest z sieci Internet pod adresem DNS: mail.domena.pl.
W środowisku DNS organizacji wdrożona jest opcja "Split Horizon DNS" co oznacza, że domena zewnętrzna domena.pl jest także utrzymywana przez wewnętrzną usługę DNS organizacji. Oznacza to, że serwery z zainstalowaną usługą DNS utrzymują takie same wipsy DNS jakie są utworzone na zewnętrznych serwerach DNS, gdzie hostowana jest domena - domena.pl. W takim przypadku konfiguracja adresów Url wewnętrznych i zewnętrznych (tzw. Internal Url, External Url) wirtualnych katalogów używanych przez serwer pocztowy i hostowanych w usłudze IIS jest taka sama i odpowiada wartości dla zewnętrznej domeny DNS organizacji (Internal Url=External Url).

Jeżeli pojawiły się problemy z dostępem do książki adresowej należy sprawdzić konfigurację systemowej skrzynki pocztowej odpowiedzialnej za utrzymywanie OAB, konfigurację danej ksiązki adresowej oraz katalogu wirtualnego OAB odpowiedzialnego za udostępnianie zasobów OAB w usłudze HTTP/HTTPS realizowanej przy użyciu usługi IIS (Internet Information Services) zainstalowanej na serwerze Mailbox Server.
Warto także sprawdzić czy pod ścieżką %ExchangeInstallPath%\ClientAccess\OAB\ znajduje się folder o nazwie odpowiadającej wartości GUID danej książki adresowej OAB. Jeżeli go tam nie ma, oznacza to że fizycznie książka OAB nie została utworzona. W tym celu należy ponownie uruchomić usługę Mailbox Assistants Service, która powinna wygenerować książkę i utworzyć odpowiedni folder pod wskazaną ścieżką. W ostateczności może być wymagane utworzenie nowej OAB bazującej na Globalnej Liście Adresów, następnie usunięcie uszkodzonej OAB i ustawienie parametru IsDefault na wartość True, aby nowa OAB stała się książką domyślną. Procedura wygląda następująco:
1. Utworzenie nowej książki adresowej typu offline o nazwie np.: Default Offline Address Book na serwerze Exch2: New-OfflineAddressBook -Name "Default Offline Address Book" -AddressLists "\Default Global Address List" -VirtualDirectories "Exch2\OAB (Exchange Back End)".
2. Usunięcie uszkodzonej książki adresowej o nazwie Default Offline Address Book (Ex2013): Remove-OfflineAddressBook -Identity "Default Offline Address Book (Ex2013)".
3. Ustawienie książki OAB o nazwie Default Offline Address Book jako książki domyślnej na serwerze Exchange: Set-OfflineAddressBook -Identity "Default Offline Address Book" -IsDefault $True.
4. Warto dodatkowo przypisać książkę OAB do bazy danych (np.: MDB1) zawierających skrzynki pocztowe użytkowników: Set-MailboxDatabase -Name MDB1 -OfflineAddressBook "Default Offline Address Book". Oczywiście z racji, że książka ustawiona została jako domyślna nie jest to wymagane. Pomoga to jednak rozwiązywać inne problemy związane z dostępem do OAB.

Systemowa książka adresowa SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}
Obecność skrzynki systemowej należy sprwadzić przy użyciu cmdlet PowerShell: Get-Mailbox -Arbitration | Format-Table Name. Wynik wykonania polecenia powinien zawierać wymieniną skrzynkę pocztową.

Lista systemowych skrzynek pocztowych Zdjęcie 4. Lista systemowych skrzynek pocztowych.

Położenie skrzynki możemy ustalić przy użyciu cmdletu PowerShell: Get-Mailbox -Arbitration -Identity "SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}" | Format-Table Name,Database.




Domyślna książka adresowa typu offline
Kolejnym krokiem jest przegląd konfugracji księżki adresowej typu offline. W przypadku serwera Exchange 2016 utowrzona została, w procesie instalacji serwera, domyślna książka adresowa o nazwie Default Offline Address Book (Ex2013). Konfigurację wyświetla nam cmdlet PS: Get-OfflineAddressBook. Szczegółowe informacje uzyskamy przez modyfikację polecenia do postaci Get-OfflineAddressBook | Format-List.

Konfiguracja książki adresowej typu offline o nazwie Default Offline Address Book (Ex2013) Zdjęcie 4. Konfiguracja książki adresowej typu offline o nazwie Default Offline Address Book (Ex2013).

Na liście parametrów należy zwrócić uwagę na poniższe wpisy:

W opisanym wyżej środowskiu pocztowym wartość pola VirtualDirectories powinna wskazywać na katalog wirtualny OAB znajdujący się na serwerze Exch2: Exch2\OAB (Exchange Back End), parametry WebDistributionEnabled: Enable, GlobalWebDistributionEnabled: False, ShadowMailboxDistributionEnabled: False oraz data aktualizacji książki adresowej WhenChanged nie powinna przekaczać 8 godzin.

Warto też sprawdzić czy domyślna książka OAB została przypisana do bazdy danych lub baz danych zawierających skrzynki pocztowe użytkowników. W tym celu skorzystamy z cmdletu PS: Get-MailboxDatabase | Format-Table Name,OfflineAddressBook.

Wynik komendy Get-MailboxDatabase | Format-Table Name,OfflineAddressBook Zdjęcie 5. Wynik komendy Get-MailboxDatabase | Format-Table Name,OfflineAddressBook.

W poniższym przykładzie do bazy danych została przypisana OAB o nazwie \Default Offline Address Book (Ex2013) czyli domyślną książkę adresową typu offline. Baza MDB2 nie ma jej przypisanej, gdyż zawiera tylko skrzynki współdzielone oraz skrzynki typu Resource. Brak w niej skrzynek pocztowych użytkowników tzw. user mailbox. Nawet jeżeli znalazłaby się w niej skrzynka pocztowa użytkownika to i tak zastosowana zostanie do niej domyślna książka OAB o nazwie Default Offline Address Book (Ex2013), gdyż jest ona książką domyślną (ma ona wartość parametru IsDefault ustawioną na True).

Ustawienia katalogu wirtualnego OAB
Konfigurację katalogu wirtualnego OAB, udostępniającego dane książki offline dla klientów, można uzyskać przy użyciu cmdletu PS: Get-OabVirtualDirectory. Podstawowy wynik polecenia zwraca dwie ważne informacje: Internal Url i External Url. W przypadku stosowania metody Split Horizon DNS wartości tych pól powinny być takie same i wskazywać na zewnętrzny adres DNS pod jakim dostępny jest serwer pocztowy z sieci Internet. W opisanej konfirguracji testowej środowiska jest to adres DNS (External Url) wynosi mail.domena.pl.

Wynik komendy Wynik komendy Get-OabVirtualDirectory Zdjęcie 6. Wynik komendy Get-OabVirtualDirectory.

Podczas instalacji serwera pocztowego wartość parametru Internal Url ustawiona została na wewnętrzny adres DNS serwera Exch2. W przypadku opisanego środowiska jest to Exch2.msa.domena.pl. Podczas konfiguracji należy tą wartość zmienić na wartość odpowiadającą External Url: mail.domena.pl. Oczywiście rekord DNS typu A mail.domain.pl musi być ustawiony na zewnętrznych serwerach DNS jak i na wewnętrznych (domyślnie na jednym z kontrolerów domeny posiadających zainstalowaną usługę DNS).
Zmianę konfiguracji ścieżek Internal Url i External Url można skonfigurwać przy użyciu cmdletu PS: Set-OabVirtualDirectory lub przy użyciu witryny www - Exchange Administrative Center (https://mail.domena.pl/ecp).
Więcej informacji uzyskamy przy użyciu cmdletu PS: Get-OabVirtualDirectory | Format-List *.

Wynik komendy Wynik komendy Get-OabVirtualDirectory | Format-List * Zdjęcie 7. Wynik komendy Get-OabVirtualDirectory | Format-List *.

Poprawny dostęp klientów do katalogu wirtualnego OAB wymaga także, aby na serwerach DNS pojawił się wpis odnośnie nazwy serwera pocztowego oraz dla opcji automatycznego wyszukiwania Autodiscovery. W tym celu na serwerze DNS zarówno zewnętrznym (Internet) jak i wewnętrznym muszą zostać utworzone poniższe rekordy DNS:

Błąd 0x800401F
Problemy z konfiguracją i dostepem do OAB z punktu widzenia klienta programu pocztowego np. programu Outlook przejawiają się głównie brakiem aktualizacji książki adresowej oraz problemem jej ręcznej aktualizacji. Typowe problemy można rozwiązać przez kontrolę ustawień wymienionych komponentów oraz sprawdzenia poprawności rekordów DNS. Zdarzą się czasami trudne do zdiagnozowania problemy zwłaszcza po wykonaniu migracji środowiska pocztowego na nową wersję serwera pocztowego lub po instalacji aktualizacji typu CumulativeUpdate.
Próba ręcznej aktualizacji ksiązki adresowej z poziomu programu Outlook powoduje wygenerowanie błędu 0x800401F w komunikacie "Zadanie kowalskij@domena.pl zgłosiło błąd (0x800401F). Operacja nie powidła się. Nie można odnaleźć obiektu" (zdjęcie 8).

Komunikat z błędem 0x800401F Zdjęcie 8. Komunikat z błędem 0x800401F.

Podczas aktualizacji można także zauważyć, że w oknie aktualizacji książki adresowej brak jest wpisu odnoszącego się globalnej listy adresowej \Default Global Address List, a jedynie wpis zastępczy postaci Lista pobierania książki adresowej trybu offline (zdjęcie 9).
Takie komunikaty oznaczają, że Outlook nie otrzymał ścieżki dostępowej https do książki adresowej trybu offline na serwerze Exchange. Brak takiego wpisu można sprawdzić wykonując test połączenia z poziomu programu Outlook. W tym celu należy wcisnąć klawisz Ctrl i z menu podręcznego dla ikonki programu Otlook w pasku zadań wybrać opcję Testuj autokonfigurację poczty e-mail.... Po uruchomieniu testu i jego zakończeniu należy przejść do zakładki XML i odszukać pole OABUrl. Przy poprawnym działaniu wpis ten powienien wyglądać podobnie do <OABUrl>https://mail.domena.pl/OAB/b34f77ed-7947-47c9-a1e8-b9458fbf1ec5/</OABUrl>, gdzie b34f77ed-7947-47c9-a1e8-b9458fbf1ec5 jest wartością GUID domyślnej książki adresowej typu offline.

Komunikat z błędem 0x800401F Zdjęcie 9. Komunikat z błędem 0x800401F.

Jeżeli brak jest pola OABUrl, oznacza to że opcja autodiscovery nie dostarczyła informacji o dostępności jakiekolwiek OAB dla klienta. Dodatkowo, gdy nie stwierdzimy błędów w konfiguracji książki adresowej, systemowej skrzynki arbitrażowej i katalogu wirtualnego OAB, problem może być w rozwiązany w prosty sposób - przez przeładowanie konfugiracji ustawień OAB. W tym celu należy ustawić parametr WebDistributionEnabled na False a następnie wrócić do domyślnej wartości True.




Wykonać to można przy użyciu poniższych cmdletów PS. Dla domyślnej książki adresowej o nazwie Default Offline Address Book (Ex2013) jest to:
1. Wyłączenie opcji WebDistributionEnabled przez włączenie opcji GlobalWebDistributionEnabled: Set-OfflineAddressBook -Identity "Default Offline Address Book (Ex2013)" -GlobalWebDistributionEnabled $true -VirtualDirectories $Null.
2. Ponowne uruchomienie usługi IIS: iisreset /noforce.
3. Włączenie opcji WebDistributionEnabled przez wyłączenie opcji GlobalWebDistributionEnabled: Set-OfflineAddressBook -Identity "Default Offline Address Book (Ex2013)" -GlobalWebDistributionEnabled $False -VirtualDirectories "Exch2\OAB (Exchange Back End)".
4. Ponowne uruchomienie usługi IIS: iisreset /noforce.

Okno aktualizacji książki adresowej w programie Outlook Zdjęcie 10. Okno aktualizacji książki adresowej w programie Outlook.

Po wykonaniu powyższych poleceń i po ponownym uruchomienu programu Outlook, uzyska on ponownie dostęp do domyślnej książki adresowej Default Offline Address Book (Ex2013), a w oknie aktualizacji książki znajdzie się poprawny wpis odnoszący się do globalnej listy adresowej \Default Global Address List (zdjęcie 10).

Jeżeli problem z dostępem do OAB dotyczy tylko wybranych użytkowników, wówczas należy sprawdzić wartość pola msExchUseOAB w ustawieniach obiektu użytkownika w usłudze Active Directory. Wartość tego pola powinna mieć wartość < not set >. Jeżeli wartość ta jest inna należy wyczyścić wartość tego pola opcją Clear.

W niektórych przypadkach problem udaję się także rozwiązać przez usunięcie folderu z plikami książki adresowej OAB znajdującego się w folderze %ExchangeInstallPath%\ClientAccess\OAB\. Nazwa folderu odpowiada wartości GUID książki adresowej. Po ręcznym usunięciu folderu należy wygenerować pliki książki OAB przy użyciu polecenia Update-OfflineAddressBook. System utworzy nowy folder o takiej samej nazwie z plikami konfiguracyjnymi OAB.

Dodatkowe informacje:
- Microsoft Docs: Offline address books in Exchange Server
- Microsoft Docs: Offline address books
- Microsoft Docs: Download Your Offline Address Book (OAB) on Windows