Россия, Казань, Казанский Национальный Исследовательский Технический Университет |
Программа sendmail
Строки макроса D
Строки конфигурации, которые начинаются с " D ", определяют макрос, применяемый в наборах правил. Макрос представляет собой слово или фразу, которая передает смысл переменной окружения. Имя макроса определяется как одиночный символ или слово, заключенное в фигурные скобки ( {} ). Для указания специфических параметров почтового узла администратор почтовой системы может использовать заглавные буквы. Ниже представлен формат D -строки:
Dx value,
где x является именем макроса, а value его значением. После того как макрос определен, его можно дополнить командой $x, где x — имя макроса.
Можно создать условный макрос, чтобы проверить, был ли ранее определен данный макрос. Формат условного макроса следующий:
$?x value1 $| value2 $,
где x представляет собой имя макроса, а value1 — значение, которое должен принять макрос, если он уже был ранее определен. В противном случае макрос с заданным именем должен принять значение value2. Символы " $| " не должны включаться в команду.
Как уже упоминалось ранее, в sendmail используются предварительно определенные макросы для фраз общего пользования. В табл. 10.4 представлены некоторые предварительно определенные макросы.
Категоризация фраз с помощью С-строк
Строки конфигурации, которые начинаются с " С ", определяют классы фраз, используемых в наборах правил. Классы группируют фразы, в которых имеется что-то общее, чтобы наборы правил могли затем сканировать класс на соответствие определенным критериям. Формат С -строки выглядит так:
Ccphrase1 phrase2 ... ,
где c является именем класса, а phrase1, phrase2 и т.д. представляют собой фразы, которые группируются в класс. Подобно D -командам, имена классов должны быть либо односимвольными, либо представлять собой слово, заключенное в фигурные скобки ( {} ). Имена классов с прописными буквами или со специальными символами зарезервированы в программе sendmail для внутреннего использования. При определении классов, специфических для конкретного узла, администраторы почтовых систем могут использовать в именах классов лишь заглавные буквы. В табл. 10.5 представлен список некоторых предварительно описанных имен классов, которые используются внутри sendmail.
Идентификация классов с помощью F-строк
Строки конфигурации, которые начинаются с буквы " F " также определяют классы, которые могут использоваться наборами правил, но немного иначе, чем С -строки. F -строки указывают на имена файлов, в которых содержатся списки фраз, используемых наборами правил. Формат F -строки следующий:
Fc filename,
где c — одиночный символ имени класса, а filename — полный путь к файлу, в котором содержатся фразы. Следует помнить, что каждая фраза помещается в отдельной строке.
Как и в случае с С -строками, для описания внутренних классов в sendmail используются прописные буквы и специальные символы в имени класса. Для определения параметров, специфических для конкретных узлов, администраторам почтовых систем следует использовать в именах классов заглавные буквы.
Определение класса базы данных с помощью К-строк
Подобно F -строкам, K -строки используются для определения файла, в котором содержатся фразы, используемые отдельным правилом. Однако при этом в К -строках определяется специальный тип файла. Строки конфигурации, которые начинаются с " К ", определяют специальные базы данных, которые используются sendmail при поиске определенной информации. Посредством базы данных sendmail может более оперативно обращаться к нужной информации, чем при использовании файлов с F -строками. Формат K -строки следующий:
Kmapname mapclass arguments,
где mapname — имя базы данных, в том виде, как оно заявлено в файле конфигурации; mapclass — тип сгенерированной базы данных, а arguments — аргументы, которые передаются sendmail для оказания помощи в создании базы данных. Часто в роли аргументов выступают местоположение базы данных и флаги для работы с ней.
Отображения в базе данных производятся набором правил, который имеет следующий синтаксис:
$(map key $@ arguments $: default $),
где map выступает в роли имени отображения, а key и arguments передаются функции отображения для получения соответствующей записи из базы данных. Значение default используется, если запись из базы не извлекается.
Аргумент mapclass — это, по сути, тип базы данных, к которой обращается sendmail для получения тех или иных данных. Каждый тип базы данных имеет свой специфический метод индексации и организации доступа к данным. Существует большое количество типов mapclass, с которыми может работать sendmail. Наиболее общие классы представлены в табл. 10.6.
В настоящее время в ОС Linux поддерживаются только типы btree и hash. Причем для отображения баз данных в sendmail чаще применяется тип hash.
Отображенные базы данных могут быть получены из текстовых файлов с помощью команды makemap. Формат этой команды следующий:
makemap mapclass outputfile < textfile,
где mapclass — тип отображения базы данных, который используется, textfile является текстовой версией базы данных, используемой в качестве исходных данных для отображения, а outputfile представляет собой уже преобразованную базу данных.