Уверен, ни кому не нужно объяснять, что такое фирменный стиль и, сколько он может стоить. Но зачастую, деньги, потраченные на разработку бренд бука, оказываются потраченными впустую, т.к. ровным счетом ни кто в организации не собирается следовать его рекомендациям. В данной статье я хочу показать один из способов установки сотрудникам организации стандартизированной подписи и исключить ситуацию, когда каждый изобретает себе подпись сам.
Если вы являетесь администратором сервера Exchange, то в вашем распоряжении есть очень мощный и удобный инструмент по обработке, контролю и фильтрации сообщений. Инструментом этим являются Правила транспорта (Transport Rules). Правила транспорта выполняются на транспортном сервере-концентраторе (HUB) и обладают богатейшим функционалом, изучение которого может стать темой одной из следующих статей. Сегодня мы поговорим о механизме под названием Disclaimers.
Disclaimers или по-русски Заявление об отказе – это функционал транспортного сервера-концентратора (HUB), позволяющий автоматически добавлять в конец либо начало письма произвольный текст. Изначально этот механизм был разработан для внесения в письмо каких-либо юридических данных, которые предупреждали бы о том, что письмо содержит конфиденциальную информацию, его нельзя копировать, пересылать и т.п., но впоследствии оказалось, что с легкостью disclaimers можно использовать ещё и для добавления подписей. Замечателен этот механизм тем, что самостоятельно сотрудник не может отказаться от его использования, т.е. внесенная администратором информация будет принудительно включаться в каждое письмо, проходящее через транспортный сервер-концентратор и подпадающее под условия, установленные в правиле.
Создание транспортного правила
Итак, приступим. Начнем с того, что создадим транспортное правило, для этого откроем Exchange Management Console, перейдем на уровень конфигурирования организации – Hub Transport – вкладка Transport Rules – нажмем кнопку New Transport Rule… (рис.1):
Рис.1: Создаем новое правило транспорта.
В результате откроется мастер по созданию транспортного правила. На первом шаге мастера указываем имя правила, например Signature, убеждаемся, что галочка Enable Rule активна и идем дальше.
На втором шаге мастера необходимо сформулировать набор условий, которому должны соответствовать отправители. В данном случае я хочу применить новую подпись ко всем пользователям, находящимся внутри организации.
Рис.2: Указываем условия для правила.
Далее мы выбираем действие, которое будет выполняться над сообщениями. В данном случае – действие Append Disclaimer text and fallback to action if unable to apply (Добавить текст заявления об отказе и вернуться к действию, если применить не удалось). Уточняем, куда именно добавлять текст – в начало или конец сообщения (append – в конец), и что нужно делать в случае неудачи (wrap – перенос). После этого вводим текст самой подписи (рис.3).
Примечание: Добавление подписи к письму может быть неудачным, например, в случае отправления пользователем зашифрованного письма, которое сервер изменить не в состоянии.
Рис.3: Создаем HTML-подпись.
Формат текста
Относительно самого текста – во-первых приятным моментом является то, что теперь при его разметке можно использовать HTML-тэги (в Microsoft Exchange Server 2007 такой возможности не было), во-вторых при помощи специальных переменных можно вставить разного рода информацию из учетной записи пользователя в Active Directory. Полный список предикатов, доступных на транспортных серверах-концентраторах можно уточнить в статье Предикаты правил транспорта библиотеки TechNet.
Как можно заметить из рис.3 для использования информации из Active Directory, предикат необходимо заключить между двойными знаками процента. Например, следующая конструкция – %%DisplayName%% позволит получить значение выводимого имени пользователя.
Возможность вставки HTML-тэгов позволяет нам не только использовать различные шрифты и цвета в подписи, но также вставлять графические изображения. Например, чтобы добавить логотип организации, нужно вставить следующий код:
<IMG src=”http://alexxhost.ru/images/logo.gif”>
При этом, очевидно, что изображение logo.gif должно быть заранее закачано на внешний сервер и в момент открытия письма получателем оно должно быть доступно для загрузки. Это достаточно серьезное неудобство, и о том, как с ним бороться мы поговорим следующей статье.
Пытливый администратор сразу задастся вопросом – «А как же быть, если пользователь попытается отправить сообщение не в формате HTML, а в обычном текстовом?». Об этом разработчики тоже подумали – в таком случае из подписи попросту будут удалены все тэги, и останется только текст.
Примечание: Как и в любом другом деле, здесь нужно знать меру. В Exchange 2010 максимальная длина текст составляет 5 000 знаков с учетом HTML-тэгов.
В результате следующий текст, введенный в настройках транспортного правила, даст нам результат, показанный на рис.4:
<HR>
<IMG src=”http://alexxhost.ru/images/logo.gif”><br />
С уважением, <br />
%%Title%% <br />
ООО «Моя фирма»,<br />
<b>%%DisplayName%%</b><br />
Тел. (1111) 12-34-56 доб. %%Phone%%,<br />
<a href=”www.alexxhost.ru”>www.alexxhost.ru</a>
Рис.4: Вид сообщений отправляемого и полученного.
Если двигаться далее по шагам мастера, то в следующем окне у нас будет возможность задать ряд исключений, для которых данное правило применяться не будет.
После завершения работы мастера, мы сможем скопировать результирующую команду (Ctrl+C). У меня она получилась следующая:
New-TransportRule -Name ‘Signature’ -Comments ” -Priority ‘0’ -Enabled $true -FromScope ‘InOrganization’ -ApplyHtmlDisclaimerLocation ‘Append’ -ApplyHtmlDisclaimerText ‘<HR>
<IMG src=”http://alexxhost.ru/images/logo.gif”>
С уважением, <br />
%%Title%% <br />
<b>%%DisplayName%%</b><br />
ООО «Моя фирма»
Тел. (1111) 12-34-56 доб. %%Phone%%,<br />
<a href=”www.alexxhost.ru”>www.alexxhost.ru</a>’ -ApplyHtmlDisclaimerFallbackAction ‘Wrap’
Заполнение пользовательской информации в AD
Первая задача, с которой столкнется администратор после создания транспортного правила – это необходимость заполнить необходимые атрибуты в Active Directory. Сомневаюсь, что много у кого вся необходимая для подписи информация заполняется при создании учетной записи пользователя, так что для решения этой задачи я вижу, по крайней мере, три способа:
- Посадить «специально обученного» человечка и убедительно попросить его руками заполнить нужные поля;
- Воспользоваться PowerShell скриптами, которые могут считать данные из таблицы и записать в базу данных Active Directory. Уверяю вас, такие скрипты есть, нужно только спросить о них у google`a.
- Озадачить пользователей самих заполнить информацию о себе. Достаточное количество информации пользователь может сам заполнить через Exchange Control Panel (рис.5). При этом, ни каких дополнительных прав ему делегировать не нужно.
Рис.5: Exchange Control Panel, как средство редактирования данных учетной записи пользователя.
Заключение
На этом я хочу закончить обсуждение работы функции Disclaimer, уверен, что она будет для вас весьма полезной. В следующей статье «Управление клиентскими подписями MS Outlook при помощи GPP», я предлагаю обсудить ряд вопросов, связанных с редактированием уже имеющихся на компьютерах пользователей локальных подписей MS Outlook.
Богомолов Алексей (Alexx)
http://alexxhost.ru
Классная фишка! С удовольствием прочитал.
Было бы здорово, если бы можно было настроить транспортное правило так, чтобы оно не применялось к шифрованным сообщениям ? То есть, если сообщение отправляется в шифрованном виде, то обеспечение подписи – в зоне ответственности пользователя, если в нешифрованном, то подпись должен добавить сервер. Хотя наверное в этом случае – лучше вообще не использовать disclaimer для подписи, а подписи назначать через GP по вашей след. статье…
Да, действительно, хороший механизм, но имеет один недостаток – когда ведется длительная переписка между двумя пользователями, и в ответе цитируется исходное сообщение, то подпись будет добавлена под цитированное сообщение, в самый конец письма. В результате с ходом переписки под осмысленной перепиской образуется скопление подписей.
Да, согласен, недостаток такой есть, в отличие от MS Outlook, сервер не может определить где заканчивается текст ответа и начинаются цитаты.
Получается, что имеется классная фишка, пользоваться которой особого смысла нет :-).
Наверное не зря ее назвали Disclaimer, а не Signature.
Ну почему же нет смысла пользоваться, ИМХО, смысл есть, единственное условие здесь заключается в том, что пользователь мозг отключать не должен, тогда все будет хорошо 😉
польузюсь.
Только в другом исполнении.
В автологоне прописан скрипт, который генерит подпись. VBS.
Навертеть можно что угодно.
Опять же сотрудник может отследить, если неверно заполнена AD.
Будет здорово, если вы дадите ссылочку на скрипт, или выложите его сюда.
гм.. по просьбам(пользует Word):
signature.vbs
On Error Resume Next
Set objSysInfo = CreateObject(“ADSystemInfo”)
strUser = objSysInfo.UserName
If (InStr(strUser, “UserAccounts”) 0) Then
Set objUser = GetObject(“LDAP://” & strUser)
strName = objUser.FullName
strTitle = objUser.Title
strDepartment = objUser.Department
strCompany = objUser.Company
strPhone = objUser.telephoneNumber
strMobPhone = objUser.mobile
strMail = objUser.mail
strPager= objUser.pager
Set objWord = CreateObject(“Word.Application”)
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries
objSelection.Font.Size = 10
objSelection.Font.Name = “calibri”
objSelection.Font.Color = 0
objSelection.ParagraphFormat.SpaceBefore = 1
objSelection.ParagraphFormat.SpaceBeforeAuto = False
objSelection.ParagraphFormat.SpaceAfter = 1
objSelection.ParagraphFormat.SpaceAfterAuto = False
‘objSelection.ParagraphFormat.LineSpacingRule = wdLineSpaceSingle
objSelection.TypeText “———————————————————-”
objSelection.TypeParagraph
objSelection.TypeText strName
objSelection.TypeParagraph
objSelection.TypeText strTitle
objSelection.TypeParagraph
objSelection.TypeText strDepartment
objSelection.TypeParagraph
objSelection.TypeText strCompany
objSelection.TypeParagraph
‘пробел
objSelection.TypeParagraph
if(len(trim(strPager))) then
objSelection.TypeText “Тел.: “&strPager
else
if(len(trim(strPhone))) then
objSelection.TypeText “Тел.: +7 (000) 123 45 67, доб. ” & Trim(strPhone)
else
objSelection.TypeText “Тел.: +7 (000) 123 45 67”
end if
end if
‘objSelection.TypeText “Тел.: +7 (000) 123 45 67, доб.” &strPhone
objSelection.TypeParagraph
objSelection.TypeText “Факс: +7 (000) 123 45 67”
objSelection.TypeParagraph
if(len(trim(strMobPhone))) then
objSelection.TypeText “Тел. моб.: ” & strMobPhone
objSelection.TypeParagraph
end if
objSelection.TypeText “E-mail:”
objSelection.Hyperlinks.Add objSelection.Range, “mailto” & strMail, , , strMail
objSelection.TypeParagraph
Set objSelection = objDoc.Range()
objSignatureEntries.Add “AD”, objSelection
objSignatureObject.NewMessageSignature = “AD”
objSignatureObject.ReplyMessageSignature = “AD”
objDoc.Saved = True
objWord.Quit
End If
Спасибо!
Тема хорошая, только есть один нюанс. Проблема с цепочкой писем, когда отвечаешь с цитированием сообщения получается, что подпись располагается не в конце вашего текста, а в конце письма и получается:
“текст”
“цит. текст”
“цит. текст”
——
Подпись
Подпись
Подпись
Можно в исключениях по содержанию темы FW: или RE:
Повторных добавлений своей подписи можно избежать добавив в исключения элементы этой самой подписи, но более гибко для рабочих мест с Outlook в домене генерировать подпись скриптом.
Но для ActiveSync и OWA транспортное правило – вещь незаменимая!