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

Конфигурация sendmail (файл sendmail.Cf)

Действия sendmail по обработке заголовков почтовых сообщений и определению способов и путей доставки сообщений определяются конфигурационным файлом /etc/mail/sendmail.cf, имеющим специальный синтаксис. В этом файле описаны служебные макросы (подстановки из одного элемента) и классы (наборы элементов); правила (правила переписывания заголовков и обработки сообщений), сгруппированные в наборы правил; агенты по доставке сообщений и др.

Файл sendmail.cf можно рассматривать как программу по обработке почтового сообщения на основании заголовков этого сообщения (преимущественно адресов отправителя и получателя). Центральными элементами этой программы являются правила, играющие роль операторов ветвления и цикла, и наборы правил, играющие роль функций. Макросы и классы приблизительно соответствуют переменным и массивам. Реультатом работы этой "программы" для каждого почтового сообщения являются сформированные (возможно, измененные) заголовки сообщения (особенно это касается заголовков "From:" и "To:") и выбор агента доставки.

Также в конфигурационном файле содержатся определения имеющихся в системе агентов доставки и опции, определяющие те или иные аспекты работы sendmail. (Опции описаны в литературе.)

Каждая запись начинается с однобуквенной метки-идентификатора типа записи (D,C,R,S,M,O и др.).

Макросы и классы

Макросы

D - определить макрос, т.е. подстановку. Например,

DUmaria.vvsu.ru

После D непосредственно следует имя макроса (один символ; в данном случае - U; строчные и прописные буквы различаются), за которым непосредственно следует значение макроса (последовательность символов; в данном случае - maria.vvsu.ru). В последних версиях sendmail (начиная с 8.7) имя макроса может состоять из нескольких символов; в этом случае оно берется в фигурные скобки:

D{cool_host}maria.vvsu.ru

Подстановка значения макроса производится с помощью знака доллара, например: "mail.$U." и "mail.${cool_host}." оба преобразуются в "mail.maria.vvsu.ru.". Подстановка значений производится при считывании конфигурационного файла программой при ее запуске (аналогично препроцессору Си).

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

  • $m - домен DNS, в котором находится данный хост;

  • $w - короткое имя хоста (без домена);

  • $j - каноническое имя DNS данного хоста (фактически, Dj$w.$m - если sendmail не может определить $j автоматически, это делается в конфигурационном файле);

  • $d - текущая дата и время (в формате вывода команды date);

  • $S - "smart host" - имя хоста, на который отправляется вся почта, которую данных хост не может доставить; используется при конфигурировании пользовательских хостов, не являющихся mail-серверами;

  • $&{client_name} - доменное имя SMTP-клиента, подсоединившегося в настоящий момент; если DNS не может преобразовать адрес в имя, то - IP-адрес клиента, взятый в квадратные скобки; амперсанд после '$' обозначает, что значение макроса подставляется в момент разбора правила, в котором он встречается, а не при считывании конфигурационного файла.

  • $&{client_addr} - IP-адрес SMTP-клиента, подсоединившегося в настоящий момент.

Классы

C - определить класс, то есть набор значений, например,

Cwlocalhost mail.vvsu.ru vvsu.ru

После С непосредственно следует имя класса (один символ; в данном случае - w; строчные и прописные буквы различаются), за которым непосредственно следует первое значение из класса (последовательность символов; в данном случае - localhost), далее, разделенные пробелами, - остальные значения. В последних версиях sendmail (начиная с 8.7) имя класса может состоять из нескольких символов; в этом случае оно берется в фигурные скобки.

Значения класса могут быть считаны из файла. Директива

FU /etc/mail/file

берет значения класса U из файла /etc/mail/file. Значения в файле располагаются по одному на строку; комментариев нет.

Отдельные классы трактуются заранее предопределенным образом; самый важный - класс w, содержащий список имен, которые sendmail, встретив их в доменной части почтового адреса, должен считать локальными, т.е. "своими". Сообщения, приходящие на такие адреса, не перенаправляются куда-либо дальше, а передаются одному из локальных агентов доставки. Класс w заполняется автоматически при старте sendmail всеми именами, псевдонимами и IP-адресами данного хоста, которые удалось обнаружить в DNS и файле /etc/hosts. Дополнительные значения могут быть добавлены в конфигурационном файле.

Примеры других классов с предопределенным значением см. в литературе.