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 |
Две строки комментария можно игнорировать: они все равно ничего не делают. Правило задано строкой, начинающейся с 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.