Полезный бесплатный инструмент для архивирования почты

Что из функций Exchange Server может помочь обеспечить соответствие требованиям корпоративных политик или регулирующих органов? В статьях «Основы протоколирования в Exchange 2003» (http://old.osp.ru/win2000/exchange/607_31_1.htm) и «Расширенное протоколирование в Exchange 2003» уже обсуждались возможности ведения журналов в Exchange, с помощью которых можно перехватывать сообщения пользователей во время приема или отправки из баз данных Exchange. Но протоколирование Exchange не видит разницы между внутренними и внешними сообщениями. Если необходим более детальный контроль операций, для этого больше подойдет специальный инструмент Exchange — Exchange Server ArchiveSink.

Использовать ArchiveSink можно выборочно, сохраняя только те сообщения, которые предназначены для определенной группы или конкретного получателя. Видимо, ArchiveSink был создан как диагностический инструмент, предназначенный для решения проблем с маршрутизацией следования сообщения. Разработчики Microsoft усовершенствовали эту утилиту в Exchange Server 2003 и выпустили ее как средство для архивирования сообщений. Набор утилит Exchange 2003 доступен после установки сервера Exchange 2003 на Windows 2000 Service Pack 3 (SP3) или более поздней. Эту утилиту можно настроить таким образом, что все сообщения или часть их будут копироваться при прохождении через определенный виртуальный сервер или серверы SMTP. Почтовые сообщения, требующие локальной доставки (т. е. сообщения от одного пользователя другому на том же сервере), минуют виртуальный сервер SMTP, но такой тип сообщений также, возможно, придется архивировать. Решить эту проблему помогает ArchiveSink, поскольку он не привязан к виртуальным серверам SMTP.

Сценарий внедрения

Лучшим местом для ArchiveSink на серверах Exchange являются отдельные серверы-ретрансляторы SMTP, или серверы с внешними интерфейсами в Internet, или сеть другой компании. Общим для сценариев (см. рисунок) является то, что компания имеет соединение с несколькими партнерскими организациями и требуется ведение журнала аудита почтового обмена между партнерами. Основная организация поддерживает два сервера Exchange с ретранслятором SMTP: на одном общее соединение с Internet, на другом — соединение с партнерской организацией. На втором сервере установлен ArchiveSink, и настроен он таким образом, чтобы протоколировать весь трафик SMTP, обрабатываемый этим сервером.

Рисунок. Пример сценария внедрения

Установка

ArchiveSink входит в набор инструментов для Exchange 2003, загружаемых из Web (Release To Web, RTW). Утилиту можно загрузить по адресу http://www.microsoft.com/exchange/downloads/2003/default.mspx. При загрузке доступен саморазворачивающийся исполняемый файл (archivesink.exe). Во время выполнения он создает каталог с файлом .dll (archivesink.dll), установочным сценарием (archivesink_setup.vbs), документацией (archivesink.doc) и лицензионным соглашением End User License Agreement, EULA (eula.txt).

Следует скопировать все, кроме EULA, в каталог Exchsrvrin на сервере Exchange, где планируется запустить ArchiveSink (достаточно положить файлы archivesink.dll и archivesink_setup.vbs в этот каталог). Для установки ArchiveSink и подключения к виртуальному серверу нужно открыть командное окно и перейти в каталог Exchsrvrin. Затем требуется запустить установочный сценарий, используя следующий синтаксис (одной строкой):

cscript archivesink_setup.vbs action vs_id [location]

где action должно быть install, uninstall или display; vs_id — это ID виртуального сервера SMTP, на который устанавливается ArchiveSink; location указывает каталог, в который утилита будет архивировать сообщения. Параметр location необязателен для действий uninstall и display, но для действия install он необходим. Если каталога location не существует, ArchiveSink создаст его при архивировании первого почтового сообщения.

Например, для установки ArchiveSink на виртуальный сервер SMTP по умолчанию надо ввести следующую команду:

cscript archivesink_setup.vbs install 1 c:vs1archive

Отметим, что в данном примере для архивирования сообщений используется каталог на диске C. На промышленной системе так делать нельзя! Вместо этого следует использовать отдельный диск или том. Перехватываемые ArchiveSink сообщения могут быстро заполнить большие дисковые пространства, в зависимости от того, как много сообщений проходит через виртуальный сервер SMTP. Прежде чем запустить утилиту в промышленную эксплуатацию, необходимо проанализировать существующий трафик и использовать адекватный ему дисковый объем. Параметр vs_id в примере равен 1. Для определения ID соответствующего виртуального сервера SMTP нужно открыть Exchange System Manager (ESM) и пройти структуру организации Exchange в следующем порядке: папка Administrative Groups, папка административной группы с виртуальным сервером SMTP, папка Servers, папка сервера Exchange с виртуальным сервером SMTP, папка Protocols, папка SMTP.

Экран 1. Нахождение ID виртуального сервера SMTP

Правой кнопкой следует щелкнуть по объекту виртуального сервера и выбрать Properties в контекстном меню. Затем требуется перейти на закладку Messages — ID виртуального сервера SMTP будет частью параметра Badmail directory или Queue directory в текстовом окне. Пример на экране 1 показывает, что vs_id для данного виртуального сервера SMTP равно 1 (как часть строки vsi 1). Также можно определить номер, если посмотреть настройки Logging на закладке General. Убедиться, что утилита была успешно установлена и работает с нужным виртуальным сервером SMTP, можно с помощью сценария установки с операцией display. Например, можно ввести следующую команду:

cscript archivesink_setup.vbs display 1

Полученные данные показаны на экране 2.

Экран 2. Проверка установки ArchiveSink

После установки ArchiveSink требуется запустить архивирование сообщений через параметр реестра Enable Message Logging типа REG_DWORD в разделе реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftExchangeArchiveSinkvs_id, задав ему значение 0x00000001 (т. е. «активно»). Поскольку это действие связано с протоколом SMTP, требуется перезапуск системной службы IIS Admin. После запуска архивирования ArchiveSink начинает записывать сообщения в каталог, указанный при установке. Процесс установки создает два подкаталога по указанному местоположению. Первый каталог, Smtp Messages, хранит сообщения SMTP, проходящие через виртуальный сервер SMTP. Второй каталог, Mapi-Gateway Messages, хранит сообщения, полученные от клиентов Messaging API (MAPI), которые подключаются к серверу Exchange без взаимодействия с виртуальным сервером SMTP. Для каждого архивируемого сообщения ArchiveSink создает два файла: файл .eml с самим архивированным сообщением и файл .xml — с информацией из заголовка сообщения. Оба файла имеют одинаковое имя «arch_случайный номер», но разные расширения.

Процесс архивации

ArchiveSink работает, используя два события от процесса транспортировки сообщений: событие OnMessage Submission и событие OnPostCategorize. Первое событие, активируемое параметром Enable PreCat в разделе реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoft ExchangeArchiveSink vs_id при установке в 0x00000001, по умолчанию появляется после установки ArchiveSink. Второе событие, активируемое параметром Enable PostCat (в том же разделе реестра) является необязательным. Обычно требуется активировать только один их этих параметров.

По умолчанию SMTP или Information Store (IS) подтверждают прохождение сообщения через виртуальный сервер SMTP, на котором установлен ArchiveSink, событием OnMessageSubmission. Это событие фиксируется один раз для каждого сообщения, проходящего через транспортную систему сервера Exchange. Когда это событие фиксируется, ArchiveSink сохраняет сообщение в файле .eml и создает соответствующий файл .xml. На экране 3 показан пример такого файла, в котором ясно видно, кто отправитель, кто получатель и к какому файлу .eml относится данный файл. Все получатели, включая скрытых получателей BCC, будут отображаться в этом файле.

Экран 3. Пример файла xml, сгенерированного ArchiveSink

Можно активировать событие OnPostCategorize, установив параметр Enable PostCat в 0x00000001. Когда категоризатор Exchange определяет информацию о финальном маршруте для сообщения, предназначенного для нескольких получателей, он разделяет такое сообщение на несколько частей.

Например, если сообщение адресовано двум получателям — dave@microsoft.com и tony@hp.com, категоризатор создаст две копии сообщения, по одной на каждого получателя. Если активировать событие OnPostCategorize, ArchiveSink создаст набор архивных файлов (т. е. файлов .eml и .xml) для исходного сообщения, а затем создаст комплекты файлов для дополнительных частей. Таким образом, сообщение для двух получателей породит шесть архивных файлов, показанных на экране 4. Дополнительные файлы имеют формат arch_случайный номер_postcat.eml и arch_случайный номер_postcat.xml. Заметим, что файлы имеют разные имена.

Экран 4. Сообщения, обнаруженные по событию OnPostCategorize

Событие OnPostCategorize также отображает реальных получателей из списка рассылки Distribution List (DL), используя сервер, на котором установлен ArchiveSink, для раскрытия DL. По умолчанию (т. е. когда активировано только событие OnMessageSubmission) состав DL не отображается, поскольку определение состава происходит во время процесса категоризации. Поэтому для ведения более полного протоколирования важно активировать событие OnPostCategorize.

Дополнительные настройки

Функциональность ArchiveSink управляется параметрами системного реестра, находящимися в разделе HKEY_LOCAL_MACHINESOFTWAREMicrosoftExchangeArchiveSinkvs_id, которые показаны на экране 5. Три из них уже упоминались (т. е. Enable Message Logging, Enable Precat и Enable PostCat), теперь рассмотрим другие параметры.

Экран 5. Параметры реестра для ArchiveSink.

По умолчанию ArchiveSink архивирует сообщения с подтверждениями о доставке или недоставке и не архивирует системные сообщения, такие как репликационные сообщения общих папок. Если есть необходимость архивировать такие сообщения, нужно установить параметр Archive System Messages в 0x00000001.

Активация параметра Dump P1 (т. е. установка в 0x00000001) создает дополнительные файлы, содержащие архив заголовков типа P1. Такие файлы имеют расширение .p1 (для именования файлов сохраняется принцип ArchiveSink). Заголовки P1 содержат нечитаемый формат, но служба поддержки Microsoft может запросить такие файлы при проведении диагностики проблемы. Обычно данный параметр остается отключенным (как задано по умолчанию).

Если активировать параметр Enable Mapi-Gateway Messages, то сервер Exchange с ArchiveSink будет сохранять сообщения, полученные от таких клиентов MAPI, как Outlook. Этот параметр активен по умолчанию, но его можно отключить (т. е. установить значение в 0x00000000), если требуется сохранять только те сообщения, которые проходят через SMTP. Следует учитывать уменьшение дискового пространства в случае использования данного параметра.

Параметр Enable Smtp Messages активен по умолчанию и управляет сохранением сообщений SMTP, проходящих через виртуальный сервер SMTP. Если необходимо архивировать только сообщения от клиентов MAPI определенного сервера, то данный параметр можно отключить (т. е. установить значение 0x00000000).

Параметры Mapi-Gateway Messages и Smtp Messages определяют расположение хранилища, куда ArchiveSink должен архивировать сообщения MAPI и SMTP. Значения этих параметров ArchiveSink можно поменять в любое время, но потребуется перезапуск системной службы IIS Admin.

Итак, ArchiveSink не предлагает никаких возможностей в плане индексации и поиска архивных данных; эти данные могут быстро заполнить дисковое пространство, они неуправляемы и дополнительно нагружают сервер, особенно это касается серверов с большим почтовым трафиком. Но, проявив находчивость, можно подготовить сценарии или подобрать утилиты для индексированного поиска архивированных сообщений и периодической выгрузки этих сообщений в Microsoft SQL Server, систему управления данными или архивное хранилище.

ArchiveSink предоставляет простую функциональность, сохраняя сообщения, отправленные из почтового ящика или принятые от виртуального сервера SMTP. Для выполнения более сложных задач с мощными инструментами управления обычно используется решение от независимых разработчиков. Но добиться хорошего результата можно и не расходуя десятки тысяч долларов.

Киран Маккорри - Главный консультант подразделения HP Advanced Technology Group в Ирландии. kieran.mccorry@hp.com

Поделитесь материалом с коллегами и друзьями