Библиотека сайта rus-linux.net
Файлы sendmail.cf и sendmail.mc
Макропроцессор m4 генерирует файл
sendmail.df
, когда обрабатывает макрофайл
конфигурации, созданный локальным администратором системы. Обычно он
называется sendmail.mc
.
Процесс конфигурации, в основном, вопрос создания подходящего файла
sendmail.mc
, который включает макрокоманды,
описывающие желательную конфигурацию. Макрокоманды представляют собой
выражения, которые макропроцессор m4 понимает и
разворачивает в синтаксис файла sendmail.cf
.
Макровыражения составлены из макроимени (текст в заглавных буквах в начале),
которое может быть уподоблено функции в языках программирования, и некоторых
параметров (текст внутри скобок), которые используются в расширении.
Параметры могут быть переданы буквально в генерируемый файл
sendmail.cf
или использоваться, чтобы управлять
путем, которым происходит обработка данной макрокоманды в подготовленном
файле sendmail.mc
.
Файл sendmail.mc
для минимальной конфигурации
(UUCP или SMTP со всей нелокальной почтой, передаваемой на непосредственно
связанный интеллектуальный хост (smart host), может быть длиной всего в 10
или 15 строк, исключая комментарии.
Два примера файла sendmail.mc
Если Вы администратор нескольких различных почтовых хостов, не стоит
называть Ваш файл конфигурации sendmail.mc
. Вместо
этого общей традицией является называть файл именем хоста, например,
vstout.m4
. Имя действительно не имеет значения,
пока вывод назван sendmail.cf
. Обеспечение
уникального имени файла конфигурации для каждого хоста позволяет хранить все
файлы конфигурации в одном и том же каталоге. Рассмотрим два примера файлов.
Большинство конфигураций sendmail сегодня использует только SMTP. Очень просто сконфигурировать sendmail для SMTP. Пример 18-1 ожидает, что сервер DNS будет доступен и будет пытаться принимать и доставлять всю почту для хостов, используя только SMTP.
Пример 18-1. Образец файла настройки vstout.smtp.m4
divert(-1) # # Sample configuration file for vstout - smtp only # divert(0) VERSIONID(`@(#)sendmail.mc 8.7 (Linux) 3/5/96') OSTYPE(`linux') # # Include support for the local and smtp mail transport protocols. MAILER(`local') MAILER(`smtp') # FEATURE(rbl) FEATURE(access_db) # end |
Файл sendmail.mc
для
vstout показан в
примере 18-2. Машина
vstout использует SMTP, чтобы общаться со
всеми хостами в LAN. Кроме того, конфигурация для
vstout посылает всю почту для других
адресатов на межсетевой почтовый хост moria
по протоколу UUCP
Пример 18-2. Образец файла настройки vstout.uucpsmtp.m4
divert(-1) # # Sample configuration file for vstout # divert(0) VERSIONID(`@(#)sendmail.mc 8.7 (Linux) 3/5/96') OSTYPE(`linux') dnl # moria is our smart host, using the "uucp-new" transport. define(`SMART_HOST', `uucp-new:moria') dnl # Support the local, smtp and uucp mail transport protocols. MAILER(`local') MAILER(`smtp') MAILER(`uucp') LOCAL_NET_CONFIG # This rule ensures that all local mail is delivered using the # smtp transport, everything else will go via the smart host. R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3 dnl # FEATURE(rbl) FEATURE(access_db) # end |
Если Вы сравните две конфигурации, вполне сможете понять, что делает каждый из параметров конфигурации. Рассмотрим их более детально.
Обычно используемые параметры sendmail.mc
Несколько элементов в файле sendmail.mc
требуются всегда. Другие могут игнорироваться, если Вы можете избежать
неприятностей со значениями по умолчанию. Общая последовательность
определений в файле sendmail.mc
такая:
- VERSIONID
- OSTYPE
- DOMAIN
- FEATURE
- Local macro definitions
- MAILER
- LOCAL_* rulesets
Комментарии (Comments)
Строки в sendmail.mc
, которые начинаются с
#
, не обрабатываются m4 и
будут по умолчанию выводиться непосредственно в файл
sendmail.cf
. Это полезно, если Вы хотите
комментировать, что Ваша конфигурация делает.
Допустимы комментарии в sendmail.mc
, которые
не попадут в файл
sendmail.cf
: Вы можете использовать лексемы
m4 divert и
dnl. Команда
divert(-1) прекратит весь вывод,
divert(0) восстановит его к значению по
умолчанию. Любой вывод, сгенерированный строками между ними будет отброшен. В
нашем примере, мы использовали этот механизм для создания комментария,
который появляется только в файле sendmail.mc
.
Чтобы достичь того же самого результата для одной строки, можно использовать
команду dnl, которая означает, буквально,
"удаление всех символов следующей строки и перевод на новую строку". Я также
использовал это в примере.
Это стандартные свойства m4, и Вы можете получить больше информации относительно их из man-страницы.
VERSIONID и OSTYPE
VERSIONID(`@(#)sendmail.mc 8.9 (Linux) 01/10/98') |
VERSIONID
факультативная, но полезно
записать версию конфигурации sendmail в файл
sendmail.cf
. Так что Вы будете часто сталкиваться с
этим. В любом случае убедитесь в наличии:
OSTYPE(`linux') |
OSTYPE
заставляет включить файл определений, которые
являются хорошими значениями по умолчанию для Вашей операционной системы.
Большинство определений в файле OSTYPE
устанавливают
имена различных файлов конфигурации, имена разных служебных каталогов и имя
почтовой программы. Стандартный комплект исходных кодов sendmail включает
такой файл для Linux. Многие дистрибутивы Linux, особенно Debian, имеют
собственный файл определения, который является полностью совместимым с
Linux-FHS. При наличии такого файла следует использовать именно его, а не
поставляемую в комплекте с sendmail
версию.Определение OSTYPE должно располагаться
поближе к началу файла sendmail.mc
, так как много
других определений зависят от него.
DOMAIN
Макрокоманда DOMAIN полезна, когда Вы желаете конфигурировать большое количество машин одним способом.
Стандартная установка имеет каталог шаблонов макрокоманд
m4, используемых, чтобы управлять процессом
конфигурации. Этот каталог обычно называется
/usr/share/sendmail.cf
. Здесь Вы найдете
подкаталог, названный domain
, содержащий
проблемно-зависимые шаблоны конфигурации. Для использования определения
DOMAIN, надо создать свой файл, содержащий
стандартные определения для соответствующего домена, и вписать его в каталог
domain
.
Пакет исходных кодов sendmail приходит с рядом типовых файлов макрокоманд domain, которые Вы можете использовать как примеры при построении своего.
/usr/share/sendmail.cf/domain/vbrew.m4
, надо
включить в файл sendmail.mc
определение:
DOMAIN(`vbrew') |
FEATURE
Макрокоманда FEATURE позволяет включить
предопределенные свойства sendmail в Вашу
конфигурацию. Эти свойства sendmail делают
конфигурации очень простыми в использовании. Имеется большое количество
свойств, и я расскажу о наиболее полезных и важных. Вы можете узнать
подробности о свойствах из файла CF
в пакете
исходных текстов.
sendmail.mc
строку наподобие:
FEATURE(
|
name
задает имя свойства. Некоторые
свойства берут один факультативный параметр. Если Вы желаете использовать
нечто отличное от значения по умолчанию, Вы должны использовать запись:
FEATURE(
|
param
задает параметр.Локальные макроопределения
Стандартные макрофайлы конфигурации sendmail
обеспечивают большое количество обработчиков прерываний и переменных,
которыми Вы можете настраивать конфигурацию. Они названы
локальными макроопределениями (local macro definitions)
. Многие из них перечислены в файле CF
в пакете
с исходными кодами sendmail.
Локальные макроопределения обычно вызываются, по имени с указанием изменяемого параметра.
Определение протокола транспортировки почты
Если Вы хотите использовать sendmail для передачи
нелокальной почты, Вы должны сообщить какой транспорт использовать.
Макрокоманда MAILER
делает это очень простым.
Текущая версия sendmail поддерживает ряд протоколов
транспорта почты. Некоторые из них экспериментальны, другие, вероятно, очень
редко используются.
В нашей сети мы нуждаемся в SMTP транспорте, чтобы посылать и получать
почту в локальной сети, и в UUCP транспорте, чтобы посылать и получать почту
от нашего интеллектуального хоста. Чтобы достичь этого, мы просто включаем
транспорты smtp
и uucp
.
Транспорт local
включен по умолчанию, но может быть
определен для ясности, если Вы желаете. Если Вы включаете оба транспорта,
smtp
и uucp
, Вы должны
всегда убедиться, что определили smtp
первым.
Обычно используемые транспорты, доступные Вам в макрокоманде MAILER, описаны в следующем списке:
- local
Этот транспорт включает локальный агент поставки, используемый, чтобы послать почту в почтовый ящик пользователя на этой машине, и агент prog используемый, чтобы послать сообщения локальным программам. Этот транспорт включен по умолчанию.
- smtp
Этот транспорт осуществляет Simple Mail Transport Protocol (SMTP), который является наиболее общим средством транспортировки почты в Internet. Когда Вы включаете этот транспорт, четыре агента будут конфигурированы:
smtp
(нормальный SMTP),esmtp
(расширенный SMTP),smtp8
(8-битный двоичный SMTP) иrelay
(специально разработан для шлюзования писем между разными хостами).- uucp
Транспорт uucp обеспечивает поддержку двух агентов: uucp-old, который является традиционным UUCP, и uucp-new, который позволяет указывать много получателей, которые будут обработаны в одной передаче сразу.
- usenet
Этот агент позволяет Вам посылать сообщения почты непосредственно в сети Usenet. Любое локальное сообщение, направленное к адресу news.group.usenet, будет подано в сеть новостей для группы новостей news.group.
- fax
Если Вы имеете установленное программное обеспечение HylaFAX, этот агент позволит Вам направлять письма так, что можно будет создать шлюз email-fax. Это свойство было экспериментальным на момент написания книги, и более подробная информация может быть получена на http://www.vix.com/hylafax.
Имеются другие агенты, например, pop, procmail, mail11, phquery и cyrus, которые являются полезными, но менее распространенными. Документация к ним есть в пакете исходных кодов.
Настройка маршрутизации почты для локальных хостов
Конфигурация Virtual Brewery, вероятно, более сложная, чем требуется для
большинства мест. Большинство машин сегодня использовало бы только транспорт
SMTP и не работали бы с UUCP вообще. В нашей конфигурации мы настроили
"интеллектуальный хост (smart host)", который используется, чтобы обработать
всю исходящую почту. Так как мы используем транспорт SMTP в нашей локальной
сети, мы должны сообщить sendmail, что он не должен
посылать локальную почту через smart host. Макрокоманда
LOCAL_NET_CONFIG
позволяет Вам вставить правила
sendmail непосредственно в sendmail.cf
, чтобы
изменять путь, которым локальная почта обработана. Позже эти правила будут
рассмотрены подробнее, пока же примем тот факт, что любая почта для хоста
vbrew.com должна доставляться через SMTP.
Назад | Глобальное оглавление | Вперед |
Обзор файлов настроек | Локальное оглавление | Построение файла sendmail.cf |