Почтовый клиент для терминального сервера

Опубликовано: 09.07.2013
Автор: Виталий Бочкарев
Поддержать автора статьи по этой ссылке

В своей практике я столкнулся с тем, что пользователям системы Консультант Плюс, клиент которой у нас установлен на терминальном сервере Windows Server 2008 R2, требуется отправлять письма с вложением статей из Консультанта Плюс себе на почту.

Передо мной встала проблема в установке хоть какого-нибудь почтового клиента на терминальный сервер. Первая мысль была: "Установить Microsoft Outlook 2010 (корпоративная лицензия позволяет устанавливать Microsoft Office 2010 и его компоненты на терминальные серверы)". Эту идею я быстро отбросил, так как не хотелось, чтобы пользователи пользовались своими большими почтовыми ящиками (и выгружали кешированную версию почты к себе в профиль) на терминальном сервере.

Вторая мысль была: "Установить любой почтовый клиент, который сможет отправлять письма по протоколу SMTP, но не будет принимать входящую почту". Мой выбор остановился на Microsoft Live Mail (для установки этого клиента лучше воспользоваться автономным установщиком).

Установив почтовый клиент, нужно настроить профили пользователей, чтобы и старые пользователи сервера, и новые сразу могли бы им пользоваться. Для решения этой задачи я выполнил следующее:

  1. Создал служебного пользователя, который будет использоваться для отправки писем (пользователь нужен для прохождения аутентификации на почтовом сервере, если прием писем по протоколу SMTP от анонимных отправителей не разрешен).
  2. Под администратором запустил Microsoft Live Mail и создал почтовый профиль с учетными данными служебного пользователя.
  3. В профиле администратора в папке %localappdata%\Microsoft\Windows Live Mail нашел файл конфигурации клиента, например, у меня он назывался account{894DF4D0-E3F4-4EED-9C5B-3A5DC2F8AC4D}.oeaccount, и скопировал его в папку будущего логон-скрипта.
  4. Выгрузил из реестра ветку HKCU\Software\Microsoft\Windows Live Mail и сконвертировал REG-файл в VBS-скрипт.
  5. Установил в локальной политике терминального сервера логон-скрипт, который приведен ниже.

В настройках почтового профиля рекомендуется указать такие параметры (эти настройки вносятся в профиль логон-скриптом, который приведен ниже).:

  • Указать несуществующий сервер для POP протокола приема писем;
  • Не принимать и не отправлять почту при запуске программы;
  • Оставлять входящие письма на сервере;
  • Не сохранять копии отправленных писем;
  • Отправлять письма немедленно;
  • Не проверять орфографию.

Файл LiveMailSettings.vbs - логон-скрипт.

set oShell = CreateObject("wscript.shell")
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Default Mail Account", _
 "account{894DF4D0-E3F4-4EED-9C5B-3A5DC2F8AC4D}.oeaccount","REG_SZ"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Store Root", _
 "%USERPROFILE%\AppData\Local\Microsoft\Windows Live Mail\","REG_EXPAND_SZ"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\First Run Done", 00000001, "REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Mail Is Ready", 00000001, "REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Show Replies To My Messages", 00000000, _
 "REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\mail\Accounts Checked", 00000001, _
 "REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\mail\Check Mail on Startup", 00000000, _
 "REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\mail\SaveInSentItems", 00000000, _
 "REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\mail\Send Mail Immediately", 00000001, _
 "REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Spelling\SpellEnableInlineSpellcheck", _
 00000000, "REG_DWORD"
mScriptFolder = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - Len(WScript.ScriptName))
oShell.Run mScriptFolder & "\LiveMailSettings.bat"

Файл LiveMailSettings.bat - вспомогательный скрипт.

md "%localappdata%\Microsoft\Windows Live Mail"
copy "%~DP0account{894DF4D0-E3F4-4EED-9C5B-3A5DC2F8AC4D}.oeaccount" ^
 "%localappdata%\Microsoft\Windows Live Mail\"

Файл account{894DF4D0-E3F4-4EED-9C5B-3A5DC2F8AC4D}.oeaccount - вспомогательнй файл конфигурации клиента.

<?xml version="1.0" encoding="utf-16" ?>
<MessageAccount>
   <Account_Name type="SZ">ConsultantPlus</Account_Name>
   <Connection_Type type="DWORD">00000003</Connection_Type>
   <POP3_Server type="SZ">mail.domain.com</POP3_Server>
   <POP3_User_Name type="SZ">ConsultantPlus</POP3_User_Name>
   <POP3_Use_Sicily type="DWORD">00000000</POP3_Use_Sicily>
   <POP3_Port type="DWORD">0000006e</POP3_Port>
   <POP3_Secure_Connection type="DWORD">00000000</POP3_Secure_Connection>
   <Leave_Mail_On_Server type="DWORD">00000001</Leave_Mail_On_Server>
   <Remove_When_Deleted type="DWORD">00000001</Remove_When_Deleted>
   <POP3_Prompt_for_Password type="DWORD">00000001</POP3_Prompt_for_Password>
   <POP3_Use_APOP type="DWORD">00000000</POP3_Use_APOP>
   <SMTP_Server type="SZ">mail.domain.com</SMTP_Server>
   <SMTP_Use_Sicily type="DWORD">00000000</SMTP_Use_Sicily>
   <SMTP_Port type="DWORD">00000019</SMTP_Port>
   <SMTP_Secure_Connection type="DWORD">00000000</SMTP_Secure_Connection>
   <SMTP_Display_Name type="SZ">Consultant Plus</SMTP_Display_Name>
   <SMTP_Email_Address type="SZ">noreply@domain.com</SMTP_Email_Address>
</MessageAccount>

Также необходмо проверить, чтобы в конфигурации терминального сервере был правильно выбран почтовый клиент по умолчанию. Эта настройка находится в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail, под которой перечислены все почтовые клиенты сервера, а в корне ветки указан клиент по умолчанию.

Что мы имеем в итоге:

  • при входе на сервер каждому пользователю копируется файл конфигурации почтового клиента, в котором задано использование служебного пользователя;
  • чтобы отправить документ из системы Консультант Плюс, пользователь щелкает на значек отправки документа в системе, после чего открывается сформированное письмо в почтовом клиенте, где пользователь вводит адрес, кому нужно отправить письмо (корпоративная адресная книга в такой конфигурации не доступна), и нажимает кнопку Отправить (обычно пользователи отправлют документы сами себе, а также тем, кого консультуриют);
  • на рабочую почту сотрудника от имени служебного пользователя ConsultantPlus приходит письмо с вложенным документом.