Проблема с просмотром другого почтового ящика с помощью Redemption (RDO) после входа в систему с правами администратора Exchange

Я работаю над консольной программой на C #, которая будет использовать Redemption и запускаться под идентификатором процесса с правами администратора Exchange. Я могу установить сеанс RDO в качестве администратора и просматривать почтовый ящик администратора и работать с содержимым любой из папок Outlook, но мне нужно иметь возможность прокручивать все почтовые ящики наших сотрудников, искать в них сообщения электронной почты старше определенной даты, а затем удалите их. У меня все это работает, за исключением того, что я могу указать на почтовый ящик, отличный от почтового ящика администратора. Я не могу найти никаких решений для этого в Redemption API (хотя это немного сложно читать) или поискав в Интернете аналогичную проблему с помощью Redemption. Любая помощь приветствуется.


person trotty66    schedule 08.01.2015    source источник


Ответы (1)


Используйте RDOSession.GetSharedMailbox - см. http://www.dimastr.com/redemption/rdosession.htm для более подробной информации.

person Dmitry Streblechenko    schedule 08.01.2015
comment
Я посмотрю. Сегодня я уже шел по этому пути, но, может быть, слишком рано отказался от него. Спасибо. Я вернусь и дам свои результаты после еще нескольких исследований. - person trotty66; 09.01.2015
comment
Хорошо, я добился дальнейшего прогресса в этом. Выполняя свой код на моем локальном компьютере, я получал ошибку MAPI, пока не вошел в Outlook, используя ту же учетную запись, под которой я запускал Visual Studio, с правами администратора Exchange. У меня такой вопрос. Этот код необходимо будет запускать на сервере под идентификатором процесса. Нужно ли будет устанавливать Outlook на сервере, чтобы мой код работал правильно и мог использовать Redemption и метод GetSharedMailbox? - person trotty66; 12.01.2015
comment
Метод GetSharedMailbox работает, и теперь я могу видеть почтовые ящики других пользователей, но только если я вошел в Outlook на машине, на которой выполняется код, и выполняется под учетной записью с правами администратора Exchange. - person trotty66; 12.01.2015
comment
Также в некоторых случаях (в зависимости от почтового ящика) я вижу эту ошибку: не удалось найти DN магазина. - person trotty66; 12.01.2015
comment
Провайдер EX использует идентификационные данные текущего пользователя или кэшированные учетные данные для аутентификации на сервере. Таким образом, вы можете либо работать как пользователь домена, который владеет основным почтовым ящиком в профиле и имеет право доступа к почтовым ящикам делегатов, либо вы можете кэшировать учетные данные с помощью объекта RDOSession.Credentials. - person Dmitry Streblechenko; 12.01.2015
comment
Я попробую. Спасибо! - person trotty66; 13.01.2015
comment
Я думаю, что часть кешированных учетных данных сейчас работает. Есть какие-либо мысли об ошибке, которую я вижу для Не удалось найти DN магазина? - person trotty66; 13.01.2015
comment
Ошибка означает, что Redemption не удалось получить DN почтового ящика из автообнаружения или PR_EMS_AB_HOME_MTA из GAL. Могут ли почтовые ящики, вызывающие эту ошибку, открываться из Outlook как почтовые ящики делегатов при работе с одним и тем же профилем? - person Dmitry Streblechenko; 13.01.2015
comment
Да в большинстве случаев. Есть один, который я не могу открыть с помощью профиля администратора, но большинство других я могу. - person trotty66; 13.01.2015
comment
позвольте мне расширить дальше. Я пишу консольное приложение, которое будет работать на сервере, на котором не установлен Outlook. консольное приложение будет запускаться как процесс под идентификатором пользователя, у которого есть права администратора Exchange для доступа к любому почтовому ящику в компании. цель приложения - просмотреть определенный список почтовых ящиков из базы данных, из которой он считывает имя почтового ящика, а затем удалить старые сообщения из различных указанных папок. - person trotty66; 20.01.2015
comment
Мой вход в сеанс RDO не выполняется, когда я запускаю это тестовое приложение локально на своем ноутбуке, если я сначала не вхожу в Outlook на моем ноутбуке с идентификатором пользователя, который имеет права администратора обмена. Мне нужно знать, могу ли я создать сеанс RDO с правами администратора обмена на сервере, на котором НЕ будет установлен Outlook. Надеюсь, это более ясный вопрос о моей ситуации. Заранее благодарим за любые ответы. - БТ - person trotty66; 20.01.2015
comment
Выполняется ли процесс от имени пользователя домена, которому принадлежит почтовый ящик, указанный в вызове RDOSession.LogonExchnageMailbox? - person Dmitry Streblechenko; 20.01.2015
comment
Visual Studio работает как пользователь домена с правами администратора обмена, и я также передаю те же учетные данные пользователя методу LogonHostedExchangeMailbox, а не LogonExchangeMailbox. Насколько я понимаю, LogonExchangeMailbox не работает с Exchange 2013. - person trotty66; 20.01.2015
comment
Это правильно. Но если идентификатор пользователя текущего процесса такой же, вам не нужно передавать учетные данные. Поскольку ваш код работает для большинства почтовых ящиков, при сбое GetSharedMailbox должно быть что-то специфичное для почтового ящика. Отправьте письмо Дмитрию на адрес dimastr dot com, и я пришлю вам отладочную версию Redemption. - person Dmitry Streblechenko; 21.01.2015