Sendmail Installation and Operation Guide

         

Правосторонняя часть


Когда левосторонняя часть правила перезаписи совпадает, входная информация удаляется и замещается правосторонней частью. Лексемы копируются прямо из RHS, если они не начинаются со знака доллара. Метасимволы таковы:

$n Заместить неопределенную лексему n из LHS
$[name$] Канонизировать имя
$(map key $@arguments $:default $) Обобщенная ключевая функция преобразования
$>n "Вызов" набора правил n
$#mailer Решение в mailer
$@host Определить host
$:user Определить user

Синтаксис $n замещает соответствующее значение из $+, $-, $*, $=, или $~ совпадения в LHS. Это может быть использовано везде.

Имя хоста, заключенное между $[ и $] просматривается в базе(ах) данных хостов и заменяется на каноническое имя 1. Например, "$[ftp$]" может стать "ftp.CS.Berkeley.EDU", а "$[[128.32.130.2]$]" может стать "vangogh.CS.Berkeley.EDU.". Sendmail распознает его числовой IP адрес без вызова сервера имен и замещает его своим каноническим именем.

Синтаксис $( ... $) - более общая форма просмотра; он использует названное преобразование вместо неявного. Если ничего не найдено, вставляется указанное умолчание; если умолчание не определено, и ничего не найдено, значение остается без изменений. Аргументы передаются в преобразование для возможного использования.

Синтаксис $>n заставляет остаток строки замещать обычным образом, а затем передать как аргумент в набор правил n. Конечное значение набора правил n затем подставляется в это правило.

Синтаксис $> распространяется на все после имени набора правил и до конца замещаемой строки, а затем передается как первичный вход в набор правил. Позволяются рекурсивные вызовы. Например, $>0 $>3 $1

расширяет $1, передает его в набор правил 3, а затем передает результат набора правил 3 в набор правил 0.

Синтаксис $# должен быть использован только в наборе правил 0, или подпрограмме набора правил 0. Он приводит к немедленному завершению выполнения набора правил, и сигнализирует sendmail, что адрес полностью разрешен.


Полный синтаксис таков: $#mailer $@host $:user

Он определяет тройку {mailer, host, user}, необходимую для почтовой программы. Если почтовая программа локальна, то часть host может быть опущена2. Мailer должен быть одним словом, а host и user могут состоять из нескольких частей. Если mailer является встроенным IPC mailer'ом, host может быть списком хостов, разделенных запятыми, который просматривается в поисках первого работающего адреса (точно как записи типа MX). Позднее user переписывается специфическим для данной почтовой программы набором правил перезаписи, и назначается макросу $u. В особом случае, если определенный mailer имеет ОПРЕДЕЛЕНЫЙ флаг F=@ и первый символ значения $: является "@", "@" обрезается, и выставляется флаг в описании адреса, заставляющий sendmail не применят обработку по набору правил 5.

Обычно, подходящее правило применяется снова, поэтому правило идет по кругу до появления ошибки. RHS может быть предварена $@ или $: для изменения такого поведения. Префикс A $@ заставляет набор правил возвращаться с остатком RHS в качестве значения. Префикс $: заставляет немедленно закончить работу правила, но продолжить работу набора правил; это может быть использовано во избежание продолжения применения правила. Префикс перед продолжением обрезается.

Префиксы $@ и $: могут предшествовать описанию $>; например: R$+ $: $>7 $1

Совпадает со всем, передает это в набор правил семь, и продолжается; $: необходимо во избежание бесконечной петли.

Замещение происходит в описанном порядке, то есть замещаются параметры из LHS, канонизируются имена хостов, вызываются "подпрограммы", и в конце обрабатываются $#, $@, и $:.


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