Этот блог посвящен MS Exchange, Outlook и проблемам, связанным с электронной почтой

This forum requires Javascript to be enabled for posting content
Current User: Guest
Please consider registering

Search Forums:


 






Правила Транспорта

UserPost

07:00
Январь 26, 2010


Kotonen

Tyumen

Member

posts 14

 
1

Возникла потребность чтобы все входящие и исходящие письма с определенного почтового сервера (для примера пусть будет @yandex.ru) падали в определенный ящик. Но в правилах транспорта можно указать только явный почтовый адрес который будет обрабатываться. Как же быть? заводить все наверняка известные адреса с него на АД и тогда уже их использовать в Правиле?

15:25
Январь 26, 2010


Pavel Nagaev

Novorossiysk

Admin

posts 1386

 
2

Настройте правило, когда отправитель или получатель содержат строку «yandex»

15:34
Январь 26, 2010


Kotonen

Tyumen

Member

posts 14

 
3

Хорошо, предположим я напишу, но как ему сказать что есть получатель/отправитель, который содержит «yandex»? Он же берет эти параметры из сервака, то есть то, что создано моими ручками.

15:43
Январь 26, 2010


Pavel Nagaev

Novorossiysk

Admin

posts 1386

 
4

Не пойму что Вы хотите. Давайте на конкретном примере.


15:49
Январь 26, 2010


Kotonen

Tyumen

Member

posts 14

 
5

Post edited 06:51 – January 27, 2010 by Kotonen


я хочу чтобы все письма с яндекса (и входящие и исходящие) падали в один ящик

Но проблема в том что при создании мастером правила для этого, в первом шаге нвозмодно выбрать или точнее определить эту цель. Там есть возможность указания только конкретного почтового адреса, а не в целом нужного для мне яндекса.

10:55
Январь 27, 2010


Tvarogok

Member

posts 18

 
6

На первом шаге выберите When the message header contains text patterns и укажите From и @yandex.ru

На втором шаге Redirect messages to addresses

11:15
Январь 27, 2010


Kotonen

Tyumen

Member

posts 14

 
7

to Tvarogok

Это только половина дела, то есть случай когда письма приходят с яндекса…

а когда пишут на яндекс?

16:49
Январь 27, 2010


Pavel Nagaev

Novorossiysk

Admin

posts 1386

 
8

Это не поддерживаемое решение.

http://blogs.msdn.com/akashb/a…..erver.aspx

http://gsexdev.blogspot.com/20…..chive.html

http://www.exchangeinbox.com/a…..aspx?i=139


или


Wrote a dll that does this (and by write, I mean copied other peoples code, talked to a few people, and got it to do what I needed). Here is the C# code if anyone runs into this issue themselves.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Text.RegularExpressions;
using Microsoft.Exchange.Data.Mime;
using Microsoft.Exchange.Data.Transport;
using Microsoft.Exchange.Data.Transport.Email;
using Microsoft.Exchange.Data.Transport.Routing;

namespace Samples.Agents.MyRoutingAgent
{
    public class MyRoutingAgentFactory : RoutingAgentFactory
    {
        public override RoutingAgent CreateAgent(SmtpServer server)
        {
            return new MyRoutingAgent();
        }
    }

    public class MyRoutingAgent : RoutingAgent
    {
        public MyRoutingAgent()
        {
            base.OnSubmittedMessage += new SubmittedMessageEventHandler(MyRoutingAgent_OnSubmittedMessage);
        }

        void MyRoutingAgent_OnSubmittedMessage(SubmittedMessageEventSource source, QueuedMessageEventArgs e)
        {
            Regex regex_company_fax = new Regex("(\d+@)company.fax", RegexOptions.IgnoreCase);

            //Alter the P1 headers.The P1 address is used for routing.
            for (int intCounter = e.MailItem.Recipients.Count - 1; intCounter >= 0; intCounter--)
            {
                if (e.MailItem.Recipients[intCounter].Address.IsValid)
                {
                    # region email_header_p1_block
                    //Save the whole email address and local part of the address to strings
                    string strEmailAddress = e.MailItem.Recipients[intCounter].Address.LocalPart + "@" + e.MailItem.Recipients[intCounter].Address.DomainPart;
                    string strLocalPart = e.MailItem.Recipients[intCounter].Address.LocalPart;

                    //Match using the created regex agains the saved email address string
                    Match match_company_fax = regex_company_fax.Match(strEmailAddress);

                    //If the match is successful, move on, otherwise exit
                    if (match_company_fax.Success)
                    {
                        //The match is successful, remove the old address
                        e.MailItem.Recipients.Remove(e.MailItem.Recipients[intCounter]);

                        e.MailItem.Recipients.Add(new RoutingAddress(strLocalPart + "@newcompany.com"));
                    #endregion
                    }
                }
            }

			# region email_header_p2_block
            //Alter the P2 headers so that the mail displays the correct recipient display Name
            EmailRecipientCollection erToRecipientCollection;
            erToRecipientCollection = e.MailItem.Message.To;

            foreach (EmailRecipient rec in erToRecipientCollection)
            {
                Match match_company_fax = regex_company_fax.Match(rec.SmtpAddress);

                if (match_company_fax.Success)
                {
                    string xname = regex_company_fax.Replace(rec.SmtpAddress, "$1myfax.com");

                    rec.DisplayName = xname;
                    rec.SmtpAddress = xname;
                }
            }
			#end region
        }
    }
}

16:34
Февраль 2, 2010


Victor Ivanidze

Member

posts 7

 
9

Добрый день.


To Pavel Nagaev:

   А что именно делает приведенный выше код, Павел? Вы его тестировали?


To Kotonen:

  >я хочу чтобы все письма с яндекса (и входящие и исходящие) падали в один ящик

  Если имеется в виду, «все письма от *@yandex.ru локальным пользователям и от локальных пользователей адресатам *@yandex.ru должны копироваться в определенный почтовый ящик», то попробуйте использовать избирательное журналирование. См. http://technet.microsoft.com/e…..px?pr=blog

Удачи,

Виктор

16:53
Февраль 2, 2010


Pavel Nagaev

Novorossiysk

Admin

posts 1386

 
10

Все что хочет сделать человек — делается транспортными правилами, объяснить чего у него не получается он не может. Что делают правила похоже тоже не понимает.

Я привел ссылки и кусок кода, как пример того, что если встроенные правила не устраивают – пишите свои. И уж конечно я не ставил перед собой целью предоставить решение, моя задача – направить человека.


А почему это Вы в этот раз не прорекламировали  продукты от MAPIlabs?  Что то случилось?


В Exchange кстати очень коряво сделана реализация регулярных выражений в транспортных правилах и в E2010 это осталось. MAPILabs еще транспортный агент не написала? Было бы полезно.

17:10
Февраль 2, 2010


Victor Ivanidze

Member

posts 7

 
11

Post edited 17:15 – February 2, 2010 by Victor Ivanidze


Павел, вы путаете. MAPILabs это очень достойная компания из Калининграда (Кенигсберга), к которой я не имею никакого отношения. Моя называется IvaSoft.

То, чего хочет топикстартер, не может, к сожалению, быть сделано известными мне продуктами, в том числе и моими. А если бы могло, то вы бы убрали ссылку (как в случае с InstantWelcome) . Ну что ж, блог ваш, хозяин – барин.

И все же любопытно, парень из Experts Exchange c ником pbest93 (и нулевым рейтингом) разрешил вам копировать его код? Или это вы сами и есть pbest93?


Всего хорошего,

Виктор




Reply to Topic:
Правила Транспорта

Guest Name (Required):

Guest Email (Required):

HTML Editor
Smileys
Confused Cool Cry Embarassed Frown Kiss Laugh Smile Surprised Wink Yell
Post New Reply

Guest URL (required)

Math Required!
What is the sum of:
6 + 11
   




About the ExchangeRUS – сайт о Microsoft Exchange Server и электронной почте forum

Most Users Ever Online:

79


Currently Online:

Дмитрий Воронов

10 Guests

Forum Stats:

Groups: 1

Forums: 5

Topics: 1091

Posts: 4840

Membership:

There are 1161 Members

There have been 133 Guests

There are 2 Admins

There are 0 Moderators

Top Posters:

fron – 251

kkv – 143

Bloodwiser – 89

mrhron – 46

restless – 45

Dmitry Barsukov – 40

Administrators: Pavel Nagaev (1386 Posts), Oleg Krylov (337 Posts)
















































Рейтинг блогов Рейтинг блогов eXTReMe Tracker