Конфигурирование программы sendmail
Категория: Электронная почта | Автор: admin | 23-05-2010, 23:27 | Просмотров: 3286

Действиями программы sendmail управляет единственный файл конфигурации sendmail.cf, который располагается в каталоге /etc/mail (ранее — /etc или /usr/lib). В этом файле определяется следующее:

  • выбор агентов доставки,
  • правила подстановки адресов,
  • форматы заголовков почты,
  • опции,
  • меры безопасности,
  • средства защиты от спама.

 

Формат первичного файла конфигурации проектировался таким образом, чтобы файл легко поддавался синтаксическому анализу. По этой причине файл малопонятен пользователям, и его сопровождение — самая серьезная административная задача в области электронной почты.

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

Когда макросы m4 были впервые представлены, показалось, что ими можно будет пользоваться в 80—90% случаев. В действительности этот процент оказался еще выше: порядка 98%. Поэтому мы рассмотрим только конфигурирование средствами m4. Вникать в структуру реального файла конфигурации придется лишь в том случае, если потребуется устранить какую-то серьезную проблему или расширить почтовую систему каким-нибудь необычным способом.

Существует три основных источника, из которых можно почерпнуть подробные сведения о программе sendmail. Это книга "Sendmail" издательства O'Reilly, написанная Брайаном Косталесом и Эриком Оллманом, работа Эрика Оллмана "Sendmail Installation and Operations Guide" (находящаяся в каталоге doc/op дистрибутива) и файл README (в каталоге cf).

 

Конфигурирование с помощью препроцессора m4

 

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

  • домашней Linux-системы студента, который предоставляет услуги хостинга для своих друзей;
  • узла небольшой компании, в которой знают, как правильно конфигурировать программу sendmail;
  • организации, занимающейся Web-хостингом.

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

Макросы m4 имеют следующий вид:

имя(арг1,  арг2,   арг-n)

 

Между именем и открывающей скобкой не должно быть пробела. Для заключения аргументов-строк в кавычки используются левая и правая одиночные кавычки. Отметим, что в m4 правила употребления кавычек отличаются от правил, принятых в других языках, так как для левой и правой кавычек используются разные символы[2]. Допускается вложенное употребление кавычек. Удивительно, как препроцессор m4 с таким экзотическим синтаксисом смог выжить в борьбе с современными компиляторами.

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

Таблица 19.8. Макросы m4, часто применяемые для конфигурирования программы sendmail

Макрос

Назначение

define

Определяет макроконстанту с именем apг1 и значением арг2

undefine

Отменяет предыдущее определение макроконстанты с именем арг1

include

Включает файл с именем арг1

dnl

Отменяет интерпретацию всех символов до следующего символа новой строки включительно

divert

Управляет выходными потоками

 

Некоторые администраторы добавляют макрос dnl в конец каждой строки, чтобы транслированный cf-файл выглядел аккуратнее. Без этого макроса препроцессор m4 добавляет в файл пустые строки. Они не влияют на работу программы sendmail, но делают файл конфигурации трудным для чтения. Мы не включили макросы dnl в наши примеры.

Для программы sendmail требуется препроцессор m4 более новой версии, чем исходная версия 7 компании Bell Labs, входящая в состав UNIX. Большинство версий, поставляемых сейчас, подходит. При возникновении сомнений используйте GNU-версию.

Препроцессор m4 не очень любит комментарии в файлах. Комментарий

# And then define the

 

не выполнит возложенную на него функцию, так как define является ключевым словом препроцессора. В данном случае следует использовать макрос dnl:

dnl # And then define the

 

При этом не забудьте вставить пробел между именем макроса и комментарием.

 

Файлы, необходимые для конфигурирования программы sendmail

 

В дистрибутиве sendmail имеется подкаталог cf, в котором содержится все необходимое для конфигурирования средствами m4, в частности файл README и несколько подкаталогов, перечисленных в табл. 19.9.

Таблица 19.9. Каталоги, содержащие файлы для настройки программы sendmail

Каталог

Содержимое

cf

Примеры mc-файлов (главные конфигурационные файлы)

domain

Примеры m4-файлов для различных доменов в университете Беркли

feature

Фрагменты файлов, иллюстрирующие реализацию различных средств

hack

Специальные средства

m4

Базовый файл конфигурации и другие основные файлы

ostype

Файлы для конкретных операционных систем

mailer

Файлы m4, задающие конфигурацию наиболее распространенных агентов доставки

sh 

Сценарии интерпретатора команд, используемые препроцессором m4

 

Каталог cf/cf содержит примеры mc-файлов, однако их так много, что можно легко запутаться. Мы рекомендуем переместить содержимое каталога cf в каталог cf.examples и создать новый каталог cf для своих локальных mc-файлов. После этого скопируйте в новый каталог сценарии Makefile и Build. Лучше также скопировать все конфигурационные mc-файлы в одно место и не оставлять их в структуре каталогов дистрибутива sendmail. Пути, указанные в сценарии Build, потребуется изменить, если cf-файл будет создаваться на основании mc-файла, не находящегося в иерархии каталогов дистрибутива.

 

Создание файла конфигурации из готового mc-файла

 

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

Этот файл мы поместим в новый каталог cf. Преобразованный (средствами препроцессора m4) файл конфигурации будет называться foo.cf, находиться в этом же каталоге и инсталлироваться в каталог /etc/mail под именем sendmal.cf.

Существует ряд шаблонов, которые должны присутствовать в каждом новом -файле:

 

divert(-1)

#### базовый mc-file для узла foo.com

divert(0)

VERSIONID($Id$')

 

 

Если в начале файла есть комментарии, то первая строка должна иметь такой вид:

divert(-1)

 

Данная инструкция будет отсеивать всю ненужную информацию в выходном потоке m4. После нее могут располагаться комментарии (начинаются символом '#'), дополняемые другой инструкцией divert. Стандартная часть файла завершается макросом VERSIONID (здесь используется формат RCS). Эта директива подробно рассматривается в следующем параграфе.

В большинстве случаев файл конфигурации заканчивается заданием системно-зависимых параметров (макрос OSTYPE) и агентов доставки (макрос MAILER):

 

OSTYPE('linux’)

define ('confCOPY_ERRORS_TO',   'postmaster’)

MAILER (‘local')

MAILER (‘smtp')

 

 

Кроме того, здесь устанавливается опция confCOPY_ERRORS_TO, определяющая, что копии заголовков всех сообщений, которые отправить не удается, будут посланы локальному администратору электронной почты. Это позволит ему вмешиваться в процесс функционирования почты при возникновении проблем локального масштаба.

Для построения файла конфигурации необходимо вызвать сценарий Build, который мы скопировали в новый каталог cf:

# ./Build foo.cf

 

Наконец, следует инсталлировать файл foo.cf в нужное место. Обычно он превращается в файл /etc/mail/sendmail.cf, однако некоторые поставщики систем придерживаются других правил. Любимые их тайники — каталоги /etc и /usr/lib.

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

Даже сейчас, когда процесс конфигурирования программы sendmail значительно упростился, некоторые решения о том, какой должна быть конфигурация почтовой системы, придется принимать самостоятельно. Читая материал о возможностях этой программы, подумайте о том, как эти возможности "впишутся" в структуру вашей организации. В небольшой организации, скорее всего, будет только узел-концентратор и несколько одиночных узлов, поэтому понадобятся всего две версии файла конфигурации. В более крупной организации, очевидно, потребуются отдельные концентраторы для входящей и исходящей почты и, может быть, сервер POP/IMAP.

Независимо от сложности структуры почтовой системы и от того, в каком виде (открытом, за брандмауэром или в виде виртуальной частной сети) она представлена внешнему миру, в каталоге cf всегда найдутся готовые фрагменты файла конфигурации, в которые требуется внести лишь незначительные изменения, и они будут готовы к использованию.


 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page