Для преобразования адресов в правилах подстановки могут использоваться базы данных. База данных включается в часть правила, отвечающую за преобразование, посредством следующей конструкции:
$(map key [$@argument...] [$-.default] $)
Здесь map - имя, назначенное базе данных в файле sendmail.cf. Имена карт тар не ограничены теми соглашениями, которым подчиняются имена макроопределений. Подобно именам почтовых программ, имена карт используются только в файле sendmail.cf и могут быть произвольными. Выбирайте простые описательные имена, такие как «users» или «mailboxes». Имя карты назначается при помощи команды К, о которой мы скоро поговорим.
key - это значение индекса записи из базы данных. Значение, возвращаемое базой данных по этому ключу, используется для переписывания исходного адреса. Если значение отсутствует, исходный адрес не изменяется, если только не указано значение default.
argument - дополнительное значение, передаваемое подпрограмме работы с базой данных наряду с ключом. Аргументов может быть несколько, но каждый аргумент должен начинаться сочетанием символов Аргумент может использоваться подпрограммой для изменения значений, возвращаемых в sendmail. В базе данных ссылки на аргументы имеют формат %п, где п - цифра, указывающая порядковый номер аргумента в правиле подстановки - % 1, %2 и т. д. - для случаев, когда аргументов несколько. (Аргумент %0 - это ключ, key.)
Следующий пример прояснит использование аргументов. Рассмотрим такой исходный адрес:
torn.martin<@sugar>
Предположим, что существует база данных, хранящая внутренние имена sendmail для узлов пересылки:
oil %1<®relay.fats.com> sugar %1<@relay.calories.com> salt %1<@server.sodium.org>
Кроме того, предположим, что есть следующее правило подстановки:
R$+<@$-> $(relays $2 $@ $1 $:$1<@$2> $)
Исходный адрес tom.martin<@sugar> соответствует шаблону, поскольку содержит одну или более лексем (torn.martin) перед литералом <@ и ровно одну лексему (sugar) после этого литерала. Сопоставление с шаблоном приводит к созданию двух неопределенных лексем и передаче их в часть преобразования.
- Назад
- Вперёд >>