Retain Exchange
Exchange is a cluster of roles on one or more servers that transfers messages.
The major roles are:
- DNS (Domain Name Server)
- AD DS (Active Directory Directory Services)
- CAS (Client Access Server)
- Exchange Mailbox Server
The Name Server resolves which server is doing what role. It is very important that Retain and the Exchange servers all point to the same one so the domains are all resolved correctly.
Active Directory organizes the domains, users and computers of the network so they have the proper rights. Mainly that the Retain user has ApplicationImpersonation rights.
The CAS is the front door of the network, it sends requests from the users to the proper place in the network, in the case of Retain it is access to the mailbox database.
The Exchange Mailbox Server hosts the database(s) that stores the users messages.
Contents |
How It Works
Overview of Retain's Access to Exchange
Autodiscover: How Retain Connects to Your Exchange Mailboxes
When Retain archives from Exchange it uses the Impersonation User aka Global Catalog User to enter Active Directory (AD) to find a user.
We enter Exchange in one of four ways:
- LDAP (Lightweight Directory Access Protocol)
- SCP (Service Connection Point)
- EWS (Exchange Web Services)
- Autodiscover
In that user it searches for the user's homeMDB (homeMailboxDataBase) and uses that to link to the homeMDBBL object in AD. From there it gets the current list of mailboxes in the mail server's database.
Retain will go to the first user in that list and using ApplicationImpersonation rights. It will get the list of folders for the first user and then will process the messages.
Exchange Limitations
Exchange has certain stated limitations [1], but even in cases where there are no stated limits, there are practical limitations you are going to reach.
“I usually recommend no more than about 2500 - 5000 messages in any of the critical path folders. The critical path folders are the Calendar, Contacts, Inbox, and Sent Item folder. Ideally, keep the Inbox, Contacts and Calendar to 1000 or less. Other folders, particularly custom folders created by the user, can handle having larger numbers of items without having a broad impact on the user experience (20,000 items in my "Cookie Recipes" folder? No problem - except when I need to find that recipe from last Christmas!).” [2]
Like many computer systems it works best when it is lightly loaded which in the case of Exchange means keeping as few messages the mailbox database as is practical and since the vast majority of messages are never viewed again after they are initially received it makes sense to get them out of the system.
The average user receives 120 emails a day, 260 days of the year or 31,200 messages a year.
Exchange Module On-Premise
The Exchange servers are on your organization's property somewhere. You have full control over them.
Exchange Module Office365
Your organization had decided to host your email system with Microsoft on Microsoft's servers and you have little control over them.
There is an issue in 3.5.0 with the address book synchronization. In 3.5.0 and earlier, Retain would key off of the object GUID to determine record uniqueness. This worked for a long time; however, lately there have been a few accounts where their user object GUIDs changed but their Exchange mailbox GUIDs remained the same. This resulted in duplicate mailboxes.
This behavior has been changed in Retain 3.5.1 and 4.0. Retain now keys off of the Exchange mailbox GUID in the exchangeuser.csv file located in the .../beginfinite/retain/RetainServer/WEB-INF/cfg directory.
Database entries for user mailboxes in Retain 3.5.0:
- Object GUID in t_appuid.f_auid
- Mailbox GUID in t_exchobj.f_uid
- Object GUID also in t_exchobj.f_value
Retain would look at the application UUID (t_appuid.f_auid) which contained the object GUID and compare it with the "GUID" cell in the exchangeuser.csv file to determine user uniqueness.
Database entries for user mailboxes in Retain 3.5.1 and later:
- Exchange GUID in t_appuid.f_auid
- Mailbox GUID in t_exchobj.f_uid
- Object GUID also in t_exchobj.f_value
Now, in Retain 3.5.1 and later, the Exchange mailbox GUID is stored in the application UUID field (t_appuid.fauid). We compare that value with the Exchnage mailbox GUID in the exchangeuser.csv to determine if the entry in the csv file is unique.
NOTE: t_exchobj.f_type tells us what type of data is stored in the t_exchobj.f_value field, whether it is the object GUID (which it should be) or the mailbox GUID.
Exchange Installation
- Installing Windows Server 2012 R2
- Installing Exchange 2013 for a lab enviroment
- Installing Standalone CAS for Exchange 2013
- Installing Retain on Windows
- Retain Outlook Web Access 2013 Plugin
- Retain Outlook 2013 Plugin
Exchange Archive Strategies
Troubleshooting
Bug Watch
These are important bugs/enhancements to watch for:
Exchange
- Bug 6612 - Forwarding to Exchange causes mojibake if characters are from beyond the ASCII set FIXED for 4.0 beta
- Bug 7679 - Forwarding to Exchange causes mojibake if characters are from beyond the ASCII set FTF for 3.5 available
- Bug 6845 - Archive job ends prematurely when it runs into No Autodiscover/Endpoint found! error on a particular user FIX committed for 4.0 and 3.5.1. FTF available for 3.5
- Bug 7128 - Excel files throw error when opened from Retain in IE Not a priority at this time.
- Bug 7738 - When archiving a journaling mailbox some messages are not deleted but logs showing deletion command sent
Office 365
- Bug 6679 - Add additional duplicate user checks to avoid mailbox duplication when Exchange user GUID changes FIXED in 4.0 beta
- Bug 7671 - Add additional duplicate user checks to avoid mailbox duplication when Exchange user GUID changes FIXED in 3.5.1
- Bug 6705 - Job quits if user doesn't exist (Office 365) DUPLICATE of bug 6845
- Bug 5441 - Duplicate users after O365 user GUIDs changed: Need to merge/join records FIXED in 3.5.1 and 4.0
Field Test Files