Когда левосторонняя часть правила перезаписи совпадает, входная информация удаляется и замещается правосторонней частью. Лексемы копируются прямо из 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, что адрес полностью разрешен.