Страница 1 из 1

exim: Системный фильтр

Добавлено: 2013-06-11 20:27:04
dm07
Всем привет. Есть exim 4.71. Пишу системный фильтр:

Код: Выделить всё

if $recipients contains "helpdesk@domen.ru"
then
  unseen deliver helpdeskinfo@domen.ru
endif
Т.е. хочу скопировать письмо для получателя на другой адрес. Правило отрабатывается, однако в ящике helpdeskinfo@domen.ru я вижу 3 копии письма для helpdesk@domen.ru. Это связано с тем, что в процессе приема сервером письма, оно проходит различные фильтры (dspam, kas30filter), которые "пропустив" через себя тело письма, передают его дальше в обработку. Для ясности картины в заголовке письма видим:

Код: Выделить всё

Envelope-to: system-filter
Delivery-date: Tue, 11 Jun 2013 20:32:58 +0400
Received: from dspam by mail2.domen.ru with local (Exim 4.71)
    (envelope-from <dspam@domen.ru>)
    id 1UmRVC-0003vL-6U
    for helpdesk@domen.ru; Tue, 11 Jun 2013 20:32:58 +0400
Received: from Debian-exim (helo=kas30pipe.localhost)
    by mail2.domen.ru with local-esmtp (Exim 4.71)
    (envelope-from <user@gmail.com>)
    id 1UmRVB-0003v6-SS
    for helpdesk@domen.ru; Tue, 11 Jun 2013 20:32:57 +0400
Received: from mail-wg0-f48.google.com ([74.125.82.48]:62739)
    by mail2.domen.ru with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16)
    (Exim 4.71)
    (envelope-from <user@gmail.com>)
    id 1UmRV9-0003u4-FC
    for helpdesk@domen.ru; Tue, 11 Jun 2013 20:32:57 +0400
Т.е. мы видим 3 заголовка Received, соответственно правило системного фильтра отрабатывает 3 раза. Можно ли как-то в системном фильтре через переменную-счетчик задать, что если счетчик = 1 то правило должно отработать 1 раз.
Может мою задачу можно решить в другом ключе. В любом случае буду благодарен за верный ход мысли.

Re: exim: Системный фильтр

Добавлено: 2013-06-11 22:37:12
dm07
Вопрос закрыт. Решил через роутер.

Re: exim: Системный фильтр

Добавлено: 2014-05-30 7:29:49
goodsmileduck
А какой именно роутер?
Пытался отлавливать письма в роутере dspam по хедеру envelope-to но документация показала что это не верный шаг
У меня также появляется по несколько сообщений в ящике который указан в фильтре
еще пытался в условие фильтра добавлять проверку наличия хедеров DSPAM, не особо помогает, если получателей несколько приходят письма по количеству поучателей

Код: Выделить всё

dspam_spamscan_router:
   driver = accept
   domains  = +local_domains
   no_verify
   condition = "${if and {{!eq {$received_protocol}{spam-scanned}} {!eq {$received_protocol}{local}}  } {1}{0}}"
   transport = lmtp
   require_files = /usr/local/bin/dspam
   address_test = false

Код: Выделить всё

if $recipients is "${lookup mysql{SELECT `address` FROM `alias` WHERE \
                   `address`='$recipients' AND `copy_mail`='1' LIMIT 1}}"
then
    unseen deliver mailbox@domain.ru
endif