Search code examples
c#visual-studioexchange-serveredb

Open and Read Exchange EDB file in Visual Studio


This is a research project, what I would like to do is be able to open a MS Exchange EDB (2003 to 2016) files and read the tables and data.

First part of the project is to open the edb file and determine the mailboxes inside.

Second part of the project is to then read individual messages in a selected mailbox.

I'm using Visual Studio for the project.

I understand the EDB file is a b-tree database (aka Jet Blue) but I have found very little documentation on the matter.

Some searching talks about a library for Linux called LIBESEDB but the project is missing on sourceforge, but has a new location HERE on GitHub.

Can anyone point me at URLs for this. Any example code or libraries even better.


Solution

  • It will be a challenge. The Exchange Store schema has changed a few times from 2003 to 2016. The massive I/O reduction from release to release has been accomplished by changing the schema.

    You can use ManagedEsent from codeplex. http://managedesent.codeplex.com. The ese.dll (for Exchange) and esent.dll (for Windows) are similar enough that they can read each others database files. Do not use it for writing! There are enough differences in their implementations that you could get subtle corruptions.

    If C/C++ is more your style: https://msdn.microsoft.com/en-us/library/gg269259(v=exchg.10).aspx. Again, there are some subtle differences between ese.dll and esent.dll, and ese.dll does not have any documentation, but for read-only purposes you should be fine.

    -martin