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

Установка и конфигурирование sendmail

Как получить sendmail по сети Internet

Пользователи программы sendmail должны постоянно следить за новостями с Web-сервера sendmail.org. Новую версию sendmail всегда можно получить в виде исходного кода с сервера ftp.sendmail.org. Все дистрибутивы sendmail находятся на нем в каталоге /pub/sendmail. Как правило, там всегда можно получить несколько версий sendmail, поэтому внимательно читайте описания версий и комментарии к ним. В то время, когда писалась эта книга, текущей версией была sendmail.8.9.3.tar.gz (а к моменту выхода книги — sendmail.11.0.tar.gz ). Это файл сжатый UNIX-утилитой tar и программой GNU-проекта zip. Имеется также альтернативный файл sendmail.8.9.3.tar.Z, где используется метод компрессии, принятый в UNIX. Скорее всего, пользователи ОС Linux предпочтут получить файл, сжатый программой GNU zip, так как он меньшего размера.

Методы сжатия файлов в ОС Linux

В операционной системе Linux поддерживается несколько методов сжатия файлов. Три наиболее популярных метода сжатия базируются на использовании утилиты сжатия UNIX ( .Z файлы), утилиты GNU gzip (.gz файлы) и утилиты поблочной сортировки сжатых файлов ( .bz2 файлы). Часто файлы дистрибутивов предлагаются сжатыми во всех трех вариантах. Для сокращения времени загрузки по сети пользователи ОС Linux могут получить файл с наименьшим размером. Для извлечения из архивов исходных кодов файлов .Z и .gz достаточно задать команду tar с параметром -z.

После помещения исходного кода в рабочий каталог его можно извлечь с помощью команды:

tar -zxvf sendmail.8.9.3.tar.gz

С помощью этой команды файлы исходного кода извлекаются в базовый подкаталог рабочего каталога с именем sendmail-8.9.3.

Далее из исходного кода необходимо скомпилировать бинарные выполняемые модули. Для этого перейдите в подкаталог sendmail-8.9.3 и выполните в нем команду make all. В поставку sendmail входит подкаталог BuildTools, который активно используется в процессе компиляции. С целью создания бинарных пакетов из различных Makefile применяется файл сценария Build. Этот сценарий определяет, запущена ли система, выдавая команду uname -a и создавая подкаталоги, где содержатся выполняемые модули, на основе значения uname. В системе Mandrake 6.0 с помощью этого сценария создаются каталоги с именами obj.Linux.2.2.9-19mdk.i586.

Для установки созданных выполняемых модулей sendmail в подкаталоге sendmail-8.9.3 воспользуйтесь командой make install. Но прежде убедитесь, что у вас имеются права пользователя root, в противном случае вам не будет дано право поместить файлы в соответствующие каталоги в системе с ОС Linux.

Конфигурирование sendmail

После того как программа sendmail установлена, ее нужно сконфигурировать для работы на конкретном почтовом сервере под управлением ОС Linux с учетом окружения. В "Программа sendmail" , "Программа sendmail", описывается файл конфигурации и его основные параметры. Однако не отчаивайтесь, существует более простой способ конфигурирования sendmail, чем настройка параметров файла конфигурации вручную строчка за строчкой. Для создания небольшого и понятного файла макросов, в котором описываются все параметры sendmail, администраторы почтовых систем могут воспользоваться макропроцессором GNU m4. Измененный файл макросов налагается на базовый файл макросов sendmail, и на его основе с помощью процессора создается файл конфигурации sendmail.cf. В этом разделе рассматриваются вопросы работы с макропроцессором GNU m4 и формат файла макросов, который используется при создании файла конфигурации.

Макропроцессор GNU m4

Для создания файла конфигурации sendmail из набора файлов макросов используется макропроцессор GNU m4. Как только файл макросов считывается на входе, он расширяется и записывается в выходной файл.

Некоторые макроопределения создаются самим процессором m4. Другие макроопределения могут быть определены отдельно и обрабатываться при запуске макропроцессора. Кроме расширения макросов, макропроцессор m4 имеет и другие функции, такие как запуск оболочки командной строки, манипулирование текстом и выполнение арифметических операций с целыми числами. Текущая версия макропроцессора GNU m4 — 1.4, и она поставляется с большинством версий ОС Linux. На рис. 11.2 демонстрируется схема считывания процессором m4 созданного файла макроса и его преобразование в файл конфигурации с применением заранее определенных файлов макросов.

Схема работы макропроцессора GNU m4

Рис. 11.2. Схема работы макропроцессора GNU m4

В начальную конфигурацию sendmail входят файлы макросов m4, в которых определены общие настройки и параметры sendmail. Местоположение начальной конфигурации sendmail может меняться. В Mandrake Linux пакет начальной конфигурации называется sendmail-8.9.3-9mdk.i586.rpm. При его установке в системе создается каталог /usr/lib/sendmail-cf, в который помещаются файлы макросов sendmail. Если же программа sendmail получена с сайта sendmail.org в сети Internet, то файлы макросов конфигурации находятся в подкаталоге cf, который, в свою очередь, расположен в исходном каталоге (для рассматриваемой нами версии это sendmail-8.9.3 ).

Программа sendmail и макропроцессор m4

Не стоит заблуждаться. Файл конфигурации sendmail можно полностью создать и вручную без помощи m4. Однако следует помнить о том, что разработчики sendmail создали этот макропроцессор именно для того, чтобы упростить администраторам систем электронной почты создание файла конфигурации sendmail. В макропроцессоре m4 используются собственные директивы макроязыка, с помощью которых генерируются соответствующие строки файла конфигурации. Изучение директив m4 в этом разделе является альтернативой изучению строк конфигурации sendmail и созданию файла конфигурации вручную. Генерация файла конфигурации с помощью макропроцессора m4 намного проще, чем его создание вручную. Часто для создания полнофункционального файла конфигурации для sendmail нужен небольшой файл макросов. При написании директив для m4 полезно знать настройки и параметры sendmail — это облегчит понимание директив, которые вносятся в файл макросов. Если этот раздел покажется вам непонятным, обратитесь к примерам, приведенным в конце этой лекции. В них достаточно ясно иллюстрируется работа директив m4 при создании файла конфигурации sendmail.

Директивы m4

Макропроцессор m4 считывает исходный файл макросов и на основе заранее определенных директив создает файл конфигурации sendmail. Каждая макродиректива m4 в файле макросов расширяется и преобразуется в раздел конфигурационного файла sendmail. Например, директивой m4:

FEATURE ('virtusertable', 'hash /etc/virtusertable')

в файле конфигурации sendmail создается К' -строка следующего содержания:

#Virtual user table (maps incoming users)
Kvirtuser hash /etc/virtusertable

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

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

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

Будьте внимательны! Макропроцессор m4 чувствителен к регистру задаваемых символов. Перед обработкой файла макросов убедитесь в том, что все директивы заданы в соответствующем регистре, в противном случае они не будут восприняты правильно. Помните также, что во многих директивах начало параметра обозначается символом обратного апострофа ( ` ). Применяйте именно этот символ, а не какой-либо иной. Конец параметра, наоборот, помечается символом апострофа ( ' ). Часто ошибки в этих символах являются причиной неправильной работы файла конфигурации sendmail.

Идентификация нового файла конфигурации

Чаще всего первыми двумя директивами в файлах макросов следуют:

divert (-1)
divert (0)

Директива divert(-1) используется для очистки буфера макросов от данных, оставшихся от предыдущих попыток создания файлов макросов. Директива divert(0) применяется для обозначения начала нового файла макросов.