<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Stanislav Chistyakov</title><subtitle type="html" /><id>http://blogs.technet.com/stas/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.technet.com/stas/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-02-10T01:16:00Z</updated><entry><title>Как вызывать команды Exchange Management Shell из C#</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2009/06/09/exchange-management-shell-c.aspx" /><id>http://blogs.technet.com/stas/archive/2009/06/09/exchange-management-shell-c.aspx</id><published>2009-06-09T17:43:14Z</published><updated>2009-06-09T17:43:14Z</updated><content type="html">&lt;p&gt;Иногда возникает необходимость вызывать команды Exchange Management Shell из кода. Например, вы можете управлять транспортными агентами из вашего собственного кода, да и вообще этому можно придумать множество применений&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Создадим новый консольный проект &lt;/li&gt;    &lt;li&gt;Добавим reference на сборку System.Management.Automation.dll (обычно в C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Следующий пример кода выводит список транспортных агентов начинающихся с буквы “J” – эквивалентно вызову &lt;em&gt;Get-TransportAgent –Identity “J*”&lt;/em&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections.Generic;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections.ObjectModel;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Text;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Management.Automation;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Management.Automation.Host;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Management.Automation.Runspaces;

&lt;span style="color: blue"&gt;namespace &lt;/span&gt;CallExchangeManagementShellCommands
{
    &lt;span style="color: blue"&gt;class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Program
    &lt;/span&gt;{
        &lt;span style="color: blue"&gt;static void &lt;/span&gt;Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="color: green"&gt;// Подключаем команды для работы с Exchange
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RunspaceConfiguration &lt;/span&gt;runspaceConfig = &lt;span style="color: #2b91af"&gt;RunspaceConfiguration&lt;/span&gt;.Create();
            &lt;span style="color: #2b91af"&gt;PSSnapInException &lt;/span&gt;snapInException = &lt;span style="color: blue"&gt;null&lt;/span&gt;;
            runspaceConfig.AddPSSnapIn(&lt;span style="color: #a31515"&gt;&amp;quot;Microsoft.Exchange.Management.PowerShell.Admin&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;out &lt;/span&gt;snapInException);

            &lt;span style="color: #2b91af"&gt;Runspace &lt;/span&gt;runspace = &lt;span style="color: #2b91af"&gt;RunspaceFactory&lt;/span&gt;.CreateRunspace(runspaceConfig);
            runspace.Open();

            &lt;span style="color: green"&gt;// Создаем pipeline в рамках которого будут выполняться команды
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Pipeline &lt;/span&gt;pipeline = runspace.CreatePipeline();

            &lt;span style="color: green"&gt;// Создаем новую команду
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Command &lt;/span&gt;command1 = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Command&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Get-TransportAgent&amp;quot;&lt;/span&gt;);
            
            &lt;span style="color: green"&gt;// Добавляем к ней нужные параметры
            &lt;/span&gt;command1.Parameters.Add(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CommandParameter&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Identity&amp;quot;&lt;/span&gt;,&lt;span style="color: #a31515"&gt;&amp;quot;J*&amp;quot;&lt;/span&gt;));

            &lt;span style="color: green"&gt;// Добавляем команду к pipeline
            &lt;/span&gt;pipeline.Commands.Add(command1);

            &lt;span style="color: green"&gt;// Вызываем команду и получаем список с результатом выполнения команды
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Collection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;PSObject&lt;/span&gt;&amp;gt; command1Results = pipeline.Invoke();

            &lt;span style="color: green"&gt;// Пробегаемся по результатам и выводим нужные на экран
            &lt;/span&gt;&lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: blue"&gt;var &lt;/span&gt;result &lt;span style="color: blue"&gt;in &lt;/span&gt;command1Results)
            {
                &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;Agent \&amp;quot;{0}\&amp;quot; Enabled={1}&amp;quot;&lt;/span&gt;, 
                    result.Properties[&lt;span style="color: #a31515"&gt;&amp;quot;Identity&amp;quot;&lt;/span&gt;].Value, 
                    result.Properties[&lt;span style="color: #a31515"&gt;&amp;quot;Enabled&amp;quot;&lt;/span&gt;].Value));
            }
        }
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3252504" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /></entry><entry><title>Управление транспортными агантами (Часть 2)</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2009/06/09/3252461.aspx" /><id>http://blogs.technet.com/stas/archive/2009/06/09/3252461.aspx</id><published>2009-06-09T16:14:00Z</published><updated>2009-06-09T16:14:00Z</updated><content type="html">&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Я уже рассказывал как управлять (устанавливать, удалять, включать, отключать, получать список) транспортными агентами, используя Exchange Management Shell - &lt;A title=http://blogs.technet.com/stas/archive/2008/03/07/exchange-management-shell.aspx#3251873 href="http://blogs.technet.com/stas/archive/2008/03/07/exchange-management-shell.aspx#3251873" mce_href="http://blogs.technet.com/stas/archive/2008/03/07/exchange-management-shell.aspx#3251873"&gt;http://blogs.technet.com/stas/archive/2008/03/07/exchange-management-shell.aspx#3251873&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Иногда возникают вопросы, как это можно сделать не через Exchange Management Shell, а, например, обычного bat файла или шедулера&lt;/P&gt;
&lt;H1&gt;Небольшое вступление&lt;/H1&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PowerShell позиционируется как супер мега штука, которая позволяет администраторам легко управлять почти всем используя командную строку. Используя PowerShell, можно писать очень гибкие сценарии, в которых можно вызывать существующие команды, команды разработанные самостоятельно или другими компаниями, а так же напрямую обращаться к .NET Framework&lt;/P&gt;
&lt;P&gt;Exchange Management Shell построен на базе PowerShell. Фактически это и есть PowerShell, в котором дополнительно загружены команды для управления Exchange.&lt;/P&gt;
&lt;H1&gt;Пример&lt;/H1&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Допустим у нас есть скрипт под Exchange Management Shell для установки транспортного агента&lt;STRONG&gt;:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Если мы хотим запустить этот скрипт из командной строки или из bat файла, то необходимо просто правильно сформировать команду. Для запуска обычного PowerShell скрипта можно использовать синтаксис &lt;/P&gt;
&lt;P&gt;powershell “Путь к скрипту”. &lt;/P&gt;
&lt;P&gt;Для того, чтобы наш экземпляр PowerShell мог получить доступ к командам Exchange необходимо добавить нужный параметр&amp;nbsp; (полный список параметром можно посмотреть набрав powershell /?)&lt;/P&gt;
&lt;P&gt;Итого у нас получается следующая команда:&lt;/P&gt;
&lt;P&gt;powershell -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.psc1" -Command "&lt;EM&gt;Путь к скрипту&lt;/EM&gt;"&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3252461" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /><category term="Transport Agent" scheme="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx" /></entry><entry><title>Изменения порта для Send Connector</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/11/27/send-connector.aspx" /><id>http://blogs.technet.com/stas/archive/2008/11/27/send-connector.aspx</id><published>2008-11-28T02:54:06Z</published><updated>2008-11-28T02:54:06Z</updated><content type="html">&lt;p&gt;В Exchange 2007 при создании Send Connector из Exchange Management Console нельзя указать порт отличный от заданного по умолчанию, но это можно сделать через Exchange Management Shell:&lt;/p&gt;  &lt;p&gt;Set-SendConnector &amp;quot;Название Send Connector&amp;quot; –Port “Номер порта”&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3160492" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author></entry><entry><title>Как удалять сообщения, используя транспортный агент (Routing Agent)</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/09/19/How-to-silently-delete-messages-using-routing-agent.aspx" /><id>http://blogs.technet.com/stas/archive/2008/09/19/How-to-silently-delete-messages-using-routing-agent.aspx</id><published>2008-09-20T00:14:00Z</published><updated>2008-09-20T00:14:00Z</updated><content type="html">&lt;P&gt;При разработке транспортного агента часто необходимо удалять некоторые из сообщений. Это очень легко сделать:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;public class &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;SampleAgent &lt;/SPAN&gt;: RoutingAgent
{
    &lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;SampleAgent(SmtpServer server)
    {
        &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.OnSubmittedMessage += &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;SubmittedMessageEventHandler(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.OnSubmittedMessageHandler);
    }

    &lt;SPAN style="COLOR: blue"&gt;private void &lt;/SPAN&gt;OnSubmittedMessageHandler(SubmittedMessageEventSource source, QueuedMessageEventArgs e)
    {
        MailItem mailItem = args.MailItem;

        &lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;(&lt;SPAN style="COLOR: green"&gt;/* Проверяем нужно ли нам удалять это сообщение */&lt;/SPAN&gt;)
        {
            source.Delete();
        }
    }
}&lt;/PRE&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3126232" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /><category term="Transport Agent" scheme="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx" /></entry><entry><title>Русский Windows Vista Service Pack 1 выпущен!!!</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/04/16/windows-vista-service-pack-1.aspx" /><id>http://blogs.technet.com/stas/archive/2008/04/16/windows-vista-service-pack-1.aspx</id><published>2008-04-16T18:14:49Z</published><updated>2008-04-16T18:14:49Z</updated><content type="html">&lt;p&gt;Наконец вышел Vista Service Pack 1 для русской Windows Vista &lt;p&gt;Пакет можно загрузить с Центра Загрузки Windows (&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f559842a-9c9b-4579-b64a-09146a0ba746&amp;amp;DisplayLang=ru"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=f559842a-9c9b-4579-b64a-09146a0ba746&amp;amp;DisplayLang=ru&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3038078" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author></entry><entry><title>Как в транспортном агенте на EDGE сервере определить входящее письмо или исходящее?</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/03/18/How-to-divide-incoming-messages-from-outcoming-on-the-edge-server.aspx" /><id>http://blogs.technet.com/stas/archive/2008/03/18/How-to-divide-incoming-messages-from-outcoming-on-the-edge-server.aspx</id><published>2008-03-18T16:24:00Z</published><updated>2008-03-18T16:24:00Z</updated><content type="html">&lt;P&gt;Недавно пришлось столкнуться с этим вопросом, и добрые люди помогли найти ответ. Все оказалось достаточно просто:&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;public class &lt;/SPAN&gt;SampleAgentFactory : RoutingAgentFactory
{
    &lt;SPAN style="COLOR: blue"&gt;public override &lt;/SPAN&gt;RoutingAgent CreateAgent(SmtpServer server)
    {
        &lt;SPAN style="COLOR: blue"&gt;return new &lt;/SPAN&gt;SampleAgent(server);
    }
}

&lt;SPAN style="COLOR: blue"&gt;public class &lt;/SPAN&gt;SampleAgent : RoutingAgent
{
    &lt;SPAN style="COLOR: blue"&gt;private &lt;/SPAN&gt;SmtpServer _server;

    &lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;SampleAgent(SmtpServer server)
    {
        _server = server;
        &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.OnSubmittedMessage += &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;SubmittedMessageEventHandler(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.OnSubmittedMessageHandler);
    }

    &lt;SPAN style="COLOR: blue"&gt;private void &lt;/SPAN&gt;OnSubmittedMessageHandler(SubmittedMessageEventSource source, QueuedMessageEventArgs e)
    {
        AcceptedDomain acceptedDomain = _server.AcceptedDomains.Find(e.MailItem.FromAddress);
        &lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;(acceptedDomain != &lt;SPAN style="COLOR: blue"&gt;null &lt;/SPAN&gt;&amp;amp;&amp;amp; acceptedDomain.IsInCorporation)
        {
            &lt;SPAN style="COLOR: green"&gt;// Письмо идет наружу
        &lt;/SPAN&gt;}
        &lt;SPAN style="COLOR: blue"&gt;else
        &lt;/SPAN&gt;{
            &lt;SPAN style="COLOR: green"&gt;// Письмо идет внутрь
        &lt;/SPAN&gt;}
    }
}&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3013488" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /><category term="Transport Agent" scheme="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx" /></entry><entry><title>Управление транспортными агентами из Exchange Management Shell</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/03/07/exchange-management-shell.aspx" /><id>http://blogs.technet.com/stas/archive/2008/03/07/exchange-management-shell.aspx</id><published>2008-03-07T11:59:00Z</published><updated>2008-03-07T11:59:00Z</updated><content type="html">&lt;P&gt;Периодически возникают вопросы о том как управлять транспортными агентами. Тут все очень просто&amp;nbsp; - для этого можно пользоваться cmdlet-ами в Exchange Management Shell. &lt;/P&gt;
&lt;P&gt;Всего этих команд не очень много:&lt;/P&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/aa997998(EXCHG.80).aspx" mce_href="http://technet.microsoft.com/en-us/library/aa997998(EXCHG.80).aspx"&gt;Install-TransportAgent&lt;/A&gt; - зарегистрировать агент в Exchange Server 
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/bb124919(EXCHG.80).aspx" mce_href="http://technet.microsoft.com/en-us/library/bb124919(EXCHG.80).aspx"&gt;Uninstall-TransportAgent&lt;/A&gt; - удалить регистрацию агента в Exchange Server&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/bb124921(EXCHG.80).aspx" mce_href="http://technet.microsoft.com/en-us/library/bb124921(EXCHG.80).aspx"&gt;Enable-TransportAgent&lt;/A&gt; - сделать агент активным в Exchange Server&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/aa997880(EXCHG.80).aspx" mce_href="http://technet.microsoft.com/en-us/library/aa997880(EXCHG.80).aspx"&gt;Disable-TransportAgent&lt;/A&gt; - сделать агент неактивным в Exchange Server 
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/bb123536(EXCHG.80).aspx" mce_href="http://technet.microsoft.com/en-us/library/bb123536(EXCHG.80).aspx"&gt;Get-TransportAgent&lt;/A&gt; - получить информацию об установленных агентах (либо выбранном агенте) 
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/aa997707(EXCHG.80).aspx" mce_href="http://technet.microsoft.com/en-us/library/aa997707(EXCHG.80).aspx"&gt;Set-TransportAgent&lt;/A&gt; - изменить параметры (сейчас это только приоритет) транспортного агента в Exchange Server&lt;/LI&gt;
&lt;P&gt;Полное описание можно найти по следующей ссылке:&lt;BR&gt;&lt;A title=http://technet.microsoft.com/en-us/library/aa998620(EXCHG.80).aspx href="http://technet.microsoft.com/en-us/library/aa998620(EXCHG.80).aspx" mce_href="http://technet.microsoft.com/en-us/library/aa998620(EXCHG.80).aspx"&gt;http://technet.microsoft.com/en-us/library/aa998620(EXCHG.80).aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2972461" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /><category term="Transport Agent" scheme="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx" /></entry><entry><title>Постер по архитектуре Exchange 2007</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/02/27/exchange-2007-1.aspx" /><id>http://blogs.technet.com/stas/archive/2008/02/27/exchange-2007-1.aspx</id><published>2008-02-27T10:11:37Z</published><updated>2008-02-27T10:11:37Z</updated><content type="html">&lt;p&gt;Замечательный постер, дающий базовое представление архитектуры Exchange 2007&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FDCDF6E5-DE47-4B58-8086-282101BCDDE9&amp;amp;displaylang=en"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="316" alt="image" src="http://blogs.technet.com/blogfiles/stas/WindowsLiveWriter/Exchange2007_452/image_3.png" width="459" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyId=FDCDF6E5-DE47-4B58-8086-282101BCDDE9&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FDCDF6E5-DE47-4B58-8086-282101BCDDE9&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=FDCDF6E5-DE47-4B58-8086-282101BCDDE9&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2935698" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /></entry><entry><title>Публикация Exchange 2007 через ISA 2006</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/02/22/exchange-2007-isa-2006.aspx" /><id>http://blogs.technet.com/stas/archive/2008/02/22/exchange-2007-isa-2006.aspx</id><published>2008-02-22T13:12:15Z</published><updated>2008-02-22T13:12:15Z</updated><content type="html">&lt;p&gt;Наткнулся на интересную статью, которая детально описывает детали публикации Exchange 2007 через ISA 2006:&lt;/p&gt; &lt;h5&gt;&lt;strong&gt;Publishing Exchange Server 2007 with ISA Server 2006&lt;/strong&gt;&lt;br&gt;&lt;a title="http://www.microsoft.com/technet/isa/2006/deployment/exchange.mspx" href="http://www.microsoft.com/technet/isa/2006/deployment/exchange.mspx"&gt;http://www.microsoft.com/technet/isa/2006/deployment/exchange.mspx&lt;/a&gt;&lt;/h5&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2921246" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /></entry><entry><title>Постеры по компонентам Windows Server 2008</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/02/20/windows-server-2008.aspx" /><id>http://blogs.technet.com/stas/archive/2008/02/20/windows-server-2008.aspx</id><published>2008-02-20T21:31:13Z</published><updated>2008-02-20T21:31:13Z</updated><content type="html">&lt;p&gt;Недавно наткнулся на постеры по компонентам Windows Server 2008. Достаточно удобно и понятно, особенно для людей типа меня, которым программирование ближе чем администрирование, и уж если дело дошло до обзора компонентов операционной системы, то лучше воспользоваться красивыми картинками с минимумом текста&lt;/p&gt; &lt;p&gt;По ссылке можно скачать &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Windows Server 2008 Active Directory Components&lt;/li&gt; &lt;li&gt;Windows Server 2008 Feature Components&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b9e44e-0bbd-47cb-bc09-b3d48be7f867&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b9e44e-0bbd-47cb-bc09-b3d48be7f867&amp;amp;displaylang=en&lt;/a&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="337" alt="image" src="http://blogs.technet.com/blogfiles/stas/WindowsLiveWriter/WindowsServer2008_12E8F/image_7.png" width="508" border="0"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="337" alt="image" src="http://blogs.technet.com/blogfiles/stas/WindowsLiveWriter/WindowsServer2008_12E8F/image_8.png" width="512" border="0"&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2916281" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Windows Server 2008" scheme="http://blogs.technet.com/stas/archive/tags/Windows+Server+2008/default.aspx" /></entry><entry><title>Хранение настроек Custom Transport Agent для Exchange 2007</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/02/14/custom-transport-agent-exchange-2007.aspx" /><id>http://blogs.technet.com/stas/archive/2008/02/14/custom-transport-agent-exchange-2007.aspx</id><published>2008-02-14T13:26:44Z</published><updated>2008-02-14T13:26:44Z</updated><content type="html">&lt;p&gt;При разработке транспортных агентов часто необходимо хранить какие-либо настройки этого агента. Т.к. агент - обычная Class Library на .NET, то логично использовать стандартный app.config файл. Наша Class Library будет использоваться одним из сервисов Exchange 2007 и, соответственно, настройки надо вносить в app.config этого сервиса..... Это не всегда удобно, и хочется иметь файл настроек рядом с самой dll агента. &lt;/p&gt; &lt;p&gt;Например, мы разрабатываем агент, который записывает каждое почтовое сообщение в базу данных (я рассказывал о таких агентах в предыдущей статье), и в config файле должна быть connection string для подключения к базе, и мы хотим чтобы DLL агента и config файл были рядом&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/stas/WindowsLiveWriter/CustomTransportAgentExchange2007_B6DD/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="59" alt="image" src="http://blogs.technet.com/blogfiles/stas/WindowsLiveWriter/CustomTransportAgentExchange2007_B6DD/image_thumb.png" width="548" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;В .NET мы можем подключать внешние конфигурационные файлы:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;void &lt;/span&gt;OnRoutedMessageHandler(RoutedMessageEventSource source, QueuedMessageEventArgs args)
{
    &lt;span style="color: blue"&gt;try
    &lt;/span&gt;{
        &lt;span style="color: green"&gt;// Узнаем где расположена текущая сборка
        &lt;/span&gt;&lt;span style="color: #2b91af"&gt;String &lt;/span&gt;assempbyLocation = &lt;span style="color: #2b91af"&gt;Assembly&lt;/span&gt;.GetExecutingAssembly().Location;

        &lt;span style="color: green"&gt;// Открываем наш конфигурационный файл
        &lt;/span&gt;Configuration config = ConfigurationManager.OpenExeConfiguration(assempbyLocation);

        &lt;span style="color: green"&gt;// Читаем необходимую информацию из нашего конфигурационного файла
        &lt;/span&gt;&lt;span style="color: #2b91af"&gt;String &lt;/span&gt;connString = config.ConnectionStrings.ConnectionStrings[&lt;span style="color: #a31515"&gt;"Имя строки подключения"&lt;/span&gt;].ConnectionString;

        &lt;span style="color: green"&gt;// Запись в базу 
    &lt;/span&gt;}
    &lt;span style="color: blue"&gt;catch &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Exception &lt;/span&gt;ex)
    {
        &lt;span style="color: green"&gt;// Обработка ошибок
    &lt;/span&gt;}
}&lt;/pre&gt;
&lt;p&gt;Это позволяет избежать изменения конфигурационных файлов самого Exchange 2007, что уменьшает вероятность все сломать :)&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2889330" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /><category term="Transport Agent" scheme="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx" /></entry><entry><title>Custom логирование почтовых сообщений в Exchange 2007</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/02/13/custom-exchange-2007.aspx" /><id>http://blogs.technet.com/stas/archive/2008/02/13/custom-exchange-2007.aspx</id><published>2008-02-13T11:47:27Z</published><updated>2008-02-13T11:47:27Z</updated><content type="html">&lt;p&gt;Стандартное логирование почтовых сообщений в Exchange 2007 является весьма мощным механизмом, достаточным в большинстве случаев, но иногда нужно что-то большее. Например, если у вас есть задача записывать определенную информацию о каждом сообщении в базу данных...... Это может быть необходимо для построения каких-либо статистических отчетов или специальное требование системы безопасности и т.д.&lt;/p&gt; &lt;p&gt;Для этой задачи идеально подходят транспортные агенты, о которых я начал рассказывать в предыдущей статье, ведь если мы развернем Routing Agent на HUB сервере Exchange 2007, то через него будут проходить все почтовые сообщения, даже если они пересылаются между пользователями, почтовые ящики которых находятся на одном Mailbox сервере Exchange 2007. Более того, внутри агента мы можете получить любую информацию о почтовом сообщении, а не довольствоваться лишь определенными полями из логов&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2883042" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /><category term="Transport Agent" scheme="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx" /></entry><entry><title>Разработка транспортных агентов для Exchange 2007</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/stas/archive/2008/02/10/Exchange-2007.aspx" /><id>http://blogs.technet.com/stas/archive/2008/02/10/Exchange-2007.aspx</id><published>2008-02-10T04:16:00Z</published><updated>2008-02-10T04:16:00Z</updated><content type="html">&lt;H5&gt;Зачем вообще нужны транспортные агенты?&lt;/H5&gt;
&lt;P&gt;Агенты встраиваются в Exchange и позволяют вам реализовать некоторые обработчики событий. При срабатывании агента вы имеете полный доступ к полям письма и можете вносить в само письмо некоторые изменения&lt;/P&gt;
&lt;H5&gt;Какие бывают агенты и чем они отличаются?&lt;/H5&gt;
&lt;P&gt;В Exchange 2007 есть два разных типа транспортных агентов:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;SMTP Receive Agent - позволяет реагировать на события, возникающие при получении письма по SMTP&lt;/LI&gt;
&lt;LI&gt;Routing Agent - позволяет реагировать на события, возникающие при роутинге письма&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;Как написать агент?&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Если у вас есть настроенная девелоперская среда и на ваших HUB и EDGE серверах развернута Visual Studio 2005 (хм... лучше конечно Visual Studio 2008), то вы либо счастливчик, либо ..... даже придумать не могу :) &lt;/P&gt;
&lt;P&gt;Если же у вас на компьютере стоит только Visual Studio, а почтовые сервера стоят отдельно, то достаточно скопировать на себе файлы Microsoft.Exchange.Data.Transport.dll и Microsoft.Exchange.Data.Common.dll с HUB или EDGE сервера из папки C:\Program Files\Microsoft\Exchange Server\Public&lt;/P&gt;
&lt;P&gt;Теперь приступим к непосредственному созданию нового агента. Пусть это будет Routing Agent&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Запускаем студию&lt;/LI&gt;
&lt;LI&gt;Создаем новый проект Class Library &lt;/LI&gt;
&lt;LI&gt;Добавляем к проекту References на Microsoft.Exchange.Data.Transport.dll, Microsoft.Exchange.Data.Common.dll (мы уже позаботились чтобы эти файлы были на компьютере)&lt;/LI&gt;
&lt;LI&gt;Реализуем класс, унаследоманный от RoutingAgent. Это наш агент:&lt;BR&gt;&lt;/LI&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=870 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=868&gt;
&lt;P class=MsoNormal style="mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;//------------------------------------------------------------------------&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;//&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Custom Routing agent&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;//------------------------------------------------------------------------&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;CustomRoutingAgent&lt;/SPAN&gt; : RoutingAgent&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; CustomRoutingAgent()&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.OnRoutedMessage += OnRoutedMessageHandler;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;FONT color=#0000ff&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; OnRoutedMessageHandler(RoutedMessageEventSource source, QueuedMessageEventArgs args)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;MailItem mailItem = args.MailItem;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;//-------------------------------------------------------------&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Все.... мы получили доступ к полям письма. Например:&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;mailItem.Message.MessageId - идентификатор письма&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;mailItem.Message.To - коллекция получателей&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;mailItem.Message.Attachments - коллекция аттачментов&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;и т.д. все поля перед нами&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;//-------------------------------------------------------------&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (Exception ex)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Обрабатываем&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;исключения&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;EventLog eventLog = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; EventLog();&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;eventLog.Source = &lt;SPAN style="COLOR: #a31515"&gt;"MSExchangeTransport"&lt;/SPAN&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;eventLog.WriteEntry(&lt;SPAN style="COLOR: #a31515"&gt;"CustomRoutingAgentAgent:\n"&lt;/SPAN&gt; + ex.ToString(),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;EventLogEntryType.Error, 0);&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;LI&gt;Реализуем класс, унаследованный от RoutingAgentFactory. Это просто фабрика, которая будет создавать экземпляр нашего агента&lt;BR&gt;&lt;/LI&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=870 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=868&gt;
&lt;P class=MsoNormal style="mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;//------------------------------------------------------------------------&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;//&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Routing agent factory&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;//------------------------------------------------------------------------&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;CustomRoutingAgentFactory&lt;/SPAN&gt; : RoutingAgentFactory&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; RoutingAgent CreateAgent(SmtpServer server)&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: en-us; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; CustomRoutingAgent();&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/OL&gt;
&lt;P&gt;С точки зрения разработки это все..... Ничего лишнего&lt;/P&gt;
&lt;P&gt;Развернем этот компонент на HUB сервере. Воспользуемся командами Management Shell&lt;/P&gt;
&lt;P&gt;Установка агента:&lt;BR&gt;&lt;TT&gt;&lt;B&gt;Install-TransportAgent -Name "MyCustomAgent" -TransportAgentFactory "MyAgents.CustomRoutingAgentFactory" -AssemblyPath "C:\myagents\MyAgent.dll"&lt;/B&gt;&lt;/TT&gt;&lt;/P&gt;
&lt;P&gt;Включение агента:&lt;BR&gt;&lt;TT&gt;&lt;B&gt;Enable-TransportAgent -Name "MyCustomAgent"&lt;/B&gt;&lt;/TT&gt;&lt;/P&gt;
&lt;H5&gt;Где брать дополнительную информацию?&lt;/H5&gt;
&lt;P&gt;Т.к. транспортный агент относится к разработке, то всю информацию можно найти в SDK:&lt;BR&gt;&lt;A title=http://msdn2.microsoft.com/en-us/library/aa579185.aspx href="http://msdn2.microsoft.com/en-us/library/aa579185.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa579185.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa579185.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2859434" width="1" height="1"&gt;</content><author><name>Stanislav Chistyakov</name><uri>http://blogs.technet.com/members/Stanislav+Chistyakov.aspx</uri></author><category term="Exchange 2007" scheme="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx" /><category term="Transport Agent" scheme="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx" /></entry></feed>