The other night, I had a dream that I was on the television game show Jeopardy. I was doing rather well, when we reached the Final Jeopardy round. The category was “Arcane Exchange Knowledge”. Feeling quite good about this, I wagered everything during the commercial break, and when we came back on the air the answer Alex presented was “generated once every 24 hours, this enables disconnected users to look up user information.” Just as I was about to write down “What is the Offline Address Book?” my dream changed, and I was in my old high school taking my final exam in an Energizer Bunny costume. Hey, give me a break. I said it was a dream. It was that dream that inspired me to write this post on the Offline Address Book (or OAB to its friends) as this is one of those things that just kind of works, until of course, it doesn’t, and that our road warrior users may depend upon. A little knowledge goes a long way, and this post should get you to the corner store and back when it comes to dealing with the OAB.
What is the OAB?
Jeopardy questions aside, the OAB is what enables users running Outlook in cached mode, or when not connected to their Exchange infrastructure, to look up recipients within their company when composing emails without having to perform a GAL lookup. Think of it as a GAL cache and you won’t be far off, though it is a set of files generated and updated by a mailbox server which is then made available for clients to download, instead of something cached in RAM. It contains one or more address list. It is updated daily by a mailbox server based on changes within the GAL, which are of course changes in Active Directory. The OAB can be out of sync with the GAL, since it is only updated automatically once daily, and it needs to be stored where clients can download it, since it is a pull from the client that gets it there, not a push from the server. In earlier versions of Exchange, the OAB was stored in a public folder. Exchange 2007 and 2010 store the OAB in the \OAB virtual directory under the default website, which is where currently supported versions of Outlook will look for it. If you still have to support legacy Outlook clients, you can also store the OAB in a public folder. Unless you change things, the OAB will be generated by the first mailbox server in your organization. You can view the properties of the OAB using either the Exchange Management Console, or the Exchange Management Shell. In the EMC, access Organization Configuration, Mailbox, and you will see the OAB tab. In the EMS, you can use the get-offlineaddressbook | fl command to see all of your OABs (yes, you can have several) and their properties.
Creating an OAB
The OAB is created automatically on the first mailbox server in your organization, and contains the Global Address List, which is the only address list you have by default. Since the OAB can contain multiple address lists, you can remove the GAL, or you may want to create additional OABs if you need users to have a subset of the GAL. In the EMC, browse to Organization Configuration, Mailbox, and click New Offline Address Book. You give it a name, select the mailbox server you want to generate it, choose whether or not to include the GAL and/or any other address lists, select web-based distribution for current clients and specify the virtual directory, check the Public Folder option if you have legacy clients, and then click New. In the EMS, an example command would be new-OfflineAddressBook -Name ‘MyOAB’ -Server ‘MBX1′ -AddressLists ‘\Default Global Address List’ -PublicFolderDistributionEnabled $false -VirtualDirectories ‘MBX1\OAB (Default Web Site)’
Storing the OAB
The OAB is made up of several files, stored under c:\Program Files\Microsoft\Exchange Server\V14\ExchangeOAB\. Each OAB is identified by its GUID, which you can view using the Get-OfflineAddressBookcmdlet mentioned above. Creating and updating an OAB also generates several temporary files, which will be stored in your server’s %TEMP% directory. While OABs and their temp files are particularly large, you don’t want to skimp on disk space for C: (I’m looking at those VMs you created) and you want to make sure both of these directories are exempt from real-time anti-virus scans.
Distributing the OAB
For modern Outlook clients, distribution uses the OAB virtual directory on the CAS server, and should be downloaded using HTTPS. You can control that using the set-OABVirtualDirectorycmdlet, though the defaults should be left alone. If you must support Outlook 2003, you will need to create a Public Folder database, and then set the option to store the OAB in Public Folders. Use the EMC to do this, since there it is a simple checkbox.
Updating the OAB
By default, the OAB is created by the first mailbox server, and is updated every day at 0500 local time. Changes made to Active Directory are retrieved from a Global Catalog server, and updated within the OAB. You can use the EMC or the EMS to force an immediate update to the OAB, but consider two things: first, this is CPU intensive on your mailbox server, and second, your Outlook clients won’t immediately get the updates anyway. Remote and cached mode clients can always use OWA, which uses the GAL directly. Just make sure AD replication has completed before sending a user to the OWA site, or you will get another phone call. If you really must update an OAB, in the EMC, just right click the OAB and choose update. Or you can open the EMS and run the command Update-OfflineAddressBook –Identity “Default Offline Address Book.” To get your clients to update, have the user go in Outlook to the Send/Receive option in the ribbon, select the drop down next to Send/Receive Groups, and select Download Address Book. The OAB is a great enhancement for users and admins alike, caching address lists on remote clients and conserving bandwidth. With just a little care and feeding, the OAB is easy to use, easy to maintain, and improves the end user experience significantly.