Появление Exchange Server 2010 привнесло с собой множество новых возможностей, и в этой статье мы разберемся с одной очень простой, но интересной его функцией – способности отправлять почту из консоли или PowerShell. Большинство известных мне администраторов Exchange жаловались на невозможность отправлять сообщения из консоли в предыдущих версиях Exchange. Теперь этим админам придется искать новые поводы для жалоб, потому что в Exchange Server 2010 и PowerShell 2.0 (я поясню вкратце) появилось два новых способа отправки сообщений без необходимости открывать сессию Outlook или Outlook Web App!! :)
Вот некоторые ключевые моменты, касающиеся возможностей по отправке почты:
- Функция Send Mail работает с объектами типа Mailbox(почтовый ящик), Contact(контакт) или Group(группа). Но она не работает с объектами типа Resource Mailbox (ресурсный почтовый ящик).
- Чтобы воспользоваться этой функцией вам понадобится Outlook 2010 x64, установленный на той же машине, с которой вы хотите отправлять сообщения.
Использование консоли Exchange Management Console
Работа через консоль Exchange Management Console идет очень легко: просто раскройте Recipient Configuration и щелкните правой кнопкой мыши на почтовом ящике – и вы увидите пункт Send Mail в меню, или вы можете воспользоваться панелью Toolbox Actions, чтобы in получить доступ к тому же пункту (см. Рисунок 1).
Рисунок 1
Когда вы щелкните на Send Mail появится окно для нового сообщения в Outlook 2010; просто введите сообщение и щелкните на Send (Рисунок 2). И все! Кстати, неплохо бы заранее настроить профиль в Outlook, чтобы избежать настройки Outlook в момент, когда вы захотите отправить сообщение. Вы можете воспользоваться преимуществами настройки профиля и определения сигнатуры, а также любыми другими настройками среды Outlook, которые впоследствии можно будет использовать, когда вы получаете диалоговое окно отправки почты.
Увеличить
Рисунок 2
Некоторым компаниям не нравится, что администратор может отправлять сообщения конечным пользователям. Скажем, в нашей компании есть группа с включенной электронной почтой под названием IT, и эта группа используется по умолчанию для отправки информационных сообщений пользователям.
Процесс настройки и дальнейшей работы очень прост. Сначала выбираем аккаунт, который вы хотите использовать для отправки сообщения пользователям через консоль Exchange Management Console, затем нажимаем на Manage Send As permission. На первой странице мастера щелкните на кнопку Add' (Рисунок 3) и добавьте вашего пользователя в список (Имеет смысл добавлять текущего пользователя, так как сессия именно его Outlook’а откроется, когда вы щелкните на Send Mail). После этого просто щелкните на Manage, а затем Finish.
Увеличить
Рисунок 3
Давайте снова попробуем воспользоваться функцией Send Mail, но на этот раз мы щелкнем на пункт меню Options, а затем щелкнем на кнопку From, и мы заметим, что поле From(От): появляется как раз над полем To(Кому): (Рисунок 4). Щелкните на него, а затем на Other E-mail Address', и появится новое диалоговое окно; просто введите название почтового ящика, для которого включена привилегия send as, и щелкните OK.
Рисунок 4
Теперь вы можете заполнить остальные поля (тема и само сообщение) и щелкнуть на Send. Пользователь получит сообщение от аккаунта, обозначенного в поле Form:, а не от текущего пользователя.
Работа с Exchange Management Shell/Windows PowerShell 2.0
Вообще, именно Windows PowerShell 2.0 отвечает за использование функции Send Mail с помощью командной строки. Команда Send-MailMessage появилась в новой версии PowerShell, при этом не требуется Exchange Management Shell или Outlook для ее работы, то есть если у вас есть Windows Server 2008 R2, вы можете воспользоваться теми же процедурами, которые будут описаны в этом разделе.
Для демонстрации работы команды давайте отправим сообщение с обычного почтового ящика (Anderson.Patricio) другому пользователю. Вот чаще всего используемые ключи:
- From(От)
- To(Кому)
- Subject(Тема)
- Body(Тело)
- SMTPServer
- Credential(Авторизационные данные)
- UseSSL(Использование SSL)
Суть ключей очевидна; давайте отправим сообщение через Exchange Management Shell, взяв при этом только наиболее часто используемые ключи (Рисунок 5), при этом воспользуемся следующим синтаксисом:
Send-MailMessage 'From <sender@domain.com> 'To <Recipient@domain.com> 'Subject 'Test #01'-Body 'Just a test message.' 'SMTPServer <Server-Name> 'Credential <domain\user> Замечание: Если текущий пользователь тот же, что указан ключом From, тогда ключ Credential не требуется.
Увеличить
Рисунок 5
Поскольку мы пользуемся другим пользователем, появится окошко, требующее пароля. Теперь нужно ввести пароль и щелкнуть на OK, как показано на Рисунке 6.
Рисунок 6
Теперь пора открыть почтовый ящик получателя и проверить, получено ли сообщение. В приведенном примере использовались только необходимые ключи, но эта команда позволяет делать намного больше. Просмотреть все возможные ключи можно с помощью команды man Send-MailMessage 'Detailed.
Прекрасным примером для администраторов Exchange будет возможность прикреплять файлы с помощью той же команды. Давайте представим простую ситуацию, в которой вы – главный системный администратор вашей организации, у вас есть несколько удаленных мест, и вам потребовалось сделать отчет, содержащий список всех почтовых ящиков определенного сервера. В такой ситуации мы можем удовлетворить этот запрос с помощью пару команд, например, так:
- Сначала получаем информацию о почтовых ящиках от сервера и экспортируем ее в CSV Get-Mailbox -Server tor-ex-01 | select Name,Alias,ProhibitSendQuota | Export-Csv C:\Report-Tor-ex-01.csv
- Отправляем сообщение с помощью Send-MailMessage и ключа 'attachments Send-MailMessage -From anderson@apatricio.local -To Lidiana@apatricio.local -Subject "TOR-EX-01 Server User List" -Body " Привет, вот отчет, который вы запрашивали." -Attachments C:\Report-Tor-EX-01.csv -SmtpServer tor-ex-01 -Credential apatricio\anderson
Команды, использованные для этой процедуры, показаны на Рисунке 7, а созданное сообщение с прикреплением показано на Рисунке 8.
Увеличить
Рисунок 7
Увеличить
Рисунок 8
Часто возникающие проблемы при работе с функцией Send Mail...
Итак, все, что мы до сих пор видели, было очень простым и понятным, но при использовании функции Send Mail в Exchange Management Shell вы можете столкнуться с некоторыми проблемами; вот парочка, с которой я столкнулся:
Проблема #01: Попытка отправить сообщение от аккаунта Administrator
Это одна из самых частых ошибок: если вы пытаетесь отправить сообщение, пользуясь аккаунтом Administrator, это у вас не получится. Причина этой ошибки обнаружится, если вы включите ведение журнала на коннекторе Receive Connector. Для этого просто откройте Exchange Management Console, раскройте Server Configuration, щелкните на Hub Transport и на нужный сервер справа. Затем сделайте двойной щелчок на Default Receive Connector и смените Protocol logging level на Verbose, как показано на Рисунке 9.
Рисунок 9
По умолчанию коннектор Receive Connector позволяет пользователям группы Authenticated Users посылать сообщения, однако известные аккаунты сюда не входит, поэтому с аккаунта Administrator отправить сообщение не получится.
В журнале можно обнаружить эту проблему (см. Рисунок 10). Решение состоит в том, чтобы пользоваться обычным аккаунтом вместо аккаунта Administrator (или любого другого хорошо известного аккаунта).
Увеличить
Рисунок 10
Проблема #02: Сертификаты и ключ 'UseSSL
По умолчанию команда Send-MailMessage не использует SSL, однако вы можете увеличить свою безопасность при помощи ключа 'UseSSL.
Этот ключ работает с сертификатами, то есть придется обратить внимание на ключ 'SMTPServer, где не могут содержаться IP-адреса или имена, не упомянутые в установленном на сервере Exchange сертификате.
Проблема #03: Самоподписанные сертификаты...
Она может происходить, если вы правильно указали имя сертификата и при этом получаете ошибку The remote certificate is invalid according to the validation procedure(Удаленный сертификат недействителен согласно процедуре проверки). Возможно, вы используете встроенный сертификат; если это так, проблему можно решить, добавив встроенный сертификат на клиент, на котором запускается команда.
Процесс очень прост: откройте сессию браузера и перейдите на https://<Exchange-2010-Server-Name>/owa, затем щелкните на элементе Certificate Error, после чего – на View Certificates, как показано на Рисунке 11.
Увеличить
Рисунок 11
На странице свойств сертификата щелкните на Install Certificate, при этом появится новый мастер Certificate Import Wizard; на начальной странице просто нажмите Next. На странице Certificate Store выберите Place all certificates in the following store(Поместить все сертификаты в следующее хранилище), щелкните по кнопке Browse. Проверьте опцию Show physical stores(Показывать физические хранилища). Раскройте Trusted People(Доверенные люди), выберите Local Computer(Локальный компьютер) и щелкните OK, как показано на Рисунке 12.
Рисунок 12
После этого просто щелкните Next и Finish. Теперь можно провести проверку, и все должно заработать.
Заключение
Буду честен: когда я начинал писать о такой простой функции, как отправка сообщений с помощью консоли Exchange Management Console и Shell, я думаю, что не смогу написать более десятка строк, но оказалось, что существует целое множество приложений и советов, которые можно предложить для упрощения нашей ежедневной работы.
В этой статье мы посмотрели, как использовать команду Send-MailMessage, также разобрались с некоторыми проблемами использования этой команды, и, наконец, увидели простой пример экономии администраторского времени при отправке сообщений и отчетов прямо из командной строки.