Файл конфигурации программы Sendmail
Программа Sendmail — это наиболее распространенный MTA. Несмотря на солидный возраст, эта программа до сих пор устанавливает стандарт работы MTA и обладает исключительно широкими возможностями.
Основной файл конфигурации программы Sendmail — sendmail.cf.
В GNU/Linux файлы конфигурации Sendmail располагают в каталоге /etc/mail.
В файле конфигурации sendmail.cf определяются правила обработки почты. В нем могут быть определены классы (classes), макросы (macros) и опции (options):
r классы определяют общие фразы, которые используются для задания на- боров правил обработки для сообщений определенного типа;
r макросы представляют собой наборы значений для упрощения набора длинных строк текста в файле конфигурации;
r опции представляют собой набор параметров для обеспечения работы
Sendmail.
Каждая строка конфигурационного файла sendmail.cf начинается с одиночно- го символа, определяющего действие, которое должно быть выполнено. Строки комментариев начинаются с символа #.
Используются следующие виды строк конфигурации sendmail.cf:
r C — определяет класс;
r D — определяет макрос;
r F — определяет имя файла, содержащего классы;
r H — определяет поля заголовка в посланиях и действия с ними;
r K — определяет базы данных;
r M — определяет почтовые хосты;
r O — определяет опции Sendmail;
r P — определяет приоритеты;
r R — определяет наборы правил для обработки адресов;
r S — определяет группы наборов правил.
Например, определение имени почтового узла, называемого Smart Host, через который осуществляется ретрансляция всей исходящей почты, делается с помощью макроса в файле sendmail.cf (пример 29.2).
Пример 29.2. Настройка Smart Host |
DSmailrelay.provider.ru
В этом примере в файл настроек Sendmail занесена настройка, вынуждающая его посылать для дальнейшей отправки всю исходящую почту на узел mailrelay.provider.ru. Это сделано с помощью определения макроса с име- нем S, которому присвоено значение mailrelay.provider.ru.
Имеются заранее определенные макросы. Далее приведены некоторые из них:
r $a — дата отправки из поля Date: заголовка письма;
r $b — текущая дата в формате sendmail;
r $c — число передач письма серверами MTA;
r $d — текущая дата в системном формате UNIX;
r $f — адрес отправителя;
r $h — идентификатор сообщения в очереди;
r $j — полное доменное имя узла;
r $k — доменная часть узла;
r $m — имя процесса демона sendmail;
r $n — PID процесса демона sendmail;
r $p — формат адреса отправителя по умолчанию;
r $r — протокол, используемый для приема сообщения;
r $s — имя хоста отправителя;
r $t — числовое выражение текущего времени;
r $u — получатель сообщения;
r $v — номер версии Sendmail;
r $w — имя хоста, на котором запущен данный экземпляр Sendmail;
r $x — полное имя отправителя;
r $z — рабочий каталог получателя;
r $_ — проверенный адрес отправителя;
r ${bodytype} — тип тела сообщения;
r ${client_addr} — IP-адрес SMTP-клиента;
r ${client_name} — имя хоста SMTP-клиента;
r ${client_port} — номер TCP-порта SMTP-клиента;
r ${opMode} — текущий режим работы (например, отладочный);
r ${deliveryMode} — текущий режим доставки.
Классы C предназначены для группировки критериев, по которым будут вы- бираться пути обработки сообщения. Формат определения класса приведен в примере 29.3.
Пример 29.3. Определение класса |
Ccphrase1 phrase2 ... phraseN
Здесь c — имя класса, а phrase — критерии, которые объединены в класс. Если имя класса многосимвольное, то его следует взять в фигурные скобки. Так, например, для определения класса локальной обработки сообщений с именем w (т. е. сообщений, которые не надо передавать через сеть, а доста- точно поместить в почтовый ящик адресата на этой же машине) следует ис- пользовать директиву Cw (пример 29.4).
Пример 29.4. Определение класса локальных имен |
Cwlocalhost
Классы часто задают с помощью внешних текстовых файлов, а не в конфигура- ционном файле sendmail.cf. Для извлечения значений классов из файлов предна- значены строки конфигурации F. Формат строк F показан в примере 29.5.
Пример 29.5. Определение класса с помощью файла |
Fc filename
Здесь с — имя класса, а filename — имя файла, содержащего определение класса. Имя класса подчиняется тем же правилам, что и в строках C.
Предположим, что сервер SMTP может передавать (relay) почту для несколь- ких доменов, имена которых указывают в файле /etc/mail/relay-domains (при- мер 29.6).
Пример 29.6. Определение доменов, для которых разрешена передача почты |
FR-o /etc/mail/relay-domains
Здесь класс R, задающий имена доменов, для которых разрешена передача почты, определяется с помощью строк в файле /etc/mail/relay-domains.
Помимо задания классов в текстовых файлах широко используются базы данных. Для извлечения значений класса из базы данных предназначены строки K (пример 29.7).
Пример 29.7. Определение класса в базе данных |
Kmapname mapclass arguments
Здесь mapname — имя файла базы данных, mapclass — тип индексирования базы данных (например, hash), а argument — дополнительные аргументы.
Это применяется, например, для предотвращения рассылки несанкциониро- ванных сообщений с помощью файла access.db, разрешающего доступ к MTA (пример 29.8).
Пример 29.8. Включение файла access.db |
Kaccess hash -T<TMPF> -o /etc/mail/access.db
В этом примере определена база данных access, находящаяся в файле
/etc/mail/access.db.
Опции команды sendmail, задаваемые с помощью -o и -O в командной стро- ке, могут быть заданы непосредственно в файле конфигурации sendmail.cf. Для этого используются директивы O. Формат директив O: Oo value или O option=value, где o — односимвольное имя опции, а option — длинное имя опции (пример 29.9).
Пример 29.9. Задание времени ожидания сетевого соединения |
O Timeout.connect=1m
Бóльшую часть файла конфигурации sendmail.cf занимают настройки про- цесса преобразования почтовых адресов, что делается с помощью определе- ний правил разборки R и их наборов S.
Дата добавления: 2015-06-12; просмотров: 882;