[sendmail-conf] Как проправить regex ?

Victor Ustugov victor на corvax.kiev.ua
Чт Ноя 11 13:05:15 EET 2004


Sergey Korolew wrote:

> VU> 1. 5 - мало. есть куча валидных рилеев с пятью цифрами.
> Возможно... Скручу.

просто замени 5 на 6 для начала

> VU> 2. покажи вывод
> VU> grep grep '\[0-9\].*\[0-9\]' /etc/mail/sendmail.cf
> bash-2.05b# grep '\[0-9\].*\[0-9\]' /etc/mail/sendmail.cf
> Kcheckaddress_canonified regex -a на MATCH ^([0-9\-]+<@geocities\.com|[0-9]+<@(aol|msn)\.com|[0-9][^<]*<@juno\.com|.{20}[^<]+<@aol\.com)\.?>
> Kcheckaddress regex -a на MATCH ^.*<?([0-9\-]+ на geocities\.com|[0-9]+@(aol|msn)\.com|[0-9][^@]*@juno\.com|.{20}[^@]+<@aol\.com)>?
> Kallnumbersdots regex -a на MATCH ^[0-9]+[0-9\._]+[0-9]+$
> Kippat regex -a на MATCH -n [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
> Kdulpat_relay_3 regex -a на MATCH ^[^\[].*[0-9].*[0-9].*[0-9].*[0-9].*[0-9].*[0-9]
> 
> Реально используются только последних два. Думаю, нас интересует
> последняя.

да. меня интересовало имя dulpat_relay_3, чтобы потом легче было 
ориентироваться в выводе sendmail -bt

к тому же, мне надо было попросить не
grep '\[0-9\].*\[0-9\]'
а
grep '\[0-9\]\.\*\[0-9\]'
но все равно, название регекспа видно

> VU> а потом
> VU> echo 'Translate,checkrelay 1Cust247.tnt2.chi5.da.uu.net $| 
> VU> 67.195.140.247' | sendmail -bt -d21.12
> Там 47 килобайт... Я взял на себя смелость вырезать:
> 
> rewritten as: 1Cust247 . tnt2 . chi5 . da . uu . net $| 67 . 195 . 140 . 247
> -----trying rule: $* $| $*
> -----rule matches: $: $( dulpat_relay_3 $1 $: $1 $) $| $2
> rewritten as: 1Cust247 . tnt2 . chi5 . da . uu . net $| 67 . 195 . 140 . 247
> -----trying rule: @ MATCH $| $*
> ----- rule fails

это кривизна регекспа. помнишь, была история, когда резались этим 
регекспом рилеи без реверса? тогда я и прикрутил в начало регекспа [^\[]

попробуй забрать новый check_relay_dialup_digits.m4 и пересобрать 
sendmail.cf

я заменил
^[^\[].*[0-9].*[0-9].*[0-9].*[0-9].*[0-9].*[0-9]
на
^([^\[].*)?[0-9].*[0-9].*[0-9].*[0-9].*[0-9].*[0-9]

> -----trying rule: $* $| $*
> -----rule matches: $: $1 $| $2 $| $( dulpat_relay_3 $&{client_ptr} $: $&{client_
> ptr} $)
> rewrite: RHS $&{client_ptr} => "(NULL)"
> rewrite: RHS $&{client_ptr} => "(NULL)"
> rewritten as: 1Cust247 . tnt2 . chi5 . da . uu . net $| 67 . 195 . 140 . 247 $|
> -----trying rule: $* $| $* $| @ MATCH
> ----- rule fails
> -----trying rule: $* $| $* $| $*
> -----rule matches: $: $1 $| $2
> rewritten as: 1Cust247 . tnt2 . chi5 . da . uu . net $| 67 . 195 . 140 . 247
> Local_check_dial returns: 1Cust247 . tnt2 . chi5 . da . uu . net $| 67 . 195 . 1
> 40 . 247
> 
> По идее должно было сработать в первый раз и подставление client_ptr
> не поможет.

да, конечно. если записи в прямой и реверсной зонах совпадают, то 
{client_ptr} всегда равно {client_name}

-- 
Best wishes Victor Ustugov   mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
ICQ: 77186900, 32418694      CRV2-RIPE, CRV-UANIC




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