This rule ensures that all



Пример 18-3. Правило из vstout.uucpsmtp.m4

LOCAL_NET_CONFIG # This rule ensures that all local mail is delivered using the # smtp transport, everything else will go via the smart host. R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
Известно, что макрос LOCAL_NET_CONFIG вызовет правило, которое будет вставлено где-нибудь близко к концу набора 0, но перед любым определением интеллектуального хоста. Также известно, что набор 0 последний. Здесь должны быть три параметра: транспорт, хост и пользователь.

Две строки комментария можно игнорировать: они все равно ничего не делают. Правило задано строкой, начинающейся с R. Мы знаем, что R является командой sendmail и добавляет это правило к текущему набору. В данном случае это набор 0. Давайте рассматривать левую и правую стороны.

Левая сторона правила выглядит так: $* < @ $* .$m. > $*.

Набор 0 ищет символы < и > потому, что они должны прийти из набора 3. Набор 3 преобразует адреса в общую форму и делает синтаксический анализ проще, он также помещает часть host адреса почты в символы <>.

Это правило соответствует любому адресу почты, который напоминает: 'DestUser < @ somehost.ourdomain. > Some Text' . То есть, это соответствует почте для любого пользователя на любом компьютере в нашем домене.

Помните, что текст, согласованный метасимволами на левой стороне правила, будет назначен макроопределениям для использования на правой стороне. В примере первое определение $* соответствует тексту от начала адреса до символа $1 для работы с ним на правой стороне. Второе определение $* назначено $2, а последнее к $3.

Мы теперь имеем достаточно данных, чтобы понять левую сторону. Эти правила соответствуют почте для любого пользователя в любом компьютере в нашем домене. Имя пользователя будет в $1, имя хоста в $2, любой сопроводительный текст в $3. Затем вызывается правая сторона, чтобы обработать эти данные.

Давайте теперь рассматривать то, что мы ожидаем видеть в выводе. Правая сторона нашего правила выглядит так: $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3.

Когда правая сторона нашего набора обрабатывается, каждый из метасимволов интерпретируется, и соответствующие замены будут сделаны.

Метасимвол $# заставляет это правило использовать указанный транспорт, в данном случае smtp.

Метасимвол $@ задает целевой хост. В этом примере целевой компьютер определен как $2.$m., что является полным доменным именем в нашем домене, то есть FQDN, созданный из компонента hostname, назначенного $2 левой стороной, с добавлением доменного имени (.$m.).

Метасимвол $: определяет целевого пользователя, который тоже задан на левой стороне правила и хранится в $1.

Мы сохраняем содержание секции <> и любой сопроводительный текст, используя данные из левой стороны.

Так как это правило обращается к конкретному транспорту, письмо будет послано для доставки соответствующему транспортному агенту. В нашем примере оно будет передано адресату через протокол SMTP.

Содержание раздела