<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Stanislav Chistyakov</title><link>http://blogs.technet.com/stas/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Как вызывать команды Exchange Management Shell из C#</title><link>http://blogs.technet.com/stas/archive/2009/06/09/exchange-management-shell-c.aspx</link><pubDate>Tue, 09 Jun 2009 17:43:14 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3252504</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/3252504.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=3252504</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category></item><item><title>Управление транспортными агантами (Часть 2)</title><link>http://blogs.technet.com/stas/archive/2009/06/09/3252461.aspx</link><pubDate>Tue, 09 Jun 2009 16:14:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3252461</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/3252461.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=3252461</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx">Transport Agent</category></item><item><title>Изменения порта для Send Connector</title><link>http://blogs.technet.com/stas/archive/2008/11/27/send-connector.aspx</link><pubDate>Fri, 28 Nov 2008 02:54:06 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3160492</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/3160492.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=3160492</wfw:commentRss><description>&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;</description></item><item><title>Как удалять сообщения, используя транспортный агент (Routing Agent)</title><link>http://blogs.technet.com/stas/archive/2008/09/19/How-to-silently-delete-messages-using-routing-agent.aspx</link><pubDate>Sat, 20 Sep 2008 00:14:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3126232</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/3126232.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=3126232</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx">Transport Agent</category></item><item><title>Русский Windows Vista Service Pack 1 выпущен!!!</title><link>http://blogs.technet.com/stas/archive/2008/04/16/windows-vista-service-pack-1.aspx</link><pubDate>Wed, 16 Apr 2008 18:14:49 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3038078</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/3038078.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=3038078</wfw:commentRss><description>&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;</description></item><item><title>Как в транспортном агенте на EDGE сервере определить входящее письмо или исходящее?</title><link>http://blogs.technet.com/stas/archive/2008/03/18/How-to-divide-incoming-messages-from-outcoming-on-the-edge-server.aspx</link><pubDate>Tue, 18 Mar 2008 16:24:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3013488</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/3013488.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=3013488</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx">Transport Agent</category></item><item><title>Управление транспортными агентами из Exchange Management Shell</title><link>http://blogs.technet.com/stas/archive/2008/03/07/exchange-management-shell.aspx</link><pubDate>Fri, 07 Mar 2008 11:59:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2972461</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.technet.com/stas/comments/2972461.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=2972461</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx">Transport Agent</category></item><item><title>Постер по архитектуре Exchange 2007</title><link>http://blogs.technet.com/stas/archive/2008/02/27/exchange-2007-1.aspx</link><pubDate>Wed, 27 Feb 2008 10:11:37 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2935698</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/2935698.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=2935698</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category></item><item><title>Публикация Exchange 2007 через ISA 2006</title><link>http://blogs.technet.com/stas/archive/2008/02/22/exchange-2007-isa-2006.aspx</link><pubDate>Fri, 22 Feb 2008 13:12:15 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2921246</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/2921246.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=2921246</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category></item><item><title>Постеры по компонентам Windows Server 2008</title><link>http://blogs.technet.com/stas/archive/2008/02/20/windows-server-2008.aspx</link><pubDate>Wed, 20 Feb 2008 21:31:13 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2916281</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/2916281.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=2916281</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>Хранение настроек Custom Transport Agent для Exchange 2007</title><link>http://blogs.technet.com/stas/archive/2008/02/14/custom-transport-agent-exchange-2007.aspx</link><pubDate>Thu, 14 Feb 2008 13:26:44 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2889330</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/stas/comments/2889330.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=2889330</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx">Transport Agent</category></item><item><title>Custom логирование почтовых сообщений в Exchange 2007</title><link>http://blogs.technet.com/stas/archive/2008/02/13/custom-exchange-2007.aspx</link><pubDate>Wed, 13 Feb 2008 11:47:27 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2883042</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.technet.com/stas/comments/2883042.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=2883042</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx">Transport Agent</category></item><item><title>Разработка транспортных агентов для Exchange 2007</title><link>http://blogs.technet.com/stas/archive/2008/02/10/Exchange-2007.aspx</link><pubDate>Sun, 10 Feb 2008 04:16:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2859434</guid><dc:creator>Stanislav Chistyakov</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.technet.com/stas/comments/2859434.aspx</comments><wfw:commentRss>http://blogs.technet.com/stas/commentrss.aspx?PostID=2859434</wfw:commentRss><description>&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;</description><category domain="http://blogs.technet.com/stas/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/stas/archive/tags/Transport+Agent/default.aspx">Transport Agent</category></item></channel></rss>