Ресурсный почтовый ящик в Exchange 2010
Введение
Многие организации, с которыми мне доводилось сталкиваться и которые реализовали Exchange, сталкивались с необходимостью создания почтовых ящиков, которые представляют ресурсы, такие как конференц-зал или такие элементы оборудования, как интерактивные доски, проекторы и т.д. Создавая такие ресурсы, пользователи в будущем могут бронировать их посредством возможностей работы с календарями в Exchange так же, как они планировали встречи с нужными людьми, резервируя тем самым ресурсы, которые им могут потребоваться.
В версиях Exchange ранее Exchange 2007 общий процесс ресурсного ящика был не так гладок, как мог бы быть. Например, в статье Маркуса Кляйна (Markus Klein) здесь на MSExchange.org вы узнаете, что можно было использовать публичные папки для ресурсов, хотя это имело один или два недостатка, таких как отсутствие информации о занятости (free/busy), представленной в календаре. Если почтовый ящик создавался для ресурса, основная тема администрирования концентрировалась на том, кто будет вести наблюдение за резервированием ресурса. Например, если двое зарезервировали конференц-зал, будет ли он предоставлен первому человеку, подавшему заявку? Или же зал будет предоставлен старшему по должности сотруднику, подавшему заявку? Агент Auto Accept Agent помогал в этой области, поскольку он использовался для автоматической обработки запросов на собрания для ресурсных почтовых ящиков.
В Exchange 2007 и Exchange 2010 был принят новый подход к ресурсам. Exchange 2007 и Exchange 2010 поддерживают автоматическое резервирование ресурсных почтовых ящиков, а это означает, что такие инструменты, как Auto Accept Agent, больше не требуются. Начиная с Exchange 2007, ресурсные почтовые ящики, впервые, получили определенные атрибуты Active Directory, которые связаны с использование ресурсов, такие как атрибуты, указывающие количество человек, которое может вместиться в конференц-зале. Эта модель практически такая же и в Exchange 2010, и о Exchange 2010 и Outlook 2010 пойдет речь в этом цикле статей.
Итак, давайте рассмотрим ресурсные почтовые ящики в Exchange 2010.
Создание ресурсных почтовых ящиков
Создание ресурсных почтовых ящиков является очень простой задачей и может выполняться либо из консоли управления Exchange Management Console, либо из оболочки управления Exchange Management Shell. В консоли EMC создание ресурсного почтового ящика очень похоже на процесс создания пользовательского почтового ящика. При выборе действия Новый почтовый ящик (New Mailbox) в панели действий у администратора открывается окно, показанное на рисунке 1, здесь вы увидите опции создания почтового ящика места (room mailbox) или почтового ящика оборудования (equipment mailbox) .
Рисунок 1: Создание почтового ящика оборудования или места
Одним из интересных моментов относительно ресурсных почтовых ящиков является то, что связанная с ними учетная запись пользователя Active Directory автоматически отключается, как показано в тексте на рисунке 1. Например, на рисунке 2 видно, что пользовательская учетная запись Active Directory нового ресурсного почтового ящика места создается для конференц-зала A. Если поближе присмотреться к значку пользовательской учетной записи на рисунке 3, вы увидите, что связанная с этим ящиком пользовательская учетная запись Active Directory автоматически отключается после создания ящика. Это вызывает интерес, если вы предварительно создаете учетную запись Active Directory, а затем используете консоль управления Exchange Management Console для включения возможности использования ресурсного почтового ящика для этой учетной записи Active Directory. Не забудьте отключить предварительно создаваемую учетную запись Active Directory, иначе она не будет отображена в консоли управления Exchange Management Console в качестве действительной учетной записи с возможностью использования ресурсного почтового ящика.
Рисунок 2: Создание связанной пользовательской учетной записи Active Directory
Рисунок 3: Отключенная пользовательская учетная запись Active Directory
Также можно использовать оболочку Exchange Management Shell для создания ресурсного почтового ящика с помощью команды New-Mailbox. Например, для создания ресурсного почтового ящика места для конференц-зала B в оболочке Exchange Management Shell используется следующая команда:
New-Mailbox -Name 'Conference Room B' -Alias 'ConfRoomB' -UserPrincipalName 'ConfRoomB@neilhobson.com' -FirstName 'Conference' -LastName 'Room B' 'Room
Результаты выполнения этой команды показаны на рисунке 4. Обратите внимание, что эта команда не указывает имя базы почтовых ящиков, в которой хранится этот ящик, поскольку системе было разрешено случайно выбрать базу данных. Если необходимо создать этот почтовый ящик в определенной базе данных, параметр 'Database в команде New-Mailbox должен быть использован. Помимо этого данная команда также не указывает подразделение, в котором будет храниться учетная запись пользователя, поэтому будет использоваться стандартный контейнер Users. Если нужно указать подразделение, то нужно использовать параметр 'OrganizationalUnit, пример которого показан ниже:
-OrganizationalUnit 'neilhobson.com/Resource Mailboxes'
Рисунок 4: Создание ресурсного почтового ящика в Exchange Management Shell
В вышеприведенной команде New-Mailbox видно, что ключевым параметром, используемым для указания этого почтового ящика в качестве ресурсного является 'Room параметр, используемый в самом конце команды. Это информирует систему о том, что создаваемый ресурсный почтовый ящик является почтовым ящиком места, а не каким-либо другим типом ресурсного почтового ящика. Для создания ресурсного почтового ящика для оборудования используется параметр 'Equipment вместо 'Room. Например, следующая команда может использоваться для создания ресурсного почтового ящика для проектора, который принадлежит конференц-залу B:
New-Mailbox -Name 'Projector Room B' -Alias 'ProjRoomB' -UserPrincipalName 'ProjRoomB@neilhobson.com' -FirstName 'Projector' -LastName 'Room B' -Equipment
Если список почтовых ящиков теперь отобразить в консоли Exchange Management Console, видно, что почтовые ящики места и оборудования имеют различные значки и детали типа получателей (recipient type details) , как показано на рисунке 5.
Рисунок 5: Ресурсные почтовые ящики места и оборудования
Используя параметры 'Room и 'Equipment в команде New-Mailbox, можно видеть дополнительные закладки свойств при вызове диалога свойств ресурсного почтового ящика. Если говорить точнее, закладки Resource General, Resource Policy, Resource Information, Resource In-Policy Requests и Resource Out-of-Policy Requests будут доступны, как показано на рисунке 6.
Рисунок 6: Закладки ресурсного почтового ящика
Вот краткое описание цели каждой из этих закладок. Обратите внимание, что мы будем более подробно рассматривать эти закладки в одной из следующих частей этого цикла.
- Resource General - эта закладка позволяет вам настраивать пользовательские свойства ресурса, а также значение объема ресурсов. К тому же, на этой закладке вы можете указать, включать ли Помощник резервирования ресурсов (Resource Booking Attendant) для данного почтового ящика.
- Resource Policy - закладка политики ресурса позволяет вам настраивать определенные политики, которые будут применяться к ресурсному почтовому ящику, такие как возможность резервирования повторяющихся собраний и максимальная длительность собрания. К тому же можно настроить делегатов ресурсного почтового ящика в этой закладке.
- Resource Information - эта закладка управляет информацией о собрании, которая доступна в календаре ресурсного почтового ящика, например вложения, комментарии, тема и т.д. Она также позволяет настраивать дополнительный текст, отправляемый организатору собрания.
- Resource In-Policy Requests - здесь вы можете настраивать тех пользователей, которым разрешено передавать запросы на собрания согласно политике, которые могут одобряться автоматически или делегатом ресурсного ящика.
- Resource Out-of-Policy Requests - эта закладка позволяет вам настраивать тех пользователей, которым разрешено предоставлять запросы на собрания, не включенные в политику, и которые должны одобряться делегатом ресурсного ящика.
Настраиваемые свойства ресурса
В закладке Resource General в свойствах ресурсного почтового ящика мы найдем опцию настройки для конфигурации настраиваемых свойств ресурса. Допустим, в конференц-зале A имеется интерактивная доска, а в конференц-зале B такой доски нет. С точки зрения пользователей при резервировании конференц-зала будет очень удобно знать о том, в каком конференц-зале имеется такое оборудование. Это можно сделать с помощью определения настраиваемых свойств ресурса, которые можно добавить ресурсному почтовому ящику с помощью закладки Resource General, расположенной в свойствах ресурсного почтового ящика. Это показано на рисунке 7.
Рисунок 7: Закладка общих свойств ресурса для конференц-зала A
Однако если нажать на кнопку Добавить (Add)' , показанную на рисунке 7, для добавления настраиваемых свойств ресурса, это выведет текст, показанный на рисунке 8, если не были определены никакие настраиваемые свойства ресурса. Конечно, это скорее подходит для абсолютно новой установки Exchange 2010, поскольку, как указано текстом на рисунке 8, схема свойств ресурса не была расширена. Текст также говорит о том, что схема свойств ресурса должна быть расширена посредством оболочки Exchange Management Shell.
Рисунок 8: Информация о настраиваемых свойствах ресурса
Здесь можно использовать команды Get-ResourceConfig и Set-ResourceConfig. Команда Get-ResourceConfig используется для получения данных о схеме ресурса из Active Directory, и если выполнить эту команду в новой Active Directory и Exchange 2010 среде, вы увидите, что не было определено никаких дополнительных свойств ресурса, как показано на рисунке 9.
Рисунок 9: Результаты выполнения команды Get-ResourceConfig
Для создания настраиваемого свойства интерактивной доски для ресурсного почтового ящика, настроенного в качестве почтового ящика места, можно использовать команду Set-ResourceConfig, как показано в следующем примере:
Set-ResourceConfig -ResourcePropertySchema "Room/Whiteboard"
Теперь мы можем убедиться, что данные схемы были обновлены, если еще раз воспользуемся командой Get-ResourceConfig, рисунок 10.
Рисунок 10: Проверка настраиваемых свойств ресурса Room/Whiteboard
После выполнения команды Set-ResourceConfig вернитесь в окно, показанное на рисунке 7, и еще раз нажмите кнопку Добавить' . В этот раз будет представлена страница, рисунок 11, на которой вы сможете добавить настраиваемое свойство ресурса интерактивной доски в ресурсный почтовый ящик для конференц-зала A.
Рисунок 11: Добавление настраиваемого свойства ресурса интерактивной доски
Теперь действительные объекты и атрибуты Active Directory ресурса места обновлены соответствующим образом. Например, взгляните на рисунок 12, где показаны свойства конференц-зала A и B, отображенные в ADSIEdit. Я отфильтровал вид так, чтобы только те атрибуты, для которых есть значения, были представлены. Вы видите, что выделенный атрибут, msExchResourceDisplay, обновлен информацией об интерактивной доске для конференц-зала A, в то время как конференц-зал B не обновлен, поскольку у него нет интерактивной доски.
Рисунок 12: Свойства почтового ящика конференц-залов в ADSIEdit
Для конечных пользователей добавление настраиваемого свойства ресурса интерактивной доски означает, что столбец описания (Description) в адресной книге будет обновлен соответственно. Например, на рисунке 13 показана адресная книга Все залы (All Rooms) , открытая в Outlook 2010, и пользователи четко видят, что в конференц-зале A имеется интерактивная доска, тогда как в конференц-зале В такой доски нет. Вы можете также обратить внимание на столбец Емкость (Capacity) на рисунке 13, которая образуется из поля Емкость ресурсов (Resource capacity) , которую мы видели ранее на рисунке 7.
Еще одной важной функцией для пользователей при бронировании конференц-залов является возможность знать о том, сколько людей может вместить этот зал, а эту цифру можно указать для каждого зала, введя соответствующее значение в поле Емкость ресурса (Resource capacity) . Вы также можете увидеть эту информацию на рисунке 12, где значение 25 было назначено атрибуту msExchResourceCapacity для конференц-зала A.
Рисунок 13: Конференц-зал в адресной книге All Rooms
Итак, мы видели, что создание ресурсных почтовых ящиков в Exchange 2010 означает, что соответствующие учетные записи в Active Directory имеют специальные атрибуты, связанные с функциями ресурсного почтового ящика. Теперь, когда мы создали ресурсные ящики для двух конференц-залов, давайте рассмотрим то, как пользователи могут их использовать.
Ответы на пользовательские запросы
На рисунке 7 мы видели флажок, позволяющий включить помощника по резервированию ресурсов (Resource Booking Attendant), который дает возможность автоматически обрабатывать запросы на ресурсы на основе определенных политик резервирования; политики резервирования мы рассмотрим позже в этом цикле статей. Обратите внимание, что помощник по резервированию ресурсов по умолчанию отключен, как видно из рисунка 7, поэтому давайте сначала обсудим, что означает такое стандартное поведение для пользователей и администраторов. По сути, это означает, что этим ресурсным почтовым ящиком должен управлять делегированный пользователь.
Вы помните, что мы уже отмечали, что создание ресурсного почтового ящика создает связанную с ним учетную запись Active Directory, которая отключена по умолчанию, поэтому никто не должен входить в Active Directory от имени этой учетной записи. Поэтому обычно нужно убедиться, что номинированный пользователь имеет делегированный доступ к этому почтовому ящику и этот пользователь должен обрабатывать запросы, приходящие на этот ресурсный почтовый ящик. Это можно легко настроить в закладке Политики ресурса (Resource Policy) , расположенной в свойствах ресурсного почтового ящика в консоли управления Exchange Management Console, как показано на рисунке 14. Обратите внимание на опцию пересылки запросов на проведение собраний делегатам, что означает, что пользователь Sue будет получать копии запросов на собрания для конференц-зала A в свой собственный почтовый ящик, в результате чего отпадает необходимость открывать почтовый ящик конференц-зала A, как дополнительный почтовый ящик в ее профиле Outlook.
Рисунок 14: Настройка делегата ресурсного почтового ящика
Можно задавать делегированный доступ с помощью оболочки Exchange Management Shell посредством команды Set-CalendarProcessing. Специальным параметром для этой задачи будет параметр ResourceDelegates. Обратите внимание, что параметр ResourceDelegates должен представлять собой список делегатов для ресурсного почтового ящика. Другими словами, представьте сценарий, где пользователь Sue в данный момент представлена в списке в качестве делегата, как показано на рисунке 14, а следующую команду нужно выполнить, чтобы настроить пользователя Sally в качестве делегата ресурса:
Set-CalendarProcessing 'Identity ConfRoomA 'ResourceDelegates Sally
В этом примере пользователь Sue будет удалена из делегатов ресурса и заменена пользователем Sally. Таким образом, чтобы обновить ресурсный почтовый ящик так, чтобы оба пользователя, Sue и Sally, были в списке делегатов, нужно выполнить следующую команду:
Set-CalendarProcessing 'Identity ConfRoomA 'ResourceDelegates Sue,Sally
В двух предыдущих примерах я решил использовать поле псевдонимов (alias) для определения делегатов ресурса, как 'Sue' и 'Sally'. Однако параметр ResourceDelegates может использовать другие форматы, такие как различающиеся имена, отображаемые имена, основной SMTP адрес и т.д.
Если, к примеру, администратор уже имеет полный доступ к ресурсному почтовому ящику, можно использовать Outlook для настройки делегированного доступа обычным способом. Например, в Outlook администратор может нажать опцию меню Файл (File) , затем кнопку Настройка учетных записей (Account Settings) и, наконец, выбрать опцию Передача прав доступа (Delegate Access) , в результате чего откроется окно, показанное на рисунке 15. Однако лучше использовать консоль Exchange Management Console или Exchange Management Shell, как мы делали это ранее в этой статье, особенно когда полный доступ к ресурсному почтовому ящику не был предоставлен администратору.
Рисунок 15: Настройка делегатов ресурсного почтового ящика в Outlook
На рисунке 16 видно, что Sue была настроена в качестве делегата и получила запросы на собрание для конференц-зала A непосредственно в свой почтовый ящик.
Рисунок 16: Делегат получает запросы на проведение собрания
Sue должна вручную одобрить это резервирование конференц-зала, учитывая такие факторы, как лицо, подавшее запрос, доступность или занятость зала, и т.д. Если проведение собрания одобрено делегатом ресурсного почтового ящика, организатор собрания получает уведомление, которое может быть настроено делегатом, как показано на рисунке 17.
Рисунок 17: Ответ на запрос по проведению собрания, принятый вручную
Помощник по резервированию ресурсов
Наличие вмешательства со стороны человека весьма удобно, если у вас есть делегаты, которые имеют желание и возможность выполнять всю необходимую работу, связанную с ресурсными почтовыми ящиками. Однако Exchange также предлагает возможность автоматизации определенных процессов по резервированию ресурсов. Например, что если вам нужна конфигурация, в которой старший управленческий персонал мог бы всегда резервировать конференц-зал без необходимости одобрения со стороны делегата ресурса?
Именно здесь в игру вступает помощник по резервированию ресурсов (Resource Booking Attendant). Учитывая это, давайте включим помощник по резервированию ресурсов для ресурсного почтового ящика места и автоматизируем процесс резервирования зала; это выполняется в закладке общих свойств ресурса (Resource General) в ресурсном почтовом ящике. Обратите внимание, что выделенная область, рисунок 18, также включает текст, поясняющий, что параметры резервирования ресурсов будут действительны только в том случае, если опция включения помощника по резервированию ресурсов (Enable the Resource Booking Attendant) отмечена. Эти параметры резервирования ресурсов представляют собой параметры, расположенные в закладках Resource In-Policy Requests, Resource Out-of-Policy Requests и Resource Policy, как мы вскоре увидим.
Рисунок 18: Включение помощника по резервированию ресурсов
Для включения помощника по резервированию ресурсов с помощью оболочки Exchange Management Shell нужно воспользоваться командой Set-CalendarProcessing и указать значение AutoAccept для параметра AutomateProcessing. Например, для настройки конференц-зала A, чтобы для него был включен помощник по резервированию ресурсов, нужно выполнить следующую команду:
Set-CalendarProcessing 'Identity ConfRoomA 'AutomateProcessing AutoAccept
В этом примере параметр AutomateProcessing имеет значение AutoAccept; по умолчанию параметр будет иметь значение AutoUpdate, а еще одной доступной опцией является None. Настройка AutoUpd ate означает, что помощник по ведению календаря (Calendar Attendant) используется на ресурсном почтовом ящике, что, само по себе, означает, что все новые запросы на проведение собраний будут отмечаться как находящиеся под вопросом (tentative) в календаре ресурсного почтового ящика.
Политика ресурса
При просмотре свойств ресурсного почтового ящика в консоли Exchange Management Console вы увидите закладки с названиями Resource In-Policy Requests и Resource Out-of-Policy Requests. Прежде чем приступать к рассмотрению специфики конфигурации обеих закладок, вам, возможно, интересно узнать о том, что же собой представляют эти запросы in-policy и out-of-policy, поэтому мы сначала обсудим их. Чтобы понять запросы in-policy (соответствующие политике) и out-of-policy (несоответствующие политике), полезно рассмотреть содержимое закладки Политика ресурса (Resource Policy) в свойствах ресурсного почтового ящика. Закладка политики ресурса для ресурсного почтового ящика под названием Conference Room C показана на рисунке 19. На самом деле, вы, возможно, помните, что эта закладка была показана на рисунке 14. Обратите внимание, что значения, показанные на рисунке 19, являются значениями по умолчанию, назначаемыми, когда почтовый ящик создается.
Рисунок 19: Стандартные параметры на закладке политики ресурса
Закладка политики ресурса позволяет вам настраивать различные параметры для контроля того, могут ли определённые пользователи автоматически резервировать собрания на основе характеристик самого запроса на проведение собрания.
Многие параметры, показанные на рисунке 19, понятны из их описания. Например, опция Разрешить конфликтующие запросы на проведение собраний (Allow conflicting meeting requests) означает именно это. Если вы разрешите конфликтующие запросы на проведение собраний, любые конфликтующие запросы на проведение собраний будут приниматься ресурсным почтовым ящиком, и эту проблему придется решать организаторам собраний. Опция Окно резервирования (в днях) (Booking windows (days)) указывает, за сколько дней вперед пользователи могут резервировать конференц-залы, и как вы видите, стандартным значением является 180 дней, что составляет около 6 месяцев. Если вы хотите отключить любые ограничения на предварительное резервирование, установите это значение на 0. Опция Максимальная длительность (минут) (Maximum duration (minutes)) указывает продолжительность существования запроса на проведение собрания. Как вы видите, стандартное значение установлено для этой опции на 1440 минут, что составляет примерно 1 день. Это значение будет подходящим для большинства ситуаций, но если кому-то из ваших пользователей необходимо зарезервировать ресурс на более чем один день, это значение нужно изменить. Вы можете управлять политикой для конфликтующих запросов на проведение собрания посредством опций Максимальное число конфликтов (Maximum conflict instances) и Разрешенный процент конфликтов (Conflict percentage allowed) .
Все параметры, показанные на рисунке 19, можно настроить посредством команды Set-CalendarProcessing. В таблице 1 ниже показаны названия параметров, используемые в Exchange Management Shell. Я создал эту таблицу с помощью одной из замечательных новых функций, имеющихся в консоли Exchange Management Console в Exchange 2010. Если вы еще раз посмотрите на рисунок 19, вы увидите кнопку отображения команд оболочки управления ' (show Exchange Management Shell command) ' в нижнем левом углу страницы свойств для конференц-зала C. Нажатие на эту кнопку после внесения изменений в консоли Exchange Management Console отобразит соответствующие команды Exchange Management Shell. Пример приведен на рисунке 20, где показаны результаты изменения опции Allow conflicting meeting requests в консоли Exchange Management Console.
Рисунок 20: Отображение использовавшейся команды EMS
Таблица 1: Параметры команды закладки политики ресурса
Наименование конфигурации | Set-CalendarProcessing параметр |
Разрешить конфликтующие запросы на проведение собраний (Allow conflicting meeting requests) | AllowConflicts |
Разрешить повторяющиеся собрания (Allow repeating meetings) | AllowRecurringMeetings |
Разрешить планирование только в рабочее время (Allow scheduling only during working hours) | ScheduleOnlyDuringWorkHours |
Запрещать повторяющиеся собрания, конечная дата которых выходит за пределы окна резервирования (Reject repeating meetings that have an end date beyond the booking window) | EnforceSchedulingHorizon |
Окно резервирования (в днях) (Booking window (days)) | BookingWindowInDays |
Максимальная длительность (минут) (Maximum duration (minutes)) | MaximumDurationInMinutes |
Максимальное количество конфликтов (Maximum conflict instances) | MaximumConflictInstances |
Разрешенный процент конфликтов (Conflict percentage allowed) | ConflictPercentageAllowed |
Укажите делегатов этого почтового ящика (Specify delegates of this mailbox) | ResourceDelegates |
Переслать запросы на проведение собраний делегатам (Forward meeting requests to delegates) | ForwardRequestsToDelegates |
Также эти параметры, наряду с некоторыми дополнительными параметрами, которые мы рассмотрим позже в этом цикле статей, можно найти в Outlook Web App (OWA) при входе в ресурсный почтовый ящик. Для примера посмотрите на рисунок 21, где показаны опции ресурса для ресурсного почтового ящика под названием Conference Room D. На эту страницу был выполнен вход с помощью панели управления Exchange Control Panel (ECP) в OWA. Говоря точнее, в OWA нужно нажать Опции (Options) , затем Показать все опции (See All Options)' , в результате чего вы перейдете в панель управления ECP. Здесь нажмите на опцию Настройки (Se ttings) с левой стороны окна, и у вас откроется страница, показанная на рисунке 21. Обратите внимание, что закладка Ресурсы (Resource) отображается только в том случае, если вход в ресурсный почтовый ящик выполнен из OWA.
Рисунок 21: Закладка ресурсов в OWA
Параметры, показанные на рисунке 19 и 21, образуют политику ресурсного почтового ящика и поэтому, если запрос на проведение собрания не конфликтует с этими параметрами, это будет запрос in-policy (соответствующий политике). Если запрос на проведение собрания конфликтует с какими-либо из этих параметров, это будет out-of-policy запрос. Вы можете управлять тем, что происходит с in-policy или out-of-policy запросами на проведение собрания для каждого отдельного пользователя, настроив опции в закладках Resource In-Policy Requests и Resource Out-of-Policy Requests, чем мы и займемся в четвертой и заключительной части этого цикла статей.
Автор: Нейл Хобсон (Neil Hobson)
Нейл является основным консультантом в Silverslands (www.silversands.co.uk), Золотом партнере Microsoft в Великобритании и отвечает за разработку, применение и поддержку приложений для многих крупных клиентов по всей Европе. В IT отрасли он трудится с 1987 года и специализируется на отправке сообщений с 1995. Он начинал работать еще с Exchange 4.0. Он также обладает званием Exchange MVP и уделяет некоторую часть своего личного времени на помощь различным пользователям Exchange, ведет блоги, посвященные Exchange. Эти блоги вы можете найти по адресу www.msexchangeblog.com. С Нейлом можно связаться по адресу neil.hobson\@silversands.co.uk.
Источник: https://www.Redline-Software.com
Возникли вопросы?
Обращайтесь на форум! Follow us