Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
net_tech / Лабораторнаработа 5 (E-mail).doc
Скачиваний:
19
Добавлен:
10.12.2013
Размер:
269.82 Кб
Скачать

Правила выбора агентов доставки

Особый тип правил - это правила выбора агентов доставки: на основании совпадения рабочего пространства с шаблоном в левой части правила производится выбор агента доставки, указанного в правой части. Вследствие этого структура правой части отличается от рассмотренной выше. Пример такого правила:

R$* < @ $* > $* $#smtp $@ $2 $: $1 < @ $2 > $3

Правило означает, что для доставки сообщений по адресам типа somebox@somehost нужно вызвать агент доставки smtp (об определении агентов см. ниже в этом пункте). Имя агента следует за оператором $#. Операторы $@ и $: имеют специальные значения. После $@ следует почтовый домен адресата; значение этого параметра записывается в макрос h, который может быть использован в определении агента доставки (см. ниже). После $: следует имя пользователя (для локальных агентов) или, в общем случае, адрес получателя (он будет аргументом команды "rcpt to" SMTP-диалога); значение этого параметра записывается в макрос u, который также может быть использован в определении агента доставки.

Другой пример (выбор локального агента, если адрес состоит из одного слова - очевидно, это просто имя пользователя в системе):

R$- $#local $:$1

После срабатывания правила выбора агента доставки производится выход из текущего набора правил; при этом результатом работы набора правил является выбор агента доставки.

Каждый агент доставки должен быть определен (зарегистрирован) где-либо в конфигурационном файле с помощью директивы М.

M - описать агент доставки

Мимя_агента, параметр=значение, параметр=значение, ...

Примеры:

Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990, A=IPC $h

Mlocal, P=/bin/mail/local, F=lsDFMrmn, S=10, R=20/40, A=mail -d $u

Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=20, A=sh -c $u

# prog осуществляет доставку сообщения путем запуска программы, определяемой макросом $u

Параметры:

P= указывает путь к программе агента доставки ([IPC] - встроенный в sendmail модуль smtp). Текст сообщения со всеми загловками подается на стандартный ввод этой программы.

F= флаги, дающие sendmail информацию о программе доставки, например, флаг m означает, что агент может работать с несколькими получателями, D - в заголовке требуется поле Date. Полный список флагов см. в литературе.

S=, R= указывают наборы правил для окончательного (last-minute) преобразования адресов отправителя (S) и получателя (R). В случае двух номеров, указанных через дробь, первый применяется к преобразованию адреса в конверте, второй - к адресу в заголовке. Этих наборы правил предназначены для внесения пользовательских изменений.

E= символ(ы) конца строки.

L= максимальная длина строки сообщения.

U= пользователь, от имени которого будет запущен агент.

A= аргументы командной строки программы агента доставки, начиная с нулевого (имени программы).

Параметры P= и A= являются обязательными. Из агентов обязательно должны быть определены агенты local и prog.

Существует также встроенный агент доставки error, который явно не определяется. Выбор этого агента производится в наборах правил, осуществляющих какой-либо контроль или фильтрацию сообщений, для отказа в обработке сообщения (см. "Специальные наборы правил (check_...)"). Правая часть такого правила выглядит:

R... $#error $@ 5.1.8 $: "We do not want to relay your letters"

За в этом случае $@ следует код ошибки (5.1.2 - плохой адрес получателя, 5.1.8 - плохой адрес отправителя), за $: следует текстовый комментарий ситуации.