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

verify = recipient & exim = trouble

Добавлено: 2009-12-20 17:52:58
dm07
Всем привет. Имеется exim 4.71. У меня не отрабатывают корректно такие ACL:

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

  accept   domains       = +local_domains
          endpass
          verify        = recipient
          message       = "In my mailserver not stored this user"


 accept  domains       = +relay_to_domains
          endpass
          verify        = recipient
          message       = "main server not know how relay to this address"
          

Аналогичная ситуация, если переписать блок без endpass, через deny:

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

 deny   domains       = +local_domains
          message       = "In my mailserver not stored this user"
          logwrite      = Check recipient $local_part@$domain failed, sender $sender_address (local domains)
          !verify        = recipient
Блок обходиться, проверка не выполняется. Что не так?

Re: verify = recipient & exim = trouble

Добавлено: 2009-12-21 0:02:57
dm07
Вот дебаг части ACL, отвечающей за проверку получателя:

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

99957 processing "accept"
99957 check domains = +local_domains
99957 search_open: mysql "NULL"
99957   cached open
99957 search_find: file="NULL"
99957   key="SELECT `domain` FROM `domain` WHERE `domain`='domen.ru' AND `active`='1'" partial=-1 affix=NULL starflags=0
99957 LRU list:
99957 internal_search_find: file="NULL"
99957   type=mysql key="SELECT `domain` FROM `domain` WHERE `domain`='domen.ru' AND `active`='1'"
99957 cached data used for lookup of SELECT `domain` FROM `domain` WHERE `domain`='domen.ru' AND `active`='1'
99957 lookup yielded: domen.ru
99957 domen.ru in "domen.ru"? yes (matched "domen.ru")
99957 domen.ru in "+local_domains"? yes (matched "+local_domains")
99957 check verify = recipient
99957 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
99957 Verifying fedzova@domen.ru
99957 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
99957 Considering fedzova@domen.ru
99957 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
99957 routing fedzova@domen.ru
99957 --------> bounce_to_null router <--------

Сам ACL:

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

  accept  domains       = +local_domains
          endpass
          verify        = recipient
          message       = "In my mailserver not stored this user"
Т.е. видим, что домен получателя входит в local_domains ( domen.ru in "domen.ru"? yes (matched "domen.ru")), поскольку у нас endpass, проверяется условие ниже endpass, если оно даст сбой проверки, то ACL вернет результат deny. Смотрим дальше...

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

99957 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
99957 Verifying fedzova@domen.ru
99957 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
99957 Considering fedzova@domen.ru
99957 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
т.е. проверка успешна (!) и дальше, поскольку ACL вернул accept, управление передается роутеру. Все бы хорошо, но указанный получатель не существует в домене...Проблема значит в том, что verify проверяет получателя всегда в успешной манере... Вопрос: как-то можно задать алгоритм проверки получателя или объясните мне, куда копать...
Всем спасибо за ответ.

Re: verify = recipient & exim = trouble

Добавлено: 2009-12-21 1:01:44
hizel
Роутер у вас шалит?
Превая страдия проверки адреса, которая всегда происходит, - это запуск адреса через роутер, в “режиме проверки” (“verify mode”).

Re: verify = recipient & exim = trouble

Добавлено: 2009-12-21 2:23:21
dm07
Да, спасибо, разобрался. Вот ссылка на параллельную тему, кому интересно: http://forum.lissyara.su/viewtopic.php? ... 02#p216702