[sendmail-conf] strange behaviour of regex check

Victor Ustugov victor на corvax.kiev.ua
Вс Авг 29 17:45:58 EEST 2004


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




Подробная информация о списке рассылки sendmail-conf