none
Обработка входящей почты на основе контента в ES2k3 RRS feed

  • Вопрос

  • Возникла тут довольно интересная задача:
    необходимо при получении письма анализировать поле "Тема" на содержание неких ключевых слов.

    Пример:
    есть почтовый ящик XXX@ABC.COM, есть получатели A1@abc.com и A2@abc.com. В AD есть несколько контактов, у которых поле FirstName содержит строку, например [STRING1] и [STRING2]. Мне нужно, чтобы при поступлении почты на адрес XXX@abc.com проводился анализ содержимого поле "Тема", и, если там есть строка [STRING1], письмо перенаправлялось на адрес A1@abc.com, а если [STRING2], то на адрес A2@abc.com.
    Как это делать с исходящей почтой я примерно представляю (Exchange SDK косвенно это описывает). А со входящей?

    Чувствую, что надо копать в сторону EventSink'ов, но, может быть, есть другие решения?
    • Перемещено Tina_Tian 19 марта 2012 г. 4:56 forum merge (От:Exchange Server 2003/2000/5.5)
    29 ноября 2006 г. 10:00

Ответы

  • Почитал все те ссылки, которые Вы, уважаемы коллеги, мне дали - пожалуй, задача решается без EventSink'ов.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/exchserv/html/comcpnts_2qgk.asp
    действительно, server-side rules могут сделать то, что мне требуется, по указанной ссылке есть даже пример обработки и пересылки сообщения, осталось лишь прикрутить ADSI для получения нужных параметров.
    • Помечено в качестве ответа Vinokurov Yuriy 13 июля 2009 г. 10:10
    29 ноября 2006 г. 13:23

Все ответы

  • А с помощью серверных правил для ящика XXX@ABC.COM это реализовать нельзя?

    Например:

    Apply this rule after the messages arrives
    with STRING1 in the subject
    forward it to a1@abc.com

     

    29 ноября 2006 г. 10:13
    Модератор
  • А как вытащить нужную строку из AD? создавать вручную правила достаточно проблематично - строк много, контакты в AD генерировались скриптом.
    В принципе, можно рассмотреть вариант, когда список строк лежит в каком-то файле или в базе SQL, но опять же встает вопрос - как их подтянуть?
    29 ноября 2006 г. 10:29
  • Я не понимаю, давайте на конкретном примере. Что нужно сделать?

    Кстати, правила можно создавать из скрипта автоматом http://support.microsoft.com/kb/251125

     

    29 ноября 2006 г. 10:33
    Модератор
  • Что ж, попробую еще раз более подробно сформулировать задачу.
    Есть адрес XXX@abc.com
    на него приходят письма от партнеров, которые в поле "Тема" добавляют ключевое слово. В зависимости от этого слова определяется принадлежность письма тому или иному проекту, после чего оно должно пересылаться менеджеру этого проекта. В моем случае список ключевых слов хранится в виде контактов в AD, один контакт - одно слово (задействован аттрибут FirstName). На данный момент обрабатывается это другим почтовым сервером (Communigate), но из-за изменений политики компании пришлось приобрести Exchange.
    29 ноября 2006 г. 10:42
  •  Stanislav Palashkevich написано:
    Возникла тут довольно интересная задача:
    необходимо при получении письма анализировать поле "Тема" на содержание неких ключевых слов.

    Пример:
    есть почтовый ящик XXX@ABC.COM, есть получатели A1@abc.com и A2@abc.com. В AD есть несколько контактов, у которых поле FirstName содержит строку, например [STRING1] и [STRING2]. Мне нужно, чтобы при поступлении почты на адрес XXX@abc.com проводился анализ содержимого поле "Тема", и, если там есть строка [STRING1], письмо перенаправлялось на адрес A1@abc.com, а если [STRING2], то на адрес A2@abc.com.
    Как это делать с исходящей почтой я примерно представляю (Exchange SDK косвенно это описывает). А со входящей?

    Чувствую, что надо копать в сторону EventSink'ов, но, может быть, есть другие решения?

    либо через правила Outlook, либо через Sink приемника , либо через Event на собыие поступления письма в п\я

    29 ноября 2006 г. 11:13
  • 1. На адрес XXX@abc.com приходит письмо с сабжем Project1
    2. Нужно найти контакт в AD, у которого поле Firstname равно Project1.
    3. Переслать по найденному адресу контакта это письмо.

    Если алгоритм такой, то никакими серверными правилами тут не обойдешься. Нужно писать EventSink.

    http://www.microsoft.com/downloads/details.aspx?FamilyId=32774E09-4984-458E-BDB7-ED2BB356BD27&displaylang=en
    http://itcommunity.msk.ru/files/folders/store/entry148.aspx

    А какое общее число этих контактов с проектами?

    Мне кажется, что довольно сильно накручена технология работы с подобной почтой, возможно его стоит изменить. Трудозатрат будет меньше, чем на написание EventSink.

     

     



     

    29 ноября 2006 г. 11:13
    Модератор
  • Да, алгоритм как раз таков. Число проектов - порядка 200, постоянно растет. Нет, я согласен, что можно один раз пересилить себя и сделать server-side rules на все 200 проектов, а потом изменять/дополнять вручную, но хочется более системного подхода :-) . Что же, остается два варианта тогда - либо писать EventSink (что несколько проблематично, ибо подобным опытом не обладаю), либо писать внешний обработчик, который будет забирать с указанного майлбокса почту, по LDAP вытаскивать нужные данные из AD, а потом отсылать куда нужно.
    За ссылки спасибо, документацию к ES SDK читаю уже неделю :-).
    29 ноября 2006 г. 12:14
  •  Sergey Krylov написано:

    Stanislav Palashkevich написано:
    Возникла тут довольно интересная задача:
    необходимо при получении письма анализировать поле "Тема" на содержание неких ключевых слов.

    Пример:
    есть почтовый ящик XXX@ABC.COM, есть получатели A1@abc.com и A2@abc.com. В AD есть несколько контактов, у которых поле FirstName содержит строку, например [STRING1] и [STRING2]. Мне нужно, чтобы при поступлении почты на адрес XXX@abc.com проводился анализ содержимого поле "Тема", и, если там есть строка [STRING1], письмо перенаправлялось на адрес A1@abc.com, а если [STRING2], то на адрес A2@abc.com.
    Как это делать с исходящей почтой я примерно представляю (Exchange SDK косвенно это описывает). А со входящей?

    Чувствую, что надо копать в сторону EventSink'ов, но, может быть, есть другие решения?

    либо через правила Outlook, либо через Sink приемника , либо через Event на собыие поступления письма в п\я



    А можно немного более подробно про последние два варианта?
    29 ноября 2006 г. 12:41
  • возьмите к примеру за основу (для изучения) http://www.vamsoft.com/tools.asp - скрипты
    29 ноября 2006 г. 13:16
  • Почитал все те ссылки, которые Вы, уважаемы коллеги, мне дали - пожалуй, задача решается без EventSink'ов.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/exchserv/html/comcpnts_2qgk.asp
    действительно, server-side rules могут сделать то, что мне требуется, по указанной ссылке есть даже пример обработки и пересылки сообщения, осталось лишь прикрутить ADSI для получения нужных параметров.
    • Помечено в качестве ответа Vinokurov Yuriy 13 июля 2009 г. 10:10
    29 ноября 2006 г. 13:23
  •  Stanislav Palashkevich написано:
    Почитал все те ссылки, которые Вы, уважаемы коллеги, мне дали - пожалуй, задача решается без EventSink'ов.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/exchserv/html/comcpnts_2qgk.asp
    действительно, server-side rules могут сделать то, что мне требуется, по указанной ссылке есть даже пример обработки и пересылки сообщения, осталось лишь прикрутить ADSI для получения нужных параметров.

     

    разумеется можно - о чем ранее и говорилось , правда ограничение есть в 32 к - но навряд ли вы его превысите

    п.с. зачем вам перегружать систему лишними поисковыми запросами ?

     

    29 ноября 2006 г. 13:41
  •  Sergey Krylov написано:

    Stanislav Palashkevich написано:
    Почитал все те ссылки, которые Вы, уважаемы коллеги, мне дали - пожалуй, задача решается без EventSink'ов.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/exchserv/html/comcpnts_2qgk.asp
    действительно, server-side rules могут сделать то, что мне требуется, по указанной ссылке есть даже пример обработки и пересылки сообщения, осталось лишь прикрутить ADSI для получения нужных параметров.

    разумеется можно - о чем ранее и говорилось , правда ограничение есть в 32 к - но навряд ли вы его превысите

    п.с. зачем вам перегружать систему лишними поисковыми запросами ?



    Ограничение в 32к на что?
    Относительно перегуза системы запросами - действительно, может имеет смысл вынести список ключевых слов в отдельный файл/базу. Установим экспериментальным путем :-).
    29 ноября 2006 г. 15:28
  •  Stanislav Palashkevich написано:
     Sergey Krylov написано:

    Stanislav Palashkevich написано:
    Почитал все те ссылки, которые Вы, уважаемы коллеги, мне дали - пожалуй, задача решается без EventSink'ов.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/exchserv/html/comcpnts_2qgk.asp
    действительно, server-side rules могут сделать то, что мне требуется, по указанной ссылке есть даже пример обработки и пересылки сообщения, осталось лишь прикрутить ADSI для получения нужных параметров.

    разумеется можно - о чем ранее и говорилось , правда ограничение есть в 32 к - но навряд ли вы его превысите

    п.с. зачем вам перегружать систему лишними поисковыми запросами ?



    Ограничение в 32к на что?
    Относительно перегуза системы запросами - действительно, может имеет смысл вынести список ключевых слов в отдельный файл/базу. Установим экспериментальным путем :-).

     

    на серверные правила для клиента

    29 ноября 2006 г. 16:09
  • Я бы не стал возиться с программированием правил, т.к. можете упереться в какие-нибудь ограничения. Например, у меня были проблемы с правилами, превышение 32К, хотя правила были простые.

    Поэтому мой выбор - EventSink. Не намного сложнее, если не проще.

    29 ноября 2006 г. 17:07
    Модератор
  •  Pavel Nagaev написано:

    Я бы не стал возиться с программированием правил, т.к. можете упереться в какие-нибудь ограничения. Например, у меня были проблемы с правилами, превышение 32К, хотя правила были простые.

    Поэтому мой выбор - EventSink. Не намного сложнее, если не проще.

     

    Павел . а здесь о Rule.DLL речь вроде как не шла

    29 ноября 2006 г. 17:19
  • Я ссылку http://msdn.microsoft.com/library/default.asp?url=/library/en-us/exchserv/html/comcpnts_2qgk.asp прочитал и сделал вывод.

    Set objRule        = CreateObject("MSExchange.Rule")

    Вот это как создается?

    Сергей, расскажите поподробнее. У меня опыта работы с этим нет, поэтому в голове каша. Хотелось бы навести поверхностный порядок.

    29 ноября 2006 г. 18:35
    Модератор
  • да , Павел , именно про это я и говорил ... это уже собственно программирование правил Outlook - не используя сам Outlook - но про Event на события в п\я (хранилище) я имел несколько иное ввиду , а именно делать как делалось в 5.* т.е. используя службу MSExchangeES либо уже механизмами 6.* Exchange Store Event - Synchronous Events или Asynchronous Events реализуя OnSyncSave метод  или OnSave соответственно
    30 ноября 2006 г. 10:58