Макропроцессор m4 генерирует файл sendmail.df, когда обрабатывает макрофайл конфигурации, созданный локальным администратором системы. Обычно он называется sendmail.mc.
Процесс конфигурации, в основном, вопрос создания подходящего файла sendmail.mc, который включает макрокоманды, описывающие желательную конфигурацию. Макрокоманды представляют собой выражения, которые макропроцессор m4 понимает и разворачивает в синтаксис файла sendmail.cf. Макровыражения составлены из макроимени (текст в заглавных буквах в начале), которое может быть уподоблено функции в языках программирования, и некоторых параметров (текст внутри скобок), которые используются в расширении. Параметры могут быть переданы буквально в генерируемый файл sendmail.cf или использоваться, чтобы управлять путем, которым происходит обработка данной макрокоманды в подготовленном файле sendmail.mc.
Файл sendmail.mc для минимальной конфигурации (UUCP или SMTP со всей нелокальной почтой, передаваемой на непосредственно связанный интеллектуальный хост (smart host), может быть длиной всего в 10 или 15 строк, исключая комментарии.
Если Вы администратор нескольких различных почтовых хостов, не стоит называть Ваш файл конфигурации 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 такая:
VERSIONID
OSTYPE
DOMAIN
FEATURE
Local macro definitions
MAILER
LOCAL_* rulesets
Строки в sendmail.mc, которые начинаются с #, не обрабатываются m4 и будут по умолчанию выводиться непосредственно в файл sendmail.cf. Это полезно, если Вы хотите комментировать, что Ваша конфигурация делает.
Допустимы комментарии в sendmail.mc, которые не попадут в файл sendmail.cf: Вы можете использовать лексемы m4 divert и dnl. Команда divert(-1) прекратит весь вывод, divert(0) восстановит его к значению по умолчанию. Любой вывод, сгенерированный строками между ними будет отброшен. В нашем примере, мы использовали этот механизм для создания комментария, который появляется только в файле sendmail.mc. Чтобы достичь того же самого результата для одной строки, можно использовать команду dnl, которая означает, буквально, "удаление всех символов следующей строки и перевод на новую строку". Я также использовал это в примере.
Это стандартные свойства m4, и Вы можете получить больше информации относительно их из man-страницы.
VERSIONID(`@(#)sendmail.mc 8.9 (Linux) 01/10/98') |
OSTYPE(`linux') |
Определение OSTYPE должно располагаться поближе к началу файла sendmail.mc, так как много других определений зависят от него.
Макрокоманда DOMAIN полезна, когда Вы желаете конфигурировать большое количество машин одним способом.
Стандартная установка имеет каталог шаблонов макрокоманд m4, используемых, чтобы управлять процессом конфигурации. Этот каталог обычно называется /usr/share/sendmail.cf. Здесь Вы найдете подкаталог, названный domain, содержащий проблемно-зависимые шаблоны конфигурации. Для использования определения DOMAIN, надо создать свой файл, содержащий стандартные определения для соответствующего домена, и вписать его в каталог domain.
Пакет исходных кодов sendmail приходит с рядом типовых файлов макрокоманд domain, которые Вы можете использовать как примеры при построении своего.
Если Вы сохранили Ваш файл макрокоманды domain как /usr/share/sendmail.cf/domain/vbrew.m4, надо включить в файл sendmail.mc определение:
DOMAIN(`vbrew') |
Макрокоманда FEATURE позволяет включить предопределенные свойства sendmail в Вашу конфигурацию. Эти свойства sendmail делают конфигурации очень простыми в использовании. Имеется большое количество свойств, и я расскажу о наиболее полезных и важных. Вы можете узнать подробности о свойствах из файла CF в пакете исходных текстов.
Чтобы использовать любое из перечисленных свойств, Вы должны включить в Ваш sendmail.mc строку наподобие:
FEATURE(name) |
FEATURE(name, param) |
Стандартные макрофайлы конфигурации sendmail обеспечивают большое количество обработчиков прерываний и переменных, которыми Вы можете настраивать конфигурацию. Они названы локальными макроопределениями (local macro definitions) . Многие из них перечислены в файле CF в пакете с исходными кодами sendmail.
Локальные макроопределения обычно вызываются, по имени с указанием изменяемого параметра.
Если Вы хотите использовать sendmail для передачи нелокальной почты, Вы должны сообщить какой транспорт использовать. Макрокоманда MAILER делает это очень простым. Текущая версия sendmail поддерживает ряд протоколов транспорта почты. Некоторые из них экспериментальны, другие, вероятно, очень редко используются.
В нашей сети мы нуждаемся в SMTP транспорте, чтобы посылать и получать почту в локальной сети, и в UUCP транспорте, чтобы посылать и получать почту от нашего интеллектуального хоста. Чтобы достичь этого, мы просто включаем транспорты smtp и uucp. Транспорт local включен по умолчанию, но может быть определен для ясности, если Вы желаете. Если Вы включаете оба транспорта, smtp и uucp, Вы должны всегда убедиться, что определили smtp первым.
Обычно используемые транспорты, доступные Вам в макрокоманде MAILER, описаны в следующем списке:
Этот транспорт включает локальный агент поставки, используемый, чтобы послать почту в почтовый ящик пользователя на этой машине, и агент prog используемый, чтобы послать сообщения локальным программам. Этот транспорт включен по умолчанию.
Этот транспорт осуществляет Simple Mail Transport Protocol (SMTP), который является наиболее общим средством транспортировки почты в Internet. Когда Вы включаете этот транспорт, четыре агента будут конфигурированы: smtp (нормальный SMTP), esmtp (расширенный SMTP), smtp8 (8-битный двоичный SMTP) и relay (специально разработан для шлюзования писем между разными хостами).
Транспорт uucp обеспечивает поддержку двух агентов: uucp-old, который является традиционным UUCP, и uucp-new, который позволяет указывать много получателей, которые будут обработаны в одной передаче сразу.
Этот агент позволяет Вам посылать сообщения почты непосредственно в сети Usenet. Любое локальное сообщение, направленное к адресу news.group.usenet, будет подано в сеть новостей для группы новостей news.group.
Если Вы имеете установленное программное обеспечение 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 |