Символы $@ и $: используются для управления обработкой и предотвращения зацикливания. Если преобразование начинается символом весь набор правил завершается и остаток поля преобразования возвращается набором правил. Если преобразование начинается символом $:, данное конкретное правило выполняется лишь единожды. Используйте $: для предотвращения рекурсии и зацикливания при вызове других наборов правил. Используйте для прерывания обработки набора правил на конкретном правиле.
Символ $[ла/пе$] преобразует псевдоним узла или его адрес IP в каноническое имя узла. С этой целью значение name передается для разрешения серверу имен. К примеру, при обращении к серверам имен домена wrotethebook.com $[mouse$] возвращает rodent.wrotethebook.com, а $[[172. 16.12.1]$] возвращает crab.wrotethebook.com.
Подобно тому как имя узла или адрес используется для поиска канонического имени в базе данных сервера имен, ключ {key) может использоваться для извлечения информации из базы данных (тар) при помощи конструкции $(шр кеу%). Здесь мы имеем дело с более сложным в применении и более общим синтаксисом работы с базой данных, чем в случае извлечения канонических имен. Прежде чем перейти к подробностям создания и использования баз данных для sendmail, закончим разбираться с синтаксисом правил подстановки.
Существует специальный синтаксис правил подстановки, используемый в наборе правил 0. В наборе правил 0 определена тройка значений (mailer, host, user), указывающая программу доставки почты, узел-получатель, а также адресата почты.
Специальный синтаксис преобразования, решающий задачу, выглядит следующим образом:
$#mailer$@host$:user
Пример использования такой конструкции из файла generic-linux.cf:
R$*<@$*>$ » $#esmtp $@ $2 $: $1 < @ $2 > $3 Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Предположим, что данным правилом обрабатывается адрес электронной почты david<@ora.wrotethebook.com>. Этот адрес соответствует шаблону $*<@$+>$* по следующим причинам: