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

exim. про роутер redirect и переменную

Добавлено: 2007-09-03 9:10:40
cyrus_user
привет. вот что-то не могу понять в чём прикол:
в роутере acl_smtp_mime в самом конце:

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

warn
set acl_m20 = 10
log_message     = X-TotalTestSpam: $acl_m20
и на каждое сообщение успешно пишет в лог: Warning: X-TotalSpam: 10 - переменная заведена.
теперь я хочу в роутере перенаправлять в спам ящик. Вот это рабочая конструкция

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

spam_router:                                                                                                            
no_verify                                                                                                               
driver  = redirect                                                                                                      
data    = "${if or { {match {$h_X-SpamVL:}{(?i)Yes;}}\                                                                  
{match {$h_X-BogoS:}{(?i)Yes;|unknown;}}\
} {+public/spam} {$local_part@$domain}}"                            
добавляю сюда своё условие

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

data    = "${if or { {match {$h_X-SpamVL:}{(?i)Yes;}}\ 
{match {$h_X-BogoS:}{(?i)Yes;|unknown;}}\
{>{$acl_m20}{5}}\
#^^^^^^^^^^ вот это не работает почему-то
} {+public/spam} {$local_part@$domain}}" 
при заведомо точной цифре acl_m20 = 10 это условие всё равно не срабатывает

Где грабли то?

p.s. разбирать временный заголовок X-TotalTestSpam: не выход

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 9:32:47
Alex Keda
с отладкой отправь

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 10:38:50
cyrus_user
lissyara писал(а):с отладкой отправь
тут я в полном недоумении..видимо мозгов не хватит..
почему первый раз роутер был пропущен понятно:

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

spam_router router skipped: verify 2 0 0
но почему он позже не вызывается - не понятно. как только убираем запись о acl_m20 - вызывается второй раз.

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 10:56:12
cyrus_user
надоела мне эта загадка и вникание в логи, плюнул на роутер, сделал через system_filter
тему можно закрыть

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 10:59:03
Alex Keda
логично, по одной строке выдернутой из логов, тебе никто ничего и не сказал бы :)

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 11:37:33
cyrus_user
lissyara писал(а):логично, по одной строке выдернутой из логов, тебе никто ничего и не сказал бы :)
интересно какая ещё информация была нужна? :))
то что acl_m20

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

expanding: $acl_m20
result: 10
происходит позже чем

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

--------> spam_router router <--------
spam_router router skipped: verify 2 0 0
это и так ясно.
тут либо знаешь как его принудительно вызвать 2й раз либо не знаешь - логи и конфиги не при чём.

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 11:49:44
Alex Keda
однако, дай полный дебаг для этого роутера...
я не гадалка, по кускам мозаику складывать.

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 11:57:21
cyrus_user
lissyara писал(а):однако, дай полный дебаг для этого роутера...
я не гадалка, по кускам мозаику складывать.
я цитирую показания exim -bd -d+all
есть что-то детальнее?

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 12:04:53
Alex Keda

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

13:00:36 24371 --------> user_aliases router <--------
13:00:36 24371 local_part=lissyara domain=lissyara.su
13:00:36 24371 calling user_aliases router
13:00:36 24371 rda_interpret (string): ${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/db/aliases_local}}
13:00:36 24371 expanding: $local_part@$domain
13:00:36 24371    result: lissyara@lissyara.su
13:00:36 24371 expanding: /usr/local/etc/exim/db/aliases_local
13:00:36 24371    result: /usr/local/etc/exim/db/aliases_local
13:00:36 24371 search_open: lsearch "/usr/local/etc/exim/db/aliases_local"
13:00:36 24371   cached open
13:00:36 24371 search_find: file="/usr/local/etc/exim/db/aliases_local"
13:00:36 24371   key="lissyara@lissyara.su" partial=-1 affix=NULL starflags=0
13:00:36 24371 LRU list:
13:00:36 24371   :/usr/local/etc/exim/db/aliases_local
13:00:36 24371   End
13:00:36 24371 internal_search_find: file="/usr/local/etc/exim/db/aliases_local"
13:00:36 24371   type=lsearch key="lissyara@lissyara.su"
13:00:36 24371 cached data used for lookup of lissyara@lissyara.su
13:00:36 24371   in /usr/local/etc/exim/db/aliases_local
13:00:36 24371 lookup failed
13:00:36 24371 expanding: ${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/db/aliases_local}}
13:00:36 24371    result:
13:00:36 24371 expanded:
13:00:36 24371 file is not a filter file
13:00:36 24371 parse_forward_list:
13:00:36 24371 user_aliases router declined for lissyara@lissyara.su
надо заметить - не самый большой и сложный роутер.
у некоторых отладка занимает страниц 5 текста - если сложные условия...
вот это я и прошу - от начала и до конца. Так сложно выложить?
И можно я сам буду решать чт мне надо для решения поблемы, а не уговривать и клещщами тащщить сведения...
если что-то секретное - в любом нормальном текстовом редакторе есть автозамена - тут тоже был не этот адрес - я его заменил...

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 12:20:40
cyrus_user
я не тормоз, я выложил отладку в режиме exim -bd -d+all

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

18:12:50 27790 --------> spam_router router <--------                                                                   
18:12:50 27790 local_part=test domain=sanctus.loc                                                                       
18:12:50 27790 spam_router router skipped: verify 2 0 0
больше никаких сообщений в логе про этот роутер нету.

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-03 12:40:42
Alex Keda
мдя... теперь я непонимаю почему он пропущен :)

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-04 6:03:05
cyrus_user
lissyara писал(а):мдя... теперь я непонимаю почему он пропущен :)
в принципе, логика поведения redirect роутера примерно такая:
вызов, сверка параметров, если нет каких-то данных, пропуск.
следующий вызов если изменилcя путь доставки или изменилось что-либо в хедерах (влияние на изменения пути доставки).
поскольку назначение переменной acl_m20 не влияет на роутинг письма, то собственно роутер не вызывается больше.

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

no_verify                                                                                                              
driver = redirect                                                                                                      
data   = "${if >{$acl_m20}{9} {spam@$domain} {$local_part@$domain}}"                                                   
headers_add = X-ABC: testing acl_m20:|$acl_m20|

первый вызов роутера запишет заголовок в письме вот такого вида:

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

X-ABC: testing acl_m20:||
почему роутер не вызвался 2й раз? потому что изменений в роутинге не произошло. Если я сделаю:
в любом другом роутере сделаю перенаправление пересылки
сделаю в acl-ях |транспортах дополнительный заголовок,
то роутер будет вызван ещё раз, потому что всё что выше может повлиять на роутинг(доставку)
В принципе я нашёл несколько путей решения, но все они являются дополнительными условиями (костыли).
Вчера пробовал играть с forbid_xxx параметрами, кое-что дало прояснения, но проще оказалось через системный фильтр.
Есть правда мысль на перегруженность моего конфига (много доменов, разные роутинги), менять всю структуру конфига я пока не готов, Поэтому lissyara спасибо за помощь, давай закроем тему.

Re: exim. про роутер redirect и переменную

Добавлено: 2007-09-04 8:07:48
Alex Keda
нет. в логе что ты привёл - вообще нет его обработки.
никаких проверок, ничего.
он просто пропущен... Вот это и непонятно...