Опубликован: 21.11.2006 | Доступ: свободный | Студентов: 1811 / 140 | Оценка: 4.09 / 4.00 | Длительность: 38:34:00
Лекция 10:

Программа sendmail

Строки макроса D

Строки конфигурации, которые начинаются с " D ", определяют макрос, применяемый в наборах правил. Макрос представляет собой слово или фразу, которая передает смысл переменной окружения. Имя макроса определяется как одиночный символ или слово, заключенное в фигурные скобки ( {} ). Для указания специфических параметров почтового узла администратор почтовой системы может использовать заглавные буквы. Ниже представлен формат D -строки:

Dx value,

где x является именем макроса, а value его значением. После того как макрос определен, его можно дополнить командой $x, где x — имя макроса.

Можно создать условный макрос, чтобы проверить, был ли ранее определен данный макрос. Формат условного макроса следующий:

$?x value1 $| value2 $,

где x представляет собой имя макроса, а value1 — значение, которое должен принять макрос, если он уже был ранее определен. В противном случае макрос с заданным именем должен принять значение value2. Символы " $| " не должны включаться в команду.

Как уже упоминалось ранее, в sendmail используются предварительно определенные макросы для фраз общего пользования. В табл. 10.4 представлены некоторые предварительно определенные макросы.

Таблица 10.4. Макросы D для sendmail
Макрос Описание
$a Дата отправки сообщения из поля Date: (Дата: )
$b Текущая дата в формате RFC822
$c Число переприемов сообщения
$d Текущая дата в UNIX-формате
$f Адрес отправителя
$g Относительный адрес отправителя (включая имя хоста)
$h Идентификатор сообщения в очереди
$i Полное доменное имя узла
$j UUCP-имя узла
$k Доменная часть в gethostbyname
$m Имя процесса-демона sendmail
$n Идентификатор процесса sendmail
$p Формат адреса отправителя по умолчанию
$r Протокол, используемый для приема сообщения
$s Имя хоста отправителя
$t Числовое выражение текущего времени
$u Получатель сообщения
$v Номер версии sendmail
$w Имя хоста узла
$x Полное имя отправителя
$z Рабочий каталог получателя
$_ Проверенный адрес отправителя
${bodytype} Тип тела сообщения
${client_addr} IP-адрес SMTP-клиента
${client_name} Имя хоста SMTP-клиента
${client_port} Номер TCP-порта SMTP-клиента
${envid} Идентификатор конверта, переданный sendmail
${opMode} Текущий режим работы (c параметром -b )
${deliveryMode} Текущий режим доставки (по параметру DeliveryMode )
Категоризация фраз с помощью С-строк

Строки конфигурации, которые начинаются с " С ", определяют классы фраз, используемых в наборах правил. Классы группируют фразы, в которых имеется что-то общее, чтобы наборы правил могли затем сканировать класс на соответствие определенным критериям. Формат С -строки выглядит так:

Ccphrase1 phrase2 ... ,

где c является именем класса, а phrase1, phrase2 и т.д. представляют собой фразы, которые группируются в класс. Подобно D -командам, имена классов должны быть либо односимвольными, либо представлять собой слово, заключенное в фигурные скобки ( {} ). Имена классов с прописными буквами или со специальными символами зарезервированы в программе sendmail для внутреннего использования. При определении классов, специфических для конкретного узла, администраторы почтовых систем могут использовать в именах классов лишь заглавные буквы. В табл. 10.5 представлен список некоторых предварительно описанных имен классов, которые используются внутри sendmail.

Таблица 10.5. С- классы в sendmail
Класс Описание
e Кодировка содержания сообщения (может быть 7 бит, 8 бит и двоичная)
k UUCP-имя узла
m Доменное имя
n Определяет типы тела MIME, которые не могут быть закодированы 7 битами
q Определяет типы тела сообщения, которые не могут быть закодированы base64
s Определяет подклассы сообщений, которые могут быть обработаны рекурсивно
t Определяет набор пользователей с высокой степенью доверия
w Определяет все имена, под которыми известен данный хост
Идентификация классов с помощью 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.

Таблица 10.6. Типы баз данных в sendmail, задаваемые в К- строке
Тип Описание
dbm Использовать библиотеку ndbm(3)
btree Использовать интерфейс btree для доступа к библиотекам баз данных Berkeley
hash Использовать интерфейс hash для доступа к библиотекам баз данных Berkeley
nis Использовать средства для просмотра NIS
ldapx Использовать средства для просмотра каталогов LDAP x.500
text Использовать средства для просмотра текстовых файлов
implicit Производить просмотр файлов псевдонимов по умолчанию
user При поиске имен пользователей использовать функцию getpwnam()
host При поиске имен использовать DNS
bestmx При поиске оптимальной МХ -записи для хоста использовать DNS
sequence Использовать список отображений при просмотре
program Использовать внешнюю программу при просмотре

В настоящее время в ОС Linux поддерживаются только типы btree и hash. Причем для отображения баз данных в sendmail чаще применяется тип hash.

Отображенные базы данных могут быть получены из текстовых файлов с помощью команды makemap. Формат этой команды следующий:

makemap mapclass outputfile < textfile,

где mapclass — тип отображения базы данных, который используется, textfile является текстовой версией базы данных, используемой в качестве исходных данных для отображения, а outputfile представляет собой уже преобразованную базу данных.