Дистрибутив sendmail включает несколько примеров файла настройки. В главе 10 содержится пример создания файла настройки для системы Linux на основе файла tcpproto.mc. Файл прототипа - это файл макроопределений ш4, результатом обработки которого является пригодный к использованию файл sendmail.cf. Файлы прототипов хранятся в каталоге sendmail/cf/cf дистрибутива sendmail. Используйте эти прототипы в качестве примеров разумных настроек sendmail.

Все файлы настройки sendmail состоят из следующих макроопределений Ш4:

divert

Перенаправляет вывод процесса m4. dnl

Удаляет все символы до следующей новой строки.

VERSIONID

Определяет номер версии исходного файла .тс . Обычно для этой дели используются номера версий RCS или SCCS. Данная команда является необязательной.

OSTYPE

Указывает исходный файл ш4, содержащий информацию, специфичную для используемой операционной системы. Данное макроопределение является обязательным.

DOMAIN

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

L0CAL_D0MAIN

Определяет псевдонимы данного сервера.

CANONIFY_DOMAIN

Указывает домены, которые должны подвергаться преобразованию в канонический формат, даже если канонизация отключена.

CANONIFY_DOMAIN_FILE

Указывает файл, содержащий список доменов, которые должны подвергаться преобразованию в канонический формат, даже если канонизация отключена.

GENERICS_DOMAIN

Определяет доменные имена, которые должны обрабатываться с использованием базы данных genericstable.

GENERICS_DOMAIN_FILE

Указывает файл, содержащий список доменных имен, которые должны обрабатываться с использованием базы данных genericstable.

LDAPROUTE_DOMAIN

Определяет домены, маршрутизация для которых должна осуществляться в соответствии с указаниями из каталога LDAP.

LDAPROUTE_DOMAIN_FILE

Указывает файл, содержащий список доменов, маршрутизация для которых должна осуществляться в соответствии с указаниями из каталога LDAP.


RELAY_DOMAIN

Определяет домены, для которых данный сервер должен осуществлять пересылку почты.

RELAY_DOMAIN_FILE

Указывает файл, содержащий список доменов, для которых данный сервер должен осуществлять пересылку почты.

VIRTUSER_DOMAIN

Определяет виртуальные домены, которые должны обрабатываться с использованием virtusertable.

VIRTUSER_DOMAIN_FILE

Указывает файл, содержащий список доменов, которые должны обрабатываться с использованием virtusertable.

FEATURE

Указывает исходный файл т4, содержащий определение необязательных возможностей sendmail. Для обработки исходного файла .тс данное макроопределение не требуется, однако во многих файлах настройки присутствует большое число записей FEATURE.

MASQUERADE_AS

Определяет доменное имя, используемое для сокрытия имени сервера в исходящей почте.

MASQUERADE_DOMAIN

Определяет домены, для которых следует выполнять сокрытие.

MASQUERADE_DOMAIN_FILE

Указывает файл, содержащий список доменов, для которых должно выполняться сокрытие.

MASQUERADE_EXCEPTION

Определяет узел, для которого не должно выполняться сокрытие, даже если оно выполняется для всего домена.

EXPOSEDJJSER

Определяет имена пользователей, исключающие сокрытие. Если адрес содержит одно из перечисленных имен, сокрытие узла в адресе не выполняется.

HACK

Указывает исходный файл ш4, содержащий специфичную для сервера информацию настройки. Это временные настройки, исправляющие временные проблемы. Использование HACK не приветствуется.

SITE

Указывает узел UUCP с локальным подключением.

SITECONFIG

Указывает исходный файл, содержащий команды m4 SITE, определяющие площадки UUCP, подключенные к данному узлу. Формат команды: SITECONFIG (файл, локальное имя узла, класс); имена узлов UUCP добавляются из файла в класс.

UUCPSMTP

Отображает имя узла UUCP в имя узла Интернета.

define

Определяет локальное значение. Большинство «определений» содержится в исходных файлах гп4, включаемых файлом .тс, а не в самом файле .тс. Определять можно значения для макроопределений и параметров sendmail.cf либо другие команды.


undefine

Снимает значение, установленное для параметра настройки.

MAILER

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

MAILER_DEFINITIONS

Открывает раздел команд sendmail.cf, определяющих пользовательскую почтовую программу.

MODIFY_MAILER_FLAGS

Переопределяет флаги, определенные для почтовой программы.

MAIL_FILTER

Определяет почтовый фильтр.

INPUT_MAIL_FILTER

Определяет почтовый фильтр и переменные, необходимые для вызова фильтра.

DAEM0N_0PTI0NS

Определяет параметры работы демона sendmail.

TRUST_AUTH_MECH

Определяет список доверенных механизмов авторизации.

LOCAL_RULE_n

Открывает раздел кода, добавляемого к набору правил л, где л - число О, 1, 2 или 3. Код, следующий за командой LOCAL_RULE_n, состоит из стандартных правил подстановки sendmail.cf.

Команда LOCAL_RULE_n ис-пользуется редко.

LOCA L_R U L ES ETS

Открывает раздел кода, определяющий пользовательский набор правил.

LOCALJJSER

Определяет имена пользователей, для которых не должна выполняться пересылка, даже когда она выполняется для локальной почты.

LOCAL_NET_CONFIG

Открывает раздел кода sendmail.cf, определяющего, как обрабатывается почта, предназначенная локальному узлу.

L0CAL_C0NFIG

Открывает раздел кода, добавляемого в файл sendmail.cf после раздела локальной информации и перед правилами подстановки. Данный раздел кода содержит стандартные команды настройки sendmail.cf. Данное макроопределение редко используется.

Описанные выше встроенные команды т4 - а именно те, что обозначены строчными буквами - делятся на два вида: управляющие выводом и устанавливающие значения макроопределений. Выводом управляют команды dnl и divert. Текст, следующий за командой dnl, не попадает в файл вывода.


Эта команда используется в начале строки комментария. Команда divert (-1) направляет вывод в «никуда» и отмечает начало блока комментариев. Команда divert(O) направляет вывод в стандартный поток результатов ш4. В дополнение к -1 и 0 команда divert принимает девять других численных аргументов: значения от 1 до 9. Эти другие значения используются в исходном тексте макроопределений т4 для записи данных в различные части файла sendmail.cf. В собственных настройках вы не будете использовать эти значения. Вместо этого вы будете использовать другие команды для записи данных в определенные части файла sendmail.cf.

Команды LOCAL CONFIG, LOCAL_USER, LOCALRULESETS, MAILER_ DEFINITION, LOCAL NET CONFIG и LOCAL RULE позволяют записывать данные в различные части файла sendmail.cf, не задействуй напрямую различные значения divert. Команды вроде LOCAL_CONFIG и MAILER DEFINITION отмечают начало фрагментов кода sendmail.cf, который должен включаться в ту или иную часть конечного файла. Эти команды позволяют изменять файл sendmail.cf всеми возможными способами.

Встроенные команды ш4, define и undefine, устанавливают значения макроопределений. define инициализирует переменную значением, undefine сбрасывает переменную в значение по умолчанию. Команда define позволяет контролировать больше параметров настройки, чем любая другая, и, как следствие, большая часть этого приложения отведена под описание параметров define.

Около половины макроопределений т4 действуют подобно команде define -просто устанавливают значения параметров. Примеры таких команд: MAS-QUERADE AS, MASQUER ADE_ DOMAIN, RELAYDOMAIN и VIRTU-SERDOMAINFILE.

TRUST_AUTH_MECH - хороший пример макроопределения, дополняющего define. Как вы увидите в разделе «define» данного приложения, параметр confAUTH_MECHANISMS может использоваться для определения доверенных механизмов аутентификации, о которых ваш сервер сообщает другим серверам. Макроопределение TRUST AUTH МЕСН имеет обратный смысл, оно указывает механизмы других серверов, с которыми готов работать ваш сервер. Для настройки TRUST AUTH MECHANISMS используется тот же список ключевых слов, что и для настройки confAUTH_MECHANISMS (см. раздел «define»).


Имена макроопределений OSTYPE, DOMAIN, FEATURE, MAILER, HACK и SITECONFIG соответствуют именам подкаталогов каталога cf. Значения этих макроопределений соответствуют именам файлов из каталогов. К примеру, команда FEATURE(nouucp) предписывает т4 загрузить файл поииср.т4 из каталога ostype и обработать его содержимое (код т4). Исходные файлы .т4 для команд OSTYPE, DOMAIN, FEATURE и MAILER состоят преимущественно из команд define и FEATURE.

Еще два макроопределения, SITECONFIG и HACK, используются редко. SITECONFIG указывает исходный файл, содержащий макроопределения SITE, обозначающий системы UUCP, подключенные к локальному узлу. Создав самостоятельно файл, содержащий макроопределения SITE, вы должны подключить его при помощи команды SITECONFIG. Эти команды, наряду с UUCPSMTP, вышли из употребления и сохраняются только из соображений обратной совместимости.

Макроопределение HACK указывает исходный файл ш4, содержащий временные, специфичные для данной системы поправки на проблемы sendmail. Администратор создает файл в каталоге hack и подключает его к настройкам при помощи команды HACK. Использование этого метода не приветствуется и обычно не требуется.

В следующем разделе содержится дополнительная информация о макроопределениях OSTYPE, DOMAIN, FEATURE и MAILER, а также сведения о различных командах, используемых для создания соответствующих этим макроопределениям исходных файлов ш4. Пример создания частного варианта исходного файла макроопределений DOMAIN содержится в главе 10.

Исходные файлы могут содержать любые макроопределения из уже упомянутых, а также дополнительные, речь о которых пойдет далее. Файл макроопределений настройки {.тс) также может содержать любую из описанных ниже команд. По сути дела, практически любое макроопределение может фигурировать в любом из файлов.

Чтобы некоторым образом упорядочить хаос, команды сгруппированы по файлам, в которых наиболее вероятно их присутствие. Подобная организация описаний существует и в документации из дистрибутива sendmail. Запомните, что на практике файлы могут иметь иную структуру. Мы начнем с изучения макроопределений define и FEATURE, базовых строительных блоков всех прочих файлов.