none
Чем можно вытащить почту из mail.que (Safety Net) RRS feed

  • Вопрос

  • Из-за проблем с RAID грохнулась база данных Exchange, на восстановление всех пользовательских ящиков ушло более 2х дней.

    Есть файловые копии данных серверов за эти дни.

    Если правильно понял то копии не доставленных писем хранятся в базе Safety Net, она-же mail.que

    Подскажите, чем можно посмотреть/вытащить не доставленные письма из mail.que

Ответы

Все ответы

  • Пока не совсем понятно, что у вас произошло и в какой последовательности. Mail.que вы пересоздавали или используется старый?

    Вообще самый простой вариант - остановить службу транспорта и подменить все файлы из папки, где находится очередь, на восстановленные (старые перенесите в другое место). После этого выполните командлет Get-Queue и посмотрите, сколько писем там находится. Понятно, что делать это лучше в то время, когда на сервер минимальная нагрузка.

    Еще можно временно указать для очереди другую папку, в которой восстановленные файлы:

    https://technet.microsoft.com/ru-ru/library/bb125177%28v=exchg.160%29.aspx?f=255&MSPPError=-2147217396

  • используется старый.

    Несколько ящиков пользователей не удалось оперативно восстановить, ушло более 2х дней, т.е. превышен срок восстановления ящика, помимо этого есть подозрения что не вся почта попала в ящики которые восстановили до истечения указанного срока.

    Подставить очередь это понятно, а можно посмотреть в базе письма не копируя файлы в продакшен...

  • Ну вполне можно попробовать скопировать файлы в лабу, если она у вас есть. Если нет - то хороший повод ее развернуть :) Далее просмотреть содержимое очереди можно так:

    get-queue | get-message

    Экспортировать сообщения можно с помощью командлета Export-Message. Например так (самый простой вариант, но запросто можно его улучшить):

    get-queue | get-message | Export-Message -Path "C:\Messages"

  • Ну вполне можно попробовать скопировать файлы в лабу, если она у вас есть. Если нет - то хороший повод ее развернуть :) Далее просмотреть содержимое очереди можно так:

    get-queue | get-message

    Экспортировать сообщения можно с помощью командлета Export-Message. Например так (самый простой вариант, но запросто можно его улучшить):

    get-queue | get-message | Export-Message -Path "C:\Messages"

    Спасибо, попробую.

    В описании Safety Net сказано что в базе хранятся сообщения (по умолчанию 2 дня), в т.ч. доставленные, однако get-queue | get-message не позволяют увидеть эти сообщения.

    Подскажите пожалуйста, если не затруднит, а как посмотреть сообщения которые вообще есть в базе Safety Net, а не только те что находятся в очереди?

  • Я не очень понимаю, при чем тут Safety Net.

    Вам нужна обычная очередь, которая копилась, пока база у вас была недоступна. Поэтому, как написал Артем, достаньте из бэкапа mail.que и укажите службе транспорта восстановленную базу, и если ей (службе транспорта) дурно не станет от этого, то возможно, вы получите свои письма.


    MCSAnykey

  • Я не очень понимаю, при чем тут Safety Net.

    Вам нужна обычная очередь, которая копилась, пока база у вас была недоступна. Поэтому, как написал Артем, достаньте из бэкапа mail.que и укажите службе транспорта восстановленную базу, и если ей (службе транспорта) дурно не станет от этого, то возможно, вы получите свои письма.


    MCSAnykey

    Данный способ я понял, и попробую так сделать, однако возвращаясь к Safety Net, он хранит копии писем для отказоустойчивости, раз хранит значит их можно достать, или тогда какой смысл в Safety Net?!
  • Достать можно - для этого надо воспользоваться командлетами *-ResubmitRequest:

    https://technet.microsoft.com/en-us/library/jj215718%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396

    Но файл очереди все же подключить к серверу придется.

    Важно так же понимать, что SafetyNet - механизм, который для работы требует наличие еще одного MBX сервера в этом же сайте (можно без DAG). Вот пример из документации:

    Safety Net doesn't require DAGs. For Mailbox servers that don't belong to a DAGs, Safety Net stores copies of the delivered messages on other Mailbox servers in the local Active Directory site.

    Если у вас был только один сервер, то про SafetyNet можно забыть сразу.


    • Изменено Tema_BYMVP 18 мая 2017 г. 7:18

  • Если у вас был только один сервер, то про SafetyNet можно забыть сразу.


    Выходит что MS придумала некую хрень, внедрила ее в свой продукт, она работает, жрет ресурсы, но при этом бесполезна если сервер один :)

    Этакий навес на автомобиль весом в полтонны на случай если ты захочешь купить прицеп, захочешь или нет, но хрень эту возить с собой придется, в результате чего тратиться больше бензина, а толку от этого никакого :)

  • А что тут странного? Если сервер один, то какой смысл в SafetyNet? Вы потеряли данные - восстановили все из резервной копии. В том числе и очередь. А вот если был бы в этом сайте второй сервер, то на нем и хранились бы копии сообщений, которые можно проиграть в базу. Так что как раз с точки зрения Microsoft все выглядит логично. 

    Кстати, у вас сейчас хорошее обоснование для закупки дополнительного оборудования, лицензий и построения DAG :)

  • Поднял виртуалку из бекапа, остановил транспорт, подключил очередь.
    get-queue | get-message показывает что нечего в очереди нет
  • Посмотрите логи транспорта (SmtpReceive). Тогда сможем точно понять, что происходило. Возможно письма и не дошли до очереди или не приходили вообще (или были все же доставлены в базу данных).