|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Lev Walkin 2:5020/400 29 Jan 2002 01:25:40 To : Dmitriy Kyrhlarov Subject : Re: sendmail.cf -------------------------------------------------------------------------------- Dmitriy Kyrhlarov wrote: > Hi! > > После до-олгого изучения op.txt осталось чувство собстенной > неполноценности. :-( > По-прежнему, совершенно не понимаю, как пишутся рулесеты. > Там приводят пример: > Kstorage macro Определить storage как корзинку для временных значений. > HMessage-Id: $>CheckMessageId При форматировании header lines, засунуть встреченный нами заголовок MessageId в рулесет CheckMessageId. > SCheckMessageId Определить рулесет CheckMessageId > # Record the presence of the header Hапугать человека настоящими английскими словами в окружающем их бреде. > R$* $: $(storage {MessageIdCheck} $@ OK $) $1 Вся бурда (любое количество любой лажи $*) переписывается в том же виде, что и была ($1), а в переменную MessageIdCheck записывается "OK". > R< $+ @ $+ > $@ OK Если в заголовке MessageId есть нечто похожее на < blah @ blah > - возвращаем OK, вываливаемся из CheckMessageId с этим OK. > R$* $#error $: 553 Header Error При любом другом раскладе вываливаемся в мейлер error с аргументом 553 Header Error - он сам там разберется, что дальше делать. > Scheck_eoh Определяется рулесет check_eoh. Согласно правилам sendmail'а, вызывается, когда все строки заголовка прочитаны. (eoh - end of header) > # Check the macro Английский по белому. > R$* $: < $&{MessageIdCheck} > Заменить всю бурду слева на "< что_там_в_messageidcheck >" > # Clear the macro for the next message Опять английский... > R$* $: $(storage {MessageIdCheck} $) $1 Очистить MessageIdCheck, инициализировав его HИЧЕМ, и сохранить то, что мы имеем в левой части нетронутым. > # Has a Message-Id: header Ой, опять буквы знакомые. > R< $+ > $@ OK Если внутри угловых скобок что-то есть, то возвращаем OK. > # Allow missing Message-Id: from local mail Хм.. раздражать начинают эти непонятные слова... > R$* $: < $&{client_name} > Заменим левую часть на "< адрес_клиента >". > R< > $@ OK Если там пусто - вернем OK. > R< $=w > $@ OK Если внутри скобок локальный домен (localhost, или что там в Cw или Fw), то вернем OK. > # Otherwise, reject the mail Гррр... > Сенсеи, объясните, плз, по строкам как это работает. > Как понимать > R< Если разбираемая строка состоит из левой угловой скобки... (правая часть погрызена кем-то, так что что будет, если строка состоит из левой скобки, неизвестно). > Что такое > :: и ... Просто буквы. Как a, b, или даже c. > из реального конфига > R@ $* <@>$: @ $1unmark @host:... > R$* :: $* <@>$: $1 :: $2unmark node::addr Разбирает IPv6 адрес, не иначе. > Кое-что до меня все же дошло -- LHS & RHS. Я их даже обнаружил в > примере: > R$* $: $(storage {MessageIdCheck} $@ OK $) $1 > (Для всех токенов применить то, что справа). Hо что это? > Откуда берется MessageIdCheck? С неба. Если его не существовало, создается при первой же ссылке. > Помогите, плз, хоть начать. Дальше, надеюсь, что-нибудь смогу сам. ask! > ЗЫ. Хочу сделать встречную проверку все же именно на sendmail, хотя > знаю, что есть более удобные для этого MTA. Hо мне надо разобраться. Более удобных нет ;) -- Lev Walkin vlm@netli.com --- ifmail v.2.15dev5 * Origin: Netli, Inc. (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/355089aae165.html, оценка из 5, голосов 10
|