Недавно скинули мне следующую задачу:
Есть сервер1 с доской объявлений/обсуждений на некотором ПО от третьей фирмы и сервер2 с доской обсуждений на базе MOSS 2007. Сервер1 использует в качестве сервера пересылки внутренний сервер Exchange. И при регистрации почтового адреса доски обсуждений с сервера2 высылалось письмо с сылкой для активации аккаунта, но приходил назад NDR. При этом на внутренние учетки и внешние почтовые адреса вообще без проблем уходило это письмо с ссылкой для активации.
Копался долго, смотрел relay для всех серверов (фактически была проблема при пересылке сообщения между тремя smtp-серверами), smtp-логи на всех трёх серверах, пробовал отсылать сообщения через telnet итд итп. Некоторые изызски можно посмотреть здесь

Проблемы была локализована сразу же после увеличения уровня логгирования для сервера с Exchange, который занимался всей пересылкой. Как оказалось, MOSS 2007 при создании доски обсуждений создает контакт в AD, да не просто создает, а в его настройках прописывает прямой запрет на приём сообщений от анонимных пользователей. Более того, серверное ПО с сервера1 как раз свои сообщения анонимно и рассылало. Кто бы мог подумать… А в начале помидорами в Exchange кидались.

С сегодняшнего дня стал доступен релиз Hyper-V – достаточно удачного (по сравнению с VirtualServer) решения по виртуализации от Microsoft.
Скачать можно отсюда:
KB950050 — Description of the update for the release version of the Hyper-V technology for Windows Server 2008
Update for Windows Server 2008 x64 Edition (KB950050)
Update for Windows Server 2008 (KB950050)
KB952627 — Description of the Windows Vista Service Pack 1 Management Tools update for the release version of Hyper-V
Update for Windows Vista for x64-based Systems (KB952627)
Update for Windows Vista (KB952627)

У меня Hyper-V RC0 на Win2k8 Server Core крутится уже месяца 2. Пока проблем особых не обнаружил. В ближайшее время обновлюсь и посмотрю что там нового появилось по сравнению с RC0.

Начиная с Outlook 2000 (точнее с одного из сервис паков) Microsoft решила автоматически блокировать доступ к приложенным файлам некоторых типов (типа .exe, .vbs итд.). Пользователю при доступе к письму с таким небезопасным вложением выводится предупреждение, что приложенный файл был заблокирован. Что самое интересное, контролировать список опасных/безопасных типов файлов через интерфейс Outlook мы не можем. Не менее интересно то, что в своей базе знаний Microsoft не предлагает статей по удалению из списка потенциально опасных типов файлов. Но имеется статья о том, как некоторые типы файлов туда добавить (посмотреть статью можно здесь). Механизм удаления определённого типа файла из списка опасных полностью аналогичен:

1. Запускаем regedit и находим следующую ветку реестра – HKCU\Software\Microsoft\Office\xx.0\Outlook\Security (xx – версия Outlook, 12 – Outlook 2007, 11 – Outlook 2003)
2. Создаем там строковую переменную Level1Remove и в ней указываем список безопасных расширений в формате .exe;.vbc;.etc (между расширениями пробелов советуют не делать, но возможно и с пробелами заработает, не проверял)

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

Был в отпуске, поэтому ничего в блог не писал – старался интернетом не пользоваться =)
Отпуск начался крайне оригинально. Сначала поехал на свадьбу к брату. Как я уже писал, 8 июня шёл с утра снег. Вечером мы поехали в Моску на паровозе, после обеда 9 июня сели на самолет и были в Болгарии. Такие вот изменения климата =). Немного фотографий можно посмотреть здесь –

bulgaria-2008

Были на Солнечном берегу (Слънчев бряг).
Из плюсов:
1. Относительно спокойное место (толпы пьяных немцев можно при наличии пластиковых окон в гостинице не рассматривать).
2. Куча неплохих полей с мини-гольфом.
3. Можно попрактиковаться в езде на электромобилях (в принципе за час можно всю доступную часть курорта объехать, но сам процесс менее приятным от повторной езды по старому маршруту не становится).
4. Есть стенка, по которой можно полазить.
5. Есть изумительный старый город.
Из минусов – погода немного подкачала… =)

7 июня женился брат. И я там был, и иногда даже фотографировал. Альбом можно посмотреть здесь:

brothers wedding

8 июня с утра шёл снег. Отличное лето в Кировской области!

У меня на внешних почтовых серверах используется связка Exchange/GFI MailEssentials/Symantec Mail Security.
В GFI MailEssentials имеется крайне полезный функционал по архивированию всего почтового траффика с очень удобным web-интерфейсом. Используется при этом база, размещённая в MS SQL сервере. Структуру таблиц можно посмотреть здесь.
Почтовый трафик архивируется при этом немаленький, и базу приходится периодически бэкапить и вычищать старые записи. В принципе можно раз в несколько месяцев пересоздавать базу заново, но на мой взгляд, это не спортивно =). Таким образом стоит задача – написать скрипт, который бы бэкапил базу в известное хранилище и после этого удалял старые записи. После некоторых изысканий получился следующий скрипт:

# Задаём некоторые переменные
$server = "SERVER_NAME" # Имя сервера на котором работает база
$base = "DATABASE_NAME" # Имя базы (в моем случае GFILogs2)
$date = (Get-Date).AddMonths(-3).Date # Дата до которой мы удаляем записи из базы (я оставляю только последние 3 месяца)
$path = "PATH_TO_BACKUP" # Куда мы будем бэкапить базу

# Создаем SQL запрос, выполняющий бэкап базы и очистку таблиц GFI ME
$query = "backup database [$base] to disk = '$path' with init
use [$base]
delete from [gfi].[arc_in] where [date] < convert( datetime, '$date' )
delete from [gfi].[arc_out] where [date] < convert( datetime, '$date' )
delete from [gfi].[log_as] where [date] < convert( datetime, '$date' )
delete from [gfi].[log_as_neutral] where [date] < convert( datetime, '$date' )
delete from [gfi].[log_in] where [date] < convert( datetime, '$date' )
delete from [gfi].[log_out] where [date] < convert( datetime, '$date' )
delete from [gfi].[arc_in_att] where [id] not in (select [id] from [gfi].[arc_in])
delete from [gfi].[arc_in_bodies] where [id] not in (select [id] from [gfi].[arc_in])
delete from [gfi].[arc_out_att] where [id] not in (select [id] from [gfi].[arc_out])
delete from [gfi].[arc_out_bodies] where [id] not in (select [id] from [gfi].[arc_out])
delete from [gfi].[log_in_att] where [id] not in (select [id] from [gfi].[log_in])
delete from [gfi].[log_out_att] where [id] not in (select [id] from [gfi].[log_out])"

# Подключаемся к SQL серверу используя текущую учетку
$SQLConnection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$server;Integrated Security=SSPI")
$SQLConnection.Open()

# Создаем SQL команду для запуска бэкапа
$SQLCommand = New-Object System.Data.SqlClient.SqlCommand($query, $SQLConnection)
$SQLCommand.CommandTimeout = 200000

# Выполняем….
$SQLCommand.ExecuteNonQuery()

# Закрываем соединение
$SQLConnection.Close()

Во время написания и отладки скрипта выплыла одна тонкость – по умолчанию таймаут скрипта составляет 30 секунд, а так как база приличная по размерам – то скрипт вылетал по таймауту. Пришлось вручную в параметр $SQLCommand.CommandTimeout = 200000 прописать достаточно большое значение.

Вчера наконец-таки попал на так называемый First look. Анонс серии этих бесплатных курсов был выпущен ещё в феврале этого года. Я записался, потом узнал, что они проходили, но про меня почему-то забыли. Я сказал своё громкое фи на форумах TechNet, после чего про меня видимо вспомнили и соизволили пригласить.
Курс назывался «6400/6401: Первый взгляд: Централизованный доступ к приложениям в ОС Windows Server 2008″. Рассматривался сервер терминалов в анфас и в профиль. При выполнении лабораторной работы столкнулся со следующим: при запуске приложений опубликованных через RemoteApp вместе с самим приложением запускалась оснастка Server Manager. Копаться особо времени не было. А на официальном релизе таких экспериментов за ненадобностью не делал. Списал на глюк beta 3.