Опубликован: 21.11.2006 | Уровень: специалист | Доступ: платный
Лекция 11:

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

Включение других файлов макросов

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

include ('/usr/lib/sendmail-cf/m4/cf.m4')dnl

Благодаря служебному слову dnl в конце директивы include макропроцессор определяет конец строки. Поскольку макропроцесоор m4 является программой, обрабатывающей непрерывный поток данных, то он не распознает символы конца строки. Для сокращения генерации пустых строк в конечном файле конфигурации и используется специальная метка dnl, которая указывает на конец директивы.

Определение параметров операционной системы

Директива: OSTYPE

В файле макросов обязательно должна присутствовать директива OSTYPE. Благодаря ей, в зависимости от типа операционной системы, макропроцессор m4 определяет местоположение выполняемых и конфигурационных файлов. Формат этой директивы следующий:

OSTYPE ('os')dnl

Здесь os — название операционной системы, в которой работает программа sendmail. Поскольку эта книга ориентирована на почтовые серверы под управлением ОС Linux, то здесь следует указать linux OSTYPE. Объявление OSTYPE распространяется на весь файл макросов с переменными, заданными m4. Когда директиве задается тип операционной системы linux, то в файл макросов автоматически включается файл linux.m4. В листинге 11.2 представлена версия файла linux.m4 для операционной системы Mandrake Linux 6.0.

1 divert (-1)
2 #
3 # Copyright (c) 1998 sendmail, Inc. All rights reserved.
4 # Copyright (c) 1983 Eric P. Allman. All rights reserved.
5 # Copyright (c) 1988, 1993
6 # The Regents of the University of California. All rights reserved.
7 #
8 # By using this file, you agree to the terms and conditions set
9 # forth in the LICENSE file which can be found at the top level of
10 # the sendmail distribution.
11 #
12 #
13
14 divert(0)
15 VERSIONID('@(#)linux.m4 8.7 (Berkeley) 5/19/1998')
16 define('PROCMAIL_MAILER_PATH','/usr/bin/procmail')dnl
17 # define('LOCAL_MAILER_FLAGS', 'ShPfn')dnl
18 # define('LOCAL_MAILER_ARGS', 'procmail -a $h -d $u')dnl
19 define ('STATUS_FILE', '/var/log/sendmail.st')dnl
Листинг 11.2. Файл макросов linux.m4

В строках 16–19 листинга 11.2 переопределяется местоположение выполняемого файла procmail и файла статистики sendmail.st для данной версии ОС Linux. Все эти настройки будут впоследствии отражены в файле конфигурации sendmail.cf. Путь к выполняемому файлу procmail задается в описании почтовой программы procmail, а путь к файлу статистики задается параметром STATUS_FILE. Далее в этом разделе мы более подробно рассмотрим работу директивы define.

Определение способов обработки сообщений

Директива: DOMAIN

Для определения специальных методов обработки сообщений применяется директива DOMAIN. В табл. 11.1 представлены значения, которые могут быть использованы с этой директивой.

Таблица 11.1. Значения директивы DOMAIN
Значение Описание
BITNET_RELAY Хост будет принимать почту, адресованную в BITNET
DECNET_RELAY Хост будет принимать почту, адресованную в DECNET
FAX_RELAY Хост будет принимать почту, адресованную псевдо-домену .FAX
LUSER_RELAY Хост будет обрабатывать адреса, которые принадлежат локальным пользователям
UUCP_RELAY Хост будет принимать почту, адресованную в UUCP

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

DOMAIN (relay, 'mailer:hostname'),

где relay — одно из значений представленных в табл. 11.1, mailer — почтовая программа, которая используется для доставки сообщений, а hostname — имя удаленного хоста, на который передаются сообщения.

Определение параметров sendmail

Директива: FEATURE

С помощью директивы FEATURE заранее заданные параметры sendmail посредством макропроцессора m4 заносятся в файл конфигурации sendmail, сводя к минимуму действия со стороны администратора почтовой системы. Формат директивы FEATURE следующий:

FEATURE ('value', '[options]'),

где value — значение параметра, который включается в файл конфигурации, а options — параметры, необходимые для работы директивы. В этом разделе дается описание параметров, доступных в sendmail версии 8.9.3.

accept_unqualified_senders

Параметр accept_unqualified_senders разрешает программе sendmail принимать сообщения, в поле заголовка FROM: которых отсутствует полное имя хоста. Это может понадобиться в том случае, если локальная почтовая программа посылает сообщения без добавления имени локального хоста в поле FROM:.

accept_unresolvable_domains

С помощью параметра accept_unresolvable_domains программа sendmail может принимать даже те сообщения, в поле заголовка FROM: которых указаны адреса с ошибками в именах домена. Как правило, sendmail проверяет корректность доменных имен, полученных из поля FROM: заголовка сообщения формата RFC822. Если имя домена невозможно идентифицировать, то sendmail не принимает такое сообщение. Если же ваш почтовый шлюз не может обрабатывать запросы системы DNS на преобразование доменных имен, то, возможно, придется воспользоваться этим параметром, чтобы программа sendmail принимала сообщения даже от "неправильных", с точки зрения DNS, доменов.

access_db

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

По умолчанию с помощью параметра access_db создается хешированная база данных типа Berkeley. При этом сама база данных помещается в каталог /etc/mail/access. Значения в базе данных, заданные по умолчанию, могут изменяться с помощью параметров в формате:

FEATURE ('access_db', 'db [options]'),

где db — тип базы данных, а options — параметры, необходимые для создания базы данных. Например, база данных по умолчанию может быть создана с помощью следующей директивы:

FEATURE ('access_db', 'hash -o /etc/mail/access')

Согласно этой директиве, создается хешированная база данных в каталоге /etc/mail/access. Так как в ней задан тип базы данных 'hash', то для создания базы данных из текстового файла в ОС Linux необходимо использовать специальную функцию makemap. В текстовом файле содержится список доменных имен либо IP-адресов и действий над ними. Местоположение всех файлов должно быть явно определено — так же, как и все действия, которые будут совершаться программой sendmail. В табл. 11.2 представлен список ярлыков, которые применяются в базе данных разрешения доступа.

Таблица 11.2. Ярлыки базы данных разрешения доступа
Ярлык Описание
OK Принимать почту, даже если другими правилами предусмотрено обратное
RELAY Принимать или передавать почту только для указанных доменов
REJECT Отвергать все сообщения с заданными отправителями или получателями с выдачей сообщения об ошибке
DISCARD Отвергать все сообщения с заданными отправителями или получателями без выдачи сообщения об ошибке
nnn text Отвергать все сообщения с заданными отправителями или получателями с выдачей сообщения об ошибке в формате RFC821 с номером nnn и текстом text

В листинге 11.3 приведен пример текстового файла базы данных разрешения доступа, который применяется для блокирования почты от определенных узлов.

1 spammer@ispmail.net REJECT
2 microsoft.com DISCARD
3 linux.org OK
4 smallorg.org RELAY
5 198.162.10 550 Sorry, I can't relay mail for your domain
Листинг 11.3. Пример текстового файла базы данных разрешения доступа

В строке 1 листинга 11.3 показано, что все сообщения, полученные или направленные на адрес spammer@ispmail.net, будут отвергнуты. В строке 2 определяется, что все сообщения, полученные или отправленные в домен microsoft.com, будут уничтожены и ни одна из сторон не получит даже сообщения об ошибке. В строке 3 задается, что все сообщения, полученные от любого пользователя из домена linux.org, будут приняты почтовым сервером. Строка 4 разрешает почтовому серверу выступать в качестве транзитного узла для поддоменов данного домена. А строка 5 является примером использования access_db для блокирования почты, поступающей от определенных IP-сетей, с выдачей определенного сообщения об ошибке.

Для того чтобы создать базу данных разрешения доступа из файла access.txt, задайте команду:

makemap hash /etc/mail/access < /etc/mail/access.txt

В ОС Linux утилита makemap создает хешированную базу данных из текстового файла, к которой затем сможет обращаться программа sendmail.

Valentin Diduk
Valentin Diduk
Украина, одесса, кпи, 2010
Евгений Олабин
Евгений Олабин
Беларусь, Гродно