Тестирование правил преобразования адресов

Для тестирования правил преобразования адресов sendmail запускают с флагом «-bt» для того, чтобы тестирование было более детальным, можно применять и ряд других флагов.

Пример тестирования набора правил 0 и его подправил.

% sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 0 paul@polyn.kiae.surewrite: ruleset 0 input: paul @ polyn.kiae.surewrite: ruleset 98 input: paul @ polyn.kiae.surewrite: ruleset 98 returns: paul @ polyn.kiae.surewrite : ruleset 97 input: paul @ polyn.kiae.surewrite : ruleset3 input: paul § polyn.kiae.surewrite : ruleset 96 input: paul < § polyn.kiae.su> rewrite : ruleset 96 returns: paul < @ polyn.kiae.su.> rewrite : ruleset 3 returns: paul < § polyn.kiae.su.> rewrite : ruleset 0 input: paul < @ polyn.kiae.su.> rewrite : ruleset 98 input: paul < @ polyn.kiae.su.> rewrite : ruleset 98 returns: paul < @ polyn.kiae.su.> rewrite : ruleset 90 input: < polyn.kiae.supaul < @ polyn.kiae.su.> rewrite : ruleset 90 input: polyn . < kiae . su . kiae . su . > > paul < @ polyn rewrite :. ruleset 90 input: polyn . kiae . < su . kiae . su . > > paul < @ polyn rewrite : ruleset returns: paul < @ polyn.kiae.su.> rewrite : ruleset 90 returns: paul < @ polyn.kiae.su.> rewrite : ruleset 90 returns: paul < @ polyn.kiae.su.> rewrite : ruleset 95 input: < > paul < @ polyn kiae . su . > rewrite : ruleset 95 returns: paul < @ polyn kiae . su . > rewrite: ruleset 0 returns: $# esmtp $@ polyn.kiae.su.$: paul < @ polyn.kiae.su.> rewrite: ruleset 97 returns: $# esmtp $@ polyn.kiae.su.$: paul < @ polyn.kiae.su.> rewrite: ruleset 0 returns: $# esmtp $@ polyn.kiae.su.$: paul < @ polyn.kiae.su.>

В этом примере четко виден порядок преобразования. Сначала производится канонизация имени, а затем его преобразование в соответствии с рассылкой. Набор правил 0 -- это набор преобразования адресов получателей. После него принимается решение о рассылке почты.

Чаще всего ошибки встречаются в наборе правил 3, а точнее в поднаборе этого набора 96. Здесь производится канонизация адресов. Наибольшие проблемы проявляются с так называемыми фиктивными доменами, которые не могут быть разрешены службой доменных имен. В этом случае происходит, обычно, расширение имени именем текущего домена, и, как результат, ошибка при рассылке. Такие имена либо надо вносить в список адресов фиктивных доменов (BITNET или UUCP), либо их отлавливать и запускать написанные для них программы рассылки.

В приведенном ниже примере тестирование адресов производится с максимальной опцией отладки, когда указываются не только номера наборов правил, но и сами тестируемые правила:

%sendmail -bt -d21.12 >3 paul@polyn.kiae.su ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > rewrite: ruleset 3 input: paul @ polyn.kiae.su -----trying rule: $@ ----- rule fails -----trying rule: $* -----rule matches: $: $1 < @ > rewritten as: paul @ polyn.kiae.su< @ > -----trying rule: $*<$*>$*< @ > ----- rule fails -----trying rule: $* : : $* < @ > ----- rule fails -----trying rule: : include : $* < § > ----- rule fails -----trying rule: $* : $* <. @ > ----- rule fails -----trying rule: $* < @ > -----rule matches: $: $1 rewritten as: paul @ polyn.kiae.su -----trying rule: $* ; ----- rule fails ----trying rule: $@ ----- rule fails -----trying rule: $* -----rule matches: $: < $1 > rewritten as: < paul @ polyn.kiae.su> ------trying rule: $+<$*> ------ rule fails ------trying rule: <$*>$+ ------ rule fails ----trying rule: < > ---- rule fails -----trying rule: < $+ > -----rule matches: $: $1 rewritten as: paul @ polyn.kiae.su -----trying rule: @ $+ , $+ ----- rule fails -----trying rule: @ $+ : $+ ----- rule fails -----trying rule: $+:$*; @ $+ ----- rule fails -----trying rule: $+:$*; ----- rule fails -----trying rule: $+ @ $+ -----rule matches: $: $1 < @ $2 > rewritten as: paul < @ polyn.kiae.su> -----trying rule: $+ < $+ @ $+ > ----- rule fails -----trying rule: $+<§$+> -----rule matches: $@ $> 96 $1 < @ $2 > -----callsubr 96 rewrite: ruleset 96 input: paul < @ polyn.kiae.su> -----trying rule: $* < @ localhost > $* ----- rule fails -----trying rule: $* < @ localhost . net . kiae.su > $* ----- rule fails ------trying rule: $* < @ localhost . UUCP > $* ------ rule fails ------trying rule: $* < @ [$+]>$* ------ rule fails -----trying rule: $* < @ @ $=w > $* ----- rule fails --trying rule: $* < @ @ $+ > $* ----- rule fails --trying rule: $* < @ $+ . UUCP > $* ----- rule fails --trying rule: $* < @ $* $~P > $* --rule matches: $: $1 < @ $[ $2 $3 $] > $4 rewritten as: paul < @ polyn.kiae.su.> -----trying rule: $* < @ $=w > $* ----- rule fails --trying rule: $* < @ $* $=P > $* --rule matches: $: $1 < @ $2 $3 . > $4 rewritten as: paul < @ polyn.kiae.su.. > -----trying rule: $* < @ $* . . > $* --rule matches: $1 < @ $2 . > $3 rewritten as: paul < @ polyn t. kiae . su . > --trying rule: $*< @ $*..>$* ----- rule fails --trying rule: $* < @ quest . net . kiae . su > $* ----- rule fails rewrite: ruleset 96 returns: paul < @ polyn.kiae.su.> rewritten as: paul < @ polyn.kiae.su.> rewrite: ruleset 3 returns: paul < @ polyn.kiae.su.> >96 paul@polyn.kiae.su > rewrite: ruleset 96 input: paul @ polyn.kiae.su --trying rule: $* < @ localhost > $* ----- rule fails -----trying rule: $* < @ localhost . net . kiae . su > $* ----- rule fails --trying rule: $* < @ localhost . UUCP > $* ------ rule fails -----trying rule: $*<§[$+]>$* ----- rule fails —trying rule: $* < @ @ $=w > $* ----- rule fails -----trying rule: $* < @ @ $+ > $* ----- rule fails -trying rule: $*<§$+. UUCP > $* ----- rule fails --trying rule: $* < @ $* $"P > $* ----- rule fails --trying rule: $* < @ $=w > $* ----- rule fails ---trying rule: $* < @ $* $=P > $* ----- rule fails ---trying rule: $*< @ $*..>$* ----- rule fails -----trying rule: $* < @ quest.net.kiae.su > $* ----- rule fails rewrite: ruleset 96 returns: paul @ polyn.kiae.su >

Правила в данном случае указываются по их левой части и для правильного понимания необходимо иметь и тот фрагмент файла конфигурации sendmail, который тестируется.