exo, сделай проще. Практика показала, что дефрагментация лучше всего делается на другом компе. Отключи storage, скопируй файлы на другую машину, найди утилиту eseutil , скопируй ее с библиотеками на нужную машину и выполни
примерно следующее
Код:

D:\Exchsrvr\bin\eseutil /d D:\S3_base\MDBDATA\priv1.edb /T D:\S3_base\defragment\priv2.edb
D:\Exchsrvr\bin\eseutil /d D:\S3_base\MDBDATA\pub1.edb /T D:\S3_base\defragment\pub2.edb
D:\S3_base\MDBDATA\priv1.edb и pub1.edb - исходные файлы БД.
D:\S3_base\defragment\priv2.edb и pub2.edb - куда будут копироваться временные БД.
ПОсле выполнения операции в D:\S3_base\MDBDATA\ будут лежать новенькие файлы БД. Их подкидываешь в базу Exchange и подключаешь тома.
P.S. ПО поводу нехватки места на сервере я недавно поднимал несколько тем на этом форуме в Exchange ветке. Сам боролся с этим 2 недели назад.
P.P.S И еще, посмотри параметр, сколько дней хранить удаленные сообщения на сервере Exchange. По умолчанию, вроде бы, стоит 7 дней. Потому и хранятся файлы и размеры базы не уменьшаются.
P.P.P.S. А полный бекап Exchange давно проводился? Если да, то в папке Exchange будут храниться кучи log файлов транзакций. После бакапа они очищаются.