hello
может кому еще пригодится... я тут наступил на странные грабли...
есть регексп:
Ktest_pat regex -a на MATCH -dialup-
есть правило:
Stest1
R $* $: $(test_pat_1 $1 $: $1 $)
R @MATCH $#error $@ 5.7.1 $: 550 test_pat
теперь тест:
# echo "test1 piggy.asa.org.ua" | sendmail -bt -d21.12 -C ../mc/test/sendmail_test.cf | grep -v ^WARNING
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> test1 input: piggy . asa . org . ua
-----trying rule: $*
-----rule matches: $: $( test_pat $1 $: $1 $)
rewritten as: @ MATCH
-----trying rule: @ MATCH
-----rule matches: $# error $@ 5 . 7 . 1 $: 550 test_pat
rewritten as: $# error $@ 5 . 7 . 1 $: 550 test_pat
test1 returns: $# error $@ 5 . 7 . 1 $: 550 test_pat
я офигел... :(
если регексп не начинается с "-", то все в порядке. я бы объяснил это тем, что -dialup- парсится и обрабатывается как параметр описания мапы, но такая глюка не наблюдаю при более сложных проверках, как в check_relay_dialup...
в общем, даже если в регекспе указывается только подстрока, все равно я буду указывать маркет начала строки:
Ktest_pat regex -a на MATCH ^.+-dialup-
# echo "test1 piggy.asa.org.ua" | sendmail -bt -d21.12 -C ../mc/test/sendmail_test.cf | grep -v ^WARNING
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> test1 input: piggy . asa . org . ua
-----trying rule: $*
-----rule matches: $: $( test_pat $1 $: $1 $)
rewritten as: piggy . asa . org . ua
-----trying rule: @ MATCH
----- rule fails
test1 returns: piggy . asa . org . ua
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Best wishes Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 32418694 nic-handle: CRV2-RIPE, CRV-UANIC