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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

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

Непрочитанное сообщение dm07 » 2013-06-11 20:27:04

Всем привет. Есть 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 раз.
Может мою задачу можно решить в другом ключе. В любом случае буду благодарен за верный ход мысли.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

dm07
сержант
Сообщения: 222
Зарегистрирован: 2008-07-27 19:58:25
Откуда: Уфа
Контактная информация:

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

Непрочитанное сообщение dm07 » 2013-06-11 22:37:12

Вопрос закрыт. Решил через роутер.

goodsmileduck
проходил мимо
Сообщения: 4
Зарегистрирован: 2013-11-13 7:34:20

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

Непрочитанное сообщение goodsmileduck » 2014-05-30 7:29:49

А какой именно роутер?
Пытался отлавливать письма в роутере 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