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

Программа sendmail

Определение действий с принятыми сообщениями с помощью R-строк

В R -строках применяются специальные маркеры для анализа и обработки входящего сообщения. С их помощью определяются получатели сообщения и способы его доставки. В каждой R -строке задается одно правило. Правило состоит из двух частей — левой части ( LHS ) и правой части ( RHS ). Часть LHS определяет, какие маркеры необходимо искать во входящем сообщении. В то же время в RHS определяется, каким образом переписывать адрес с учетом маркеров из LHS. Формат R -строки следующий:

Rlhs rhs comments

Каждое поле должно разделяться по крайней мере одним символом табуляции. Все макросы и классы, используемые в наборе правил, расширяются в соответствии с информацией, полученной о сообщении. Для анализа сообщений в LHS определяются новые метасимволы. В табл. 10.10 представлены метасимволы, используемые в макросах LHS.

Таблица 10.10. Метасимволы LHS для наборов правил в sendmail
Символ Описание
$* Соответствуют ноль или более маркеров
$+ Соответствуют один или более маркеров
$- Соответствует только один маркер
$@ Не соответствует ни одного маркера
$=x Соответствует любой элемент класса x
$-x Не соответствуют элементы класса x

Когда обнаружены маркеры, соответствующие метасимволу в LHS, то они назначаются в качестве величины макроса в RHS. Каждое новое имя макроса задается в форме $nv, где n — числовой индекс маркера в сообщении. Например, если в LHS в качестве входных данных для uucp-dom:ispmail задано " $-:$+ ", то RHS передаются значения $1, что соответствует " uucp-dom " и $2, обозначающее " ispmail ".

Если в сообщении не найдено соответствий метасимволам LHS, то никакие действия набором правил не выполняются. Если же во входящем сообщении найдены соответствия метасимволам LHS, то входные данные переписываются в формат RHS. При перезаписи сообщения в RHS также применяются метасимволы. В табл. 10.11 представлены метасимволы, которые применяются в RHS.

Таблица 10.11. Метасимволы RHS для наборов правил в sendmail
Символ Описание
$n Подстановка маркера n из LHS
$[name$] Канонизация имени
$(map key $@ arguments $:Default $) Универсальный ключ для функции преобразования
$>n Вызов набора правил n
$#mailer Передача управления почтовой программе
$@host Определение хоста
$:user Определение пользователя

Как показано в табл. 10.11, любые имена хостов, которые передаются в RHS, заключаются в скобки с символом $[$], а затем расширяются до своего нормального вида, включая доменное имя. Также из табл. 10.11 видно, что один набор правил может напрямую вызывать другой набор правил посредством метасимвола $>n, где n представляет собой идентификатор S -строки следующего набора правил.

Предупреждение

Наборы правил не для слабонервных. В большинстве случаев для обработки почты в соответствии со стандартными требованиями бывает достаточно наборов правил, установленных по умолчанию. Иногда новые наборы правил реализуются для фильтрации сообщений определенных типов во избежание возникновения проблем в работе почтовой системы.

Формирование наборов правил с помощью S-строк

Строки конфигурации, которые начинаются с буквы " S ", идентифицируют набор правил. Наборы правил в sendmail обычно идентифицируются числовым значением. В программе sendmail наборы правил используются для анализа почтовых сообщений с целью выявления получателя и дальнейшей их доставки. В sendmail используются шесть стандартных наборов правил, которые представлены в табл. 10.12.

Таблица 10.12. Номера наборов правил в sendmail
Набор правил Описание
0 Передача управления почтовой программе, хосту и пользователю
1 Применяется ко всем адресам отправителей
2 Применяется ко всем адресам получателей
3 Преобразует адреса в каноническую форму
4 Преобразует внутренние адреса во внешние
kj Применяется к локальным адресам, у которых нет псевдонимов

Как уже отмечалось в разделе, описывавшем работу R -строки, может организовываться специальный набор правил, который начинается строкой check. Такими наборами правил идентифицируются те сообщения, которые будут либо отвергаться, либо пересылаться почтовым программам как ошибочные для уничтожения. На рис. 10.1 представлен типичный маршрут, по которому проходит сообщение при стандартной конфигурации наборов правил.

Схема взаимодействия наборов правил sendmail

Рис. 10.1. Схема взаимодействия наборов правил sendmail

Как видно из рис. 10.1, все сообщения сначала проходят через набор правил номер 3. В этом наборе правил происходит "очистка" адресов посредством их преобразования в канонические. После обработки набором правил 3 производится обработка сообщения набором правил 0. Здесь из адреса извлекаются имя почтовой программы, имя хоста и имя пользователя. Затем сообщение передается соответствующей почтовой программе.