Показаны сообщения с ярлыком ящик. Показать все сообщения
Показаны сообщения с ярлыком ящик. Показать все сообщения

пятница, 5 октября 2012 г.

Удаление сообщений из ящиков PowerShell


Время от времени администратор Exchange сталкивается с ситуацией, когда сообщения соответствующие определенным критериям должны быть удалены из большого числа почтовых ящиков или транспортных очередей сервера Exchange. Такая необходимость может возникнуть из-за какой-либо массовой рассылки, когда сообщение отправлено случайно в большую группу рассылки или большому числу отдельных получателей или когда нужно предпринять усилия по очистке от последствий распространения вируса массовой почтовой рассылки (хотя они встречаются все реже и являются предметом заботы антивирусных сканеров серверов Exchange).
Соответствующие шаги описаны в различных местах документации Exchange, но может быть достаточно трудно, чтобы обратиться к нескольким источникам, если вы имеете смешанную среду содержащую несколько версий Exchange сервера. Мы хотели бы собрать в одном месте в некоторой степени обобщенные инструкции о том, как выполнить эти задачи во всех ныне поддерживаемых версиях Exchange Server - Exchange 2010, Exchange 2007.

Удаление сообщений из почтовых ящиков

Удаление сообщений из командной строки в Exchange 2010 RTM и Exchange 2007

В Exchange 2010 RTM и в Exchange 2007 вы можете использовать командлет Export-Mailbox для того, чтобы экспортировать или удалять сообщения. В Exchange 2010 SP1 действия по экспорту почтового ящика выполняются командлетом New-MailboxExportRequest и рассматриваются в отдельной статье. Действия по поиску и удалению сообщений выполняются командлетом Search-Mailbox.

Разрешения

В Exchange 2010 учетной записи должна быть назначена роль экспорта и импорта почтового ящика для того, чтобы выполнять операцию, используя Export-Mailbox в  Exchange 2010 RTM или Search-Mailbox в Exchange 2010 SP1. Если эта роль не назначена, то вы не сможете выполнять или «видеть» этот командлет.
Многофункциональный командлет Export-Mailbox может экспортировать содержимое почтового ящика на основе имен папок, диапазонов даты и времени, имен вложенных файлов и многих других фильтров. Сужение поиска предотвращает случайное удаление полезной почты. Для дополнительной информации, описания синтаксиса и параметров, смотрите следующие ссылки:
Учетная запись, используемая для экспорта информации, должна быть учетной записью Exchange Server Administrator, членом локальной группы Administrators целевого сервера и иметь полные права (Full Access) на исходный и целевой почтовые ящики. Целевой почтовый ящик должен быть заранее создан, как и целевая папка, которую вы указываете, тоже должна быть создана до выполнения команды.

Добавление и удаление необходимых разрешений

Следующий пример показывает, как извлечь все почтовые ящики организации Exchange и назначить полные права учетной записи MyAdmin. Вы должны выполнить эту операцию перед экспортом или удалением сообщений из почтовых ящиков пользователей. Отметим, что если вам необходимо экспортировать или удалить сообщения только из нескольких почтовых ящиков, то вы можете использовать командлет Get-Mailbox с соответствующими фильтрами или перечислить все исходные почтовые ящики.
Get-Mailbox -ResultSize unlimited | Add-MailboxPermission -User MyAdmin -AccessRights FullAccess -InheritanceType all
После экспорта или удаления сообщений из почтовых ящиков вы можете удалить полные права, как показано в следующем примере:
Get-Mailbox -ResultSize unlimited | Remove-MailboxPermission -User MyAdmin -AccessRights FullAccess -InheritanceType all

Удаление сообщений

Вот несколько примеров удаления сообщений.
В следующем примере удаляются все сообщения из папки Inbox почтовых ящиков на сервере Server1, которые содержат ключевые слова «Friday Party» и получены между 7-м и 9-м сентября. Эти сообщения будут удаляться из почтовых ящиков и копироваться в папку DeleteMsgs почтового ящика  MyBackupMailbox. После этого администратор может просмотреть сообщения в почтовом ящике MyBackupMailbox и удалить их. Формат параметров StartDate и EndDate должен соответствовать формату даты установленной на сервере: это или mm-dd-yyyy или dd-mm-yyyy.
Get-Mailbox -Server Server1 -ResultSize Unlimited | Export-Mailbox -SubjectKeywords "Friday Party" -IncludeFolders "\Inbox" -StartDate "09/07/2010" -EndDate "09/09/2010" -DeleteContent -TargetMailbox MyBackupMailbox -TargetFolder DeleteMsgs -Confirm:$false
В этом примере из всех почтовых ящиков удаляются все сообщения содержащие ключевые слова «Friday Party» в теле или заголовке.
 В зависимости от размеров вашей среды лучше выполнять извлечение/удаление в пакетном режиме, либо используя командлет Get-Mailbox с параметрами Server или Database (Get-Mailbox -Server servername -ResultSize Unlimited или Get-Mailbox -Database DB_Name -ResultSize Unlimited), либо указывая фильтр в параметре Filter. Вы можете также использовать командлет Get-DistributionGroupMember, чтобы выполнить эту операцию над членами группы рассылки.
Get-Mailbox -ResultSize Unlimited | Export-Mailbox -ContentKeywords "Friday Party" -TargetMailbox MyBackupMailbox -TargetFolder 'Friday Party' -DeleteContent
Рекомендуется всегда использовать целевой почтовый ящик (указывая параметры TargetMailbox и TargetFolder), чтобы иметь копию удаляемых сообщений. Вы можете просмотреть сообщения перед окончательным их удалением, так что любые нормальные сообщения, попавшие под действие фильтра, могут быть импортированы обратно в исходный почтовый ящик владельца. Однако можно просто удалить все сообщения без вспомогательного копирования их в другой почтовый ящик.
В этом примере из всех почтовых ящиков удаляются все сообщения, содержащие ключевые слова «Friday Party» в теле или заголовке, без копирования их в целевой почтовый ящик:
Get-Mailbox | Export-Mailbox -ContentKeywords "Friday Party" -DeleteContent

Удаление сообщений из почтовых очередей Exchange 2010 RTM и Exchange 2007

Удаление сообщения из очереди  это процесс из двух шагов.  Первая вещь, которую надо сделать  это приостановить (suspend) само сообщение. Как только сообщение приостановлено, вы можете продолжить и удалить его из очереди. Следующие команды приостанавливают  и удаляют сообщение на основе его заголовка.

Exchange 2007 SP1 и SP2

Следующая команда приостанавливает сообщения со строкой «Friday Party» в транспортных очередях на всех транспортных серверах организации:
Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | where{$_.Subject -eq "Friday Party" -and $_.Queue -notlike "*\Submission*"} | Suspend-Message
На серверах Exchange 2007 RTM, SP1 и SP2 вы не можете приостановить и удалить сообщения в очередиSubmission. Так что эта команда не будет воздействовать на сообщения в этой очереди.
Следующая команда удаляет все приостановленные сообщения, исключая очередь Submission:
Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | where{$_.status -eq "suspended" -and $_.Queue -notlike "*\Submission*"} | Remove-Message -WithNDR $False

Exchange 2010 и Exchange 2007 SP3

Следующая команда приостанавливает сообщения со строкой «Friday Party» в заголовке во всех  транспортных очередях на всех транспортных серверах организации:
Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | where {$_.Subject -eq "Friday Party"} | Suspend-Message
Следующая команда удаляет все приостановленные предыдущей командой сообщения:
Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | Where {$_.Subject -eq "Friday Party"} | Remove-Message -WithNDR $False
Отметим, что вы можете выполнять эти команды на конкретном транспортном сервере, указав его имя после Get-TransportServer.

Приостановка и удаление сообщений в заданной транспортной очереди

Вы можете приостановить и удалить сообщения из конкретной очереди. Чтобы получить список очередей на транспортном сервере, используйте командлет Get-Queue.
Следующая команда приостанавливает сообщения со строкой «Friday Party» в заголовке из заданной очереди:
Get-Message -Queue "server\queue" -ResultSize unlimited | where{$_.Subject -eq "Friday Party"} | Suspend-Message
Следующая команда удаляет все приостановленные предыдущей командой сообщения из заданной очереди:
Get-Message -Queue "server\queue" -ResultSize unlimited | where{$_.Subject -eq "Friday Party" } | Remove-Message -WithNDR $False

Предотвращение доставки сообщений с помощью транспортных правил

В Exchange 2010 и Exchange 2007 вы можете использовать транспортные правила для того, чтобы проверять сообщения в транспортном потоке и выполнять необходимые действия, подобные удалению сообщений, на основе заданных критериях. Для дополнительной информации смотрите Общие сведения о правилах транспорта.
В Exchange 2010 и Exchange 2007 вы можете использовать визард создания нового транспортного правила (New Transport Rule) в оснастке EMC, чтобы легко создавать транспортные правила. Следующие примеры иллюстрируют, как добиться того же самого через командную строку. Отметим различия синтаксиса между версиями. (В Exchange 2010 командлеты транспортных правил упрощены, позволяя вам создавать и модифицировать транспортные правила в одну строку).

Создание транспортного правила для удаления сообщения в Exchange 2010

В следующем примере создается транспортное правило для удаления сообщения со строкой «Friday Party» в заголовке:
New-TransportRule -Name "purge Friday Party messages" -Priority '0' -Enabled $true -SubjectContainsWords 'Friday Party' -DeleteMessage $true

четверг, 2 июня 2011 г.

Экспорт и импорт почтовых ящиков в Exchange Server 2010


В этой статье описывается, как экспортировать и импортировать почтовые ящики в Exchange 2010; материал основан на Exchange 2010 версии Release Candidate. И хотя версия RC уже близка к окончательной, в финальной версии Exchange 2010 все-таки могут быть некоторые изменения.
В ближайшем будущем мы рассмотрим глубже, как вам подготовиться и что нужно знать, чтобы решать ваши задачи с помощью нового релиза Exchange.

Почему экспорт и импорт

Для начала нам нужно определиться, ставится ли задача экспорта или импорта. В целом, это довольно просто. Вот что вам может понадобиться сделать:
  • Мигрировать с почтовых ящиков полностью за пределы среды вашего сервера Exchange; при этом вы можете действовать через PST-файл, полученный от пользователя
  • Решать проблемы с существующими почтовыми ящиков, возникающие из-за ошибок баз данных или иных сложностей
  • Создавать резервные копии всех почтовых данных вручную без участия специального агента

Выполнение предварительных условий

Перед началом работы с задачей вам необходимо подготовить клиентскую систему, выполнив следующие требования:
  • Установка 64-битной операционной системы Windows
  • Установка Powershell 2.0
  • Установка .NET Framework 3.51
  • Установка Outlook Office 2010 64 Bit (который сейчас есть в версии CTP release)
  • Установка средств управления Exchange Server 2010
  • Создать членство в домене для этого клиента
  • Войти в администраторский аккаунт со всеми администраторскими правами
В Exchange Server 2010 есть возможность ролевого администрирования; и для начала вам нужно будет выполнить следующую команду:
New-ManagementRoleAssignment 'Role 'Mailbox Import Export' 'User '<имя пользователя>'
Эта команда дает пользователю право импортировать и экспортировать почтовые ящики. Другой способ добиться того же – создать группу в Active Directory и добавить разрешения этой группе с помощью следующей команды:
New-ManagementRoleAssignment 'Role 'Mailbox Import Export' 'Group '<пользовательская группа>'
После этого вам нужно будет всего лишь добавлять пользователей в эту группу, чтобы разрешить им экспортировать и импортировать почтовые ящики.
Если вы посмотрите, как импортировать почтовый ящик, вы увидите, что команда в powershell для этого очень проста:
Рисунок 1: Импорт почтового ящикаРисунок 1: Импорт почтового ящика
Если вы посмотрите, как экспортировать почтовый ящик, вы поймете, что и это очень просто! Вот, что вам нужно сделать, чтобы выполнить эту задачу.
Рисунок 2: Начало экспорта почтового ящикаРисунок 2: Начало экспорта почтового ящика
Эта процедура может занять некоторое время в зависимости от размера личной папки. Не переживайте, если при этом придется подождать.
Рисунок 3: Завершение экспорта почтового ящикаРисунок 3: Завершение экспорта почтового ящика
Как вы понимаете, все эти действия представлены командами в Powershell. В версии Release Candidate Exchange Server 2010 не существует способа добиться такого результата с помощью графического интерфейса. А вот в Exchange Server 2010 Beta Release такой способ есть.
Надеюсь, такую возможность вернут в окончательной версии Exchange Server 2010, поэтому я покажу вам, как это делается.
После установки Outlook 2010 на компьютер, где будет производиться экспорт или импорт, у вас появится две новых команды (если посмотреть в контекстное меню каждого почтового ящика). Это 'Export Mailbox' и 'Import Mailbox'.
Рисунок 4: Экспорт почтового ящика в консоли управления Exchange Administrative ConsoleРисунок 4: Экспорт почтового ящика в консоли управления Exchange Administrative Console
После этого нам нужно указать местоположение целевого почтового ящика и сервера, либо местоположение личной папки (PST).
Рисунок 5: Подробная информация об экспорте почтового ящикаРисунок 5: Подробная информация об экспорте почтового ящика
Импорт почтового ящика легок и прост. Какую опцию выбрать, вы можете увидеть на Рисунке ниже.
Рисунок 6: Импорт почтового ящика с помощью консоли Exchange Management ConsoleРисунок 6: Импорт почтового ящика с помощью консоли Exchange Management Console
Причина, по которой в Microsoft отключили эту функцию, может заключаться в том, что (отвлекаясь от возможности возвращения этой функции в окончательном релизе или в первом Service Pack) эта задача предназначается специально для администраторов сервера почты, а не для общих администраторов.

Заключение

Как вы видели выше, импорт или экспорт почтового ящика в Exchange Server 2010 совершенно аналогичен тому, что было в Exchange Server 2007, если вы выполнили предварительные условия и установили Outlook 2010 64 Bit на соответствующий компьютер. Установка Outlook на сам сервер Exchange Server раньше не поддерживалась, но в будущем она появится.
Еще нужно упомянуть, что импорт и экспорт почтовых ящиков в личную папку приводит к тому, что сервер Exchange не имеет теперь единственного хранилища. Это означает, что сначала, если некий элемент был отправлен нескольким пользователям в пределах сервера Exchange, сообщение сохранялось лишь один раз. Если вы запускаете импорт или экспорт, такая особенность теряется, и размер вашей почтовой базы данных будет значительно расти. Поэтому лучшим решением для перемещения почтовых ящиков с одного сервера на другой или с одной базы данных на другую будет просто переместить почтовый ящик и не экспортировать или импортировать его после.
Если вы переходите из среды почтового сервера, отличного от Exchange, к среде Exchange – это может быть единственной причиной, по которой вы можете перемещать старые почтовые записи на новую среду. Кроме того, возможно, если вы еще работаете с Exchange Server 5.x и миграция перемещением невозможна, такая возможность тоже может решить вашу проблему.