Возникла потребность чтобы все входящие и исходящие письма с определенного почтового сервера (для примера пусть будет @yandex.ru) падали в определенный ящик. Но в правилах транспорта можно указать только явный почтовый адрес который будет обрабатываться. Как же быть? заводить все наверняка известные адреса с него на АД и тогда уже их использовать в Правиле?
15:25 Январь 26, 2010
Pavel Nagaev
Novorossiysk
Admin
posts 1594
2
0
Настройте правило, когда отправитель или получатель содержат строку "yandex"
Всего хорошего.
15:34 Январь 26, 2010
Kotonen
Member
posts 14
3
0
Хорошо, предположим я напишу, но как ему сказать что есть получатель/отправитель, который содержит «yandex»? Он же берет эти параметры из сервака, то есть то, что создано моими ручками.
15:43 Январь 26, 2010
Pavel Nagaev
Novorossiysk
Admin
posts 1594
4
0
Не пойму что Вы хотите. Давайте на конкретном примере.
Всего хорошего.
15:49 Январь 26, 2010
Kotonen
Member
posts 14
5
0
Post edited 03:51 – Январь 27, 2010 by Kotonen
я хочу чтобы все письма с яндекса (и входящие и исходящие) падали в один ящик
Но проблема в том что при создании мастером правила для этого, в первом шаге нвозмодно выбрать или точнее определить эту цель. Там есть возможность указания только конкретного почтового адреса, а не в целом нужного для мне яндекса.
10:55 Январь 27, 2010
Tvarogok
Member
posts 32
6
0
На первом шаге выберите When the message header contains text patterns и укажите From и @yandex.ru
На втором шаге Redirect messages to addresses
11:15 Январь 27, 2010
Kotonen
Member
posts 14
7
0
to Tvarogok
Это только половина дела, то есть случай когда письма приходят с яндекса…
а когда пишут на яндекс?
16:49 Январь 27, 2010
Pavel Nagaev
Novorossiysk
Admin
posts 1594
8
0
Это не поддерживаемое решение.
или
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.
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 8
9
0
Добрый день.
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 1594
10
0
Все что хочет сделать человек — делается транспортными правилами, объяснить чего у него не получается он не может. Что делают правила похоже тоже не понимает.
Я привел ссылки и кусок кода, как пример того, что если встроенные правила не устраивают – пишите свои. И уж конечно я не ставил перед собой целью предоставить решение, моя задача – направить человека.
А почему это Вы в этот раз не прорекламировали продукты от MAPIlabs? Что то случилось?
В Exchange кстати очень коряво сделана реализация регулярных выражений в транспортных правилах и в E2010 это осталось. MAPILabs еще транспортный агент не написала? Было бы полезно.
Всего хорошего.
17:10 Февраль 2, 2010
Victor Ivanidze
Member
posts 8
11
0
Post edited 14:15 – Февраль 2, 2010 by Victor Ivanidze
Павел, вы путаете. MAPILabs это очень достойная компания из Калининграда (Кенигсберга), к которой я не имею никакого отношения. Моя называется IvaSoft.
То, чего хочет топикстартер, не может, к сожалению, быть сделано известными мне продуктами, в том числе и моими. А если бы могло, то вы бы убрали ссылку (как в случае с InstantWelcome) . Ну что ж, блог ваш, хозяин – барин.
И все же любопытно, парень из Experts Exchange c ником pbest93 (и нулевым рейтингом) разрешил вам копировать его код? Или это вы сами и есть pbest93?