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

system_filter работает не так

Добавлено: 2010-06-08 10:18:06
moreh
нашёл тут на форуме кое какой пример исправил его под себя вот что получилось

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

lodagw# cat /usr/local/etc/exim/redirect_mail
logfile /var/log/exim/filter

if $recipients does not match "@local.domain" #копируем все исходящие которые уходят не на локальный домен
then
unseen deliver adminc@local.domain
endif

if $sender_address does not match "@local.domain" #копируем все внешние входящие
then
unseen deliver system@local.domain
endif
и получаеться что все исходящие и на локальные адреса и на удалённые копируются в adminc@local.domain
а входящие с внешних адресов вообще не получает ни один ящик
и ещё в лог /var/log/exim/filter ничего не пишется почему-то
в чём может быть проблема?

Re: system_filter работает не так

Добавлено: 2010-06-08 10:22:26
Alex Keda

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

$recipients
почитайте чё в ней содержится и в какие моменты времени

Re: system_filter работает не так

Добавлено: 2010-06-08 10:33:09
moreh
Переменная раскрытия “$recipients”, содержащая список всех получателей сообщения (разделённых запятыми и пробелами), - доступна в системных фильтрах. Из соображений безопасности, она не доступна в пользовательских фильтрах.
ну всё правильно в ней должен быть адрес получателя, или не так что ли?

Re: system_filter работает не так

Добавлено: 2010-06-08 15:58:05
moreh
с этим разобрался всё гуд работает. Ещё такой вопрос, как сделать что бы письма которые приходят на несуществующий получателей отправлялись на один специальный ящик error@local.domain
это можно сделать через системный фильтр или же надо в роуринге делать? как то через verify recipirnts?

Re: system_filter работает не так

Добавлено: 2010-06-08 16:14:11
Alex Keda
ну, вы как-то проверяете существование получателей?
это же условие наоборот и изменение адреса доставки в месте где его юзаете наоборот.

Re: system_filter работает не так

Добавлено: 2010-06-08 16:33:50
moreh
я так полагаю проверка получателя происходит только тут

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

  # Проверка получателя в локальных доменах.
  # Если не проходит, то проверяется следующий ACL,
  # и если непрошёл и там - deny
  accept  domains       = +local_domains
          endpass
          message       = "No such user on my mailserver!"
          verify        = recipient

  # Проверяем получателя в релейных доменах
  # Опять-таки если не проходит -> следующий ACL,
  # и если непрошёл и там - deny
  accept  domains       = +relay_to_domains
          endpass
          message       = "Don't know how to relay to this address!"
          verify        = recipient
больше я ничего нигде не правил
кстати, сейчас письма которые не адресованы не существующим ящикам появляются на ящике на который стоит вот это правило

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

if $recipients match "@local.domain"       #копируем все входящие, приходящие на адреса с локальным доменом
then
unseen deliver admink@tdlonda.ru
endif

Re: system_filter работает не так

Добавлено: 2010-06-09 17:49:15
moreh
сделал вот так

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

nouser:
     driver      = redirect
    allow_fail
    allow_defer
    condition = ${if eq{} {${lookup mysql{SELECT goto FROM alias \
                WHERE (id='${quote_mysql:$local_part@$domain}' OR \
                       id='${quote_mysql:@$domain}') AND \
                       active='1'}}}{yes}{no}}
    data = error@local.domain

# Системные алиасы
system_aliases:
    driver = redirect
 allow_fail
    allow_defer
    data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
            `address`='${quote_mysql:$local_part@$domain}' OR \
            `address`='${quote_mysql:@$domain}'}}

# Доставка локальным юзерам в Dovecot
dovecot_user:
    driver = accept
    condition = ${lookup mysql{SELECT `goto` FROM \
    `alias` WHERE \
    `address`='${quote_mysql:$local_part@$domain}' OR \
   `address`='${quote_mysql:@$domain}'}{yes}{no}}
    transport = dovecot_delivery 
но чо то вообще письма перестали приходить =(

вот что в логе

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

2010-06-09 17:22:25 1OMLEf-0000Pz-55 <= server@local.domain H=(sysadmin) [192.168.0.21] I=[192.168.0.101]:25 P=esmtpa A=auth_cram_md5: S=618 id=277452925.20100609171407@local.domain from <server@local.domain> for fgdfgdf@local.domain
2010-06-09 17:22:25 1OMLEf-0000Pz-55 == fgdfgdf@local.domain R=nouser defer (-1): condition check lookup
в чём проблема тут ?