Файл конфигурации sendmail.mc
Просмотрев файл конфигурации sendmail.cf программы Sendmail, можно убедиться в его исключительной сложности. Случайно изменив одну из на- строек, можно привести Sendmail в неработоспособное состояние.
В настоящее время в GNU/Linux используется заранее созданный разработ- чиками Sendmail набор шаблонов, написанных на языке m4, которые позво- ляют быстро и просто настраивать Sendmail, не зная деталей настроек файла sendmail.cf.
При использовании m4 вначале создают файл макросов sendmail.mc, а за- тем с помощью препроцессора m4 его преобразуют в файл sendmail.cf (при- мер 29.10).
Пример 29.10. Преобразование sendmail.cf в sendmail.mc |
m4 sendmail.mc > sendmail.cf
Обычно в каталоге /etc/mail находится специально разработанный файл Makefile, позволяющий с помощью утилиты make выполнить это преобразо- вание, а также перестроить при необходимости базы данных в этом каталоге. Для перестроения файла конфигурации и баз данных в каталоге /etc/mail надо выполнить команду, показанную в примере 29.11. Эта команда может обновить конфигурационные базы данных и даже пригодна для рестарта Sendmail.
Пример 29.11. Перестройка конфигурационных файлов |
make all
Прежде чем использовать язык m4, следует убедиться, установлен ли в сис- теме соответствующий пакет (он может называться по-разному). Проверить, установлен ли данный пакет в RPM-системах, можно командой, показанной в примере 29.12.
Пример 29.12. Проверка наличия пакета с макросами m4 для Sendmail |
$ rpm -qa | grep sendmail.*cf.* sendmail-cf-8.14.3-4
Файлы с макросами для генерации конфигурационного файла sendmail.cf на- ходятся в отдельном каталоге, например, /usr/share/sendmail-cf.
Макропроцессор m4 чувствителен к регистру задаваемых символов. В дирек- тивах FEATURE и DEFINE файла sendmail.mc используются круглые скобки, команды в которых должны быть взяты в кавычки, где открывающая кавыч- ка — обратный апостроф (`), а закрывающая — обычный апостроф (') — пример 29.13.
Пример 29.13. Директива m4 — определение операционной системы |
OSTYPE(`linux')dnl
В результате действия этой директивы к файлу sendmail.cf будет подключен файл /usr/share/sendmail-cf/ostype/linux.m4.
Каждый макрос и директива в файле макросов должны записываться с нача- ла строки, в каждой строке может быть только одна директива или макрос. Строки, следующие после директивы dnl, пропускаются препроцессором m4 и представляют собой комментарии. Первыми двумя директивами, устанав- ливаемыми в файле макросов, обычно являются divert(-1) и divert(0).
Директива divert(-1) очищает буферы макросов от временных данных, не требующихся в результирующем файле. Директива divert(0) обозначает новый файл макросов.
Директива include предназначена для подключения к файлу макросов со- держимого других файлов макросов (пример 29.14).
Пример 29.14. Подключение макросов m4 для Sendmail |
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
Макрос VERSIONID устанавливает версию получаемого файла конфигурации.
Директива, показанная в примере 29.15, не имеет отношения к доменным именам DNS. Она устанавливает разновидность макросов для построения результирующего файла конфигурации. В GNU/Linux вы можете использо- вать настройки generic.
Пример 29.15. Определение стандартных макросов конфигурации |
DOMAIN(`generic')dnl
Макрос MAILER предназначен для указания обработчика почтового трафика (пример 29.16). Эти макросы должны устанавливаться в файле конфигурации последними, причем локальная программа доставки всегда добавляется ав- томатически.
Пример 29.16. Установка программы локальной доставки |
MAILER(`procmail')dnl
Макрос включения посылки писем по протоколу SMTP всегда должен нахо- диться до макроса включения программы procmail (пример 29.17).
Пример 29.17. Порядок макросов MAILER |
MAILER(`smtp')dnl MAILER(`procmail')dnl
Директива define(MACRO, VALUE) предназначена для определения макроса MACRO со значением VALUE. Например, для определения имени централизо- ванного почтового узла (Smart Host) в sendmail.mc указывают настройку, по- казанную в примере 29.18.
Пример 29.18. Определение Smart Host |
define(`SMART_HOST', `mailrelay.provider.ru')
Здесь определен макрос SMART_HOST со значением mailrelay.provider.ru.
В примере 29.19 приведен простой файл конфигурации sendmail.cf.
Пример 29.19. Файл sendmail.mc |
divert(-1)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl VERSIONID(`Simple config')dnl OSTYPE(`linux')dnl define(`confDEF_USER_ID',`8:12')dnl define(`confTO_CONNECT', `1m')dnl define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl define(`ALIAS_FILE', `/etc/aliases')dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl FEATURE(always_add_domain)dnl FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl FEATURE(`accept_unresolvable_domains')dnl
MAILER(smtp)dnl MAILER(procmail)dnl
В этом файле настроек задано следующее:
r настройка define(`confDEF_USER_ID',`8:12')dnl задает UID и GID поль- зователя, от имени которого работает Sendmail (пользователь mail);
r настройка define(`confTO_CONNECT', `1m')dnl задает время ожидания соединения — 1 минута;
r используя директиву define(`confDONT_PROBE_INTERFACES',true)dnl, можно запретить Sendmail добавление имен хоста, связанных с IP- адресами интерфейсов, в класс w, задающий имена узла;
r путь к программе procmail, являющейся почтовым фильтром и исполь- зуемой в GNU/Linux для локальной доставки, задается с помощью дирек- тивы define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl;
r директива define(`ALIAS_FILE', `/etc/aliases')dnl задает имя файла почтовых псевдонимов;
r с помощью ограниченной оболочки Sendmail — smrsh осуществляется передача почты для обработки другим программам. Использование smrsh диктуется настройкой FEATURE(`smrsh',`/usr/sbin/smrsh')dnl;
r настройка FEATURE(always_add_domain)dnl позволяет автоматически до- бавлять адресу отправителя доменное имя;
r опции фильтра procmail для локальной доставки задаются директивой
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl;
r разрешение на прием почты из доменов, имена узлов в которых не удается проверить в DNS, задается настройкой FEATURE(`accept_unresolvable_ domains')dnl.
Дата добавления: 2015-06-12; просмотров: 1714;