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

exim condition обойти оператор "+"

Добавлено: 2008-05-06 13:46:49
cyrus_user
привет.

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

test_router:
no_verify
driver = redirect
#успешно доставляет куда надо -> data = "${if eq{$acl_m1}{1} {testuser+junk@$domain} {$local_part@$domain}}"
data = "${if eq{$acl_m200}{1} {$local_part+junk@$domain} {$local_part@$domain}}"
получаем в логе:

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

1JtKZC-00080Z-7R == testuser+junk+junk/повторы/+junk@mydomain.ru R=test_router defer (-17): error in redirect data: address is ridiculously long: testuser+junk+junk+junk/повторы/+junk и т.п.
Как тут запретить плюсовать, и воспринимать "+" как часть адреса? Долго игрался с экранированием, рыл в доке, но видимо не в том направлении.

Re: exim condition обойти оператор "+"

Добавлено: 2008-05-07 6:24:53
cyrus_user
поиграв с другими направлениями в роутингах, например local_part_suffix, manual_route, хитрые транспорты и попытки обмана $local_part в виде ${substr{1}{${eval:${strlen:$local_part}+5}}bla-bla, под пиво вспомнил, что большинство проблем нестандартных роутингов решается через rewrite

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

*@* "${if eq{$acl_m200}{1}{$1+junk@$2}fail}" T
ВСЕМ: не забывайте про механизм rewrite :)