Остаток этого раздела описывает установку sendmail в том случае, если вы используете одну из существующих конфигураций, и можете использовать стандартные параметры установки. Все пути к файлам и примеры заданы от корня поддерева sendmail, для 4.4BSD обычно /usr/src/usr.sbin/sendmail.
Если вы загружаете его с ленты, продолжайте со следующего раздела. Если в вашей системе уже имеется работающий бинарный файл, то вы вполне можете сразу переходить к разделу 1.2.
./BuildЭто оставит бинарные файлы в соответствующе названном каталоге, например obj.BSD-OS.2.1.i386.
| -L libdirs | Список каталогов для поиска библиотек |
| -I incdirs | Список каталогов для поиска включаемых файлов |
| -E envar= значение | Назначить перед компиляцией переменной окружения указанное значение. Обычно используется для выставки ABI в Irix. |
| -c | Перед запуском создать новое дерево obj.* |
| -f siteconfig | Считать указанный файл конфигурации узла. Если этот параметр не указан, Build включает все файлы из $BUILD-TOOLS/Site/site.$oscf.m4 и $BUILD-TOOLS/Site/site.config.m4 , где $BUILDTOOLS обычно ../BuildTools , а $oscf - то же имя, что используется в каталоге obj.* . Ниже имеется описание файла конфигурации узла. |
| -S | Пропустить автоконфигурацию. Build не будет автоматически находить библиотеки. Все библиотеки и определения преобразований должны быть указаны в файле конфигурации узла. |
Все остальные параметры передаются в программу make.
sendmail поддерживает два различных формата для локальных (находящихся на диске) версий баз данных, в особенности базы данных aliases . По крайней мере, одна из них должна быть определена, если это вообще возможно.
| NDBM | Формат "new DBM", доступный в настоящее время почти во всех системах. До 4.4BSD это был предпочтительный формат. Он позволяет такие сложные вещи, как множество баз данных и закрытие открытой на этот момент базы данных. |
| NEWDB | Новый пакет базы данных от Berkeley. Если он у вас есть, то используйте его. Он позволяет длинные записи, множество открытых баз данных, кэширование в памяти и многое другое. Вы можете определить его вместе с NDBM; если вы так сделаете, то старые базы данных будут считываться, но когда будет создаваться новая база данных, то она будет уже в формате NEWDB. В случае, если у вас определены NEWDB, NDBM, и NIS, и имя файла aliases будет содержать подстроку "/yp/", при выполнении команды newalias, sendmail создаст и новую и старую версии файла алиасов. Это требуется из-за того, что система Sun NIS/YP считывает версию DBM файла алиасов. Это ужасно, но работает. |
Если ни одна из них не определена, sendmail при каждом запуске будет считывает файл алиасов в память. Этого нужно избегать, так как это может быть достаточно медленно. Существует также несколько методов доступа к удаленным базам данных:
| NIS | Sun's Network Information Services (бывший YP). |
| NISPLUS | Sun's NIS+ services. |
| NETINFO | NeXT's NetInfo service. |
| HESIOD | Hesiod service (from Athena). |
Другие флаги компиляции выставляются в conf.h и должны быть предопределены для вас, если только вы не занимаетесь портированием в другую систему.
./BuildОн использует uname (1) для выбора подходящего для вашей системы Makefile.
Если вы устанавливаете все на стандартные места, то произвести установку можно с помощью
./Build installЭто должно установить бинарный файл в /usr/sbin и создать связи /usr/bin/newaliases и /usr/bin/mailq с /usr/sbin/sendmail. В системах 4.4BSD это также сформатирует и установит инструкции (man pages).
Поначалу конфигурация sendmail может напугать и запутать вас. Мир сложен, и почтовая конфигурация - всего лишь его отражение. Комплект поставки включает конфигурационный пакет, основанный на m4, скрывающий большинство из сложностей.
Файлы конфигурации, по сравнению с предыдущими версиями, стали проще, во многом из-за того, что и мир стал проще; в частности, текстовые файлы хостов официально устранены, и теперь нет необходимости "прятать" хосты за зарегистрированным шлюзом в Internet.
Эти файлы также учитывают, что большинство ваших соседей используют UUCP адресацию на основе доменов; что означает, что вместо именования хостов как "host!user" они будут использовать "host.domain!user". Файлы конфигурации могут быть переделаны так, чтобы работать помимо этого, но это намного сложнее.
Наши файлы конфигурации обрабатываются m4 для облегчения внесения локальных изменений; каталог cf в поставке sendmail содержит исходные файлы. Этот каталог содержит несколько подкаталогов:
| cf | И зависящие, и не зависящие от узла описания хостов. Это могут быть литерные имена хостов (например, "ucbvax.mc"), если хосты являются шлюзами, или более общие описания (типа "generic-solaris2.mc" - как общее описание хостов, соединенных по SMTP под управлением ОС Solaris 2.x. ). Файлы, имена которых заканчиваются на .mc ("Master Configuration") являются входными описаниями; выходные находятся в соответствующих файлах .cf . Общая структура этих файлов описывается ниже. |
| domain | Зависящие от узла описания поддоменов. Это все связано с тем, как ваша организация хочет осуществлять адресацию. Например, domain/ CS.Berkeley.EDU.m4 - это наше описание для хостов в поддомене CS.Berkeley.EDU. На них ссылаются, используя m4 макрос DOMAIN в файле .mc. |
| feature | Определения специфических особенностей, которые могут быть нужны какому-либо определенному хосту в вашем узле. На них ссылаются, используя m4 макрос FEATURE. Например - use_cw_file (говорит sendmail считать при запуске файл /etc/sendmail.cw, чтобы найти список локальных имен). |
| hack | Локальные особенности. На него ссылаются, используя m4 макрос HACK. Лучше всего не использовать |
| m4 | Независимые от узла m4 (1) файлы, содержащие общую для всех конфигурационных файлов информацию. Этот каталог можно рассматривать как каталог "#include". |
| mailer | Определения почтовых программ, на которые ссылаются используя m4 макрос MAILER. Типы почтовых программ, известных в этой поставке: fax, local, smtp, uucp, и usenet. Например, чтобы включить поддержку почтовых программ основанных на UUCP, используйте "MAILER(uucp)". |
| ostype | Определения, описывающие среды различных операционных систем (например, местонахождения поддерживаемых файлов). На них ссылаются используя m4 макрос OSTYPE. |
| sh | Файлы оболочки, используемые процессом постройки m4 . С этим у вас не должно быть проблем. |
| siteconfig | Локальная информация о связях UUCP. Этот каталог был замещен mailertable ; все новые конфигурации должны использовать mailertable для осуществления маршрутизации UUCP (и всего остального). |
Если вы в новом домене (т.е., компании), вам, возможно, захочется создать файл cf/domain для вашего домена. В основном он состоит из описаний ретрансляторов (relay definitions) и особенностей, которые бы использовались на всех узлах: например, описание домена Berkeley определяет ретрансляторы для BitNET и UUCP. Они очень специфичны для Berkeley и должны быть доменными именами internet. Пожалуйста, проверьте их приемлемость для вашего домена.
Поддомены в Berkeley также представлены в каталоге cf/domain. Например, домен CS.Berkeley.EDU - поддомен Computer Science, EECS.Berkeley.EDU- поддомен Electrical Engineering and Computer Sciences , а S2K.Berkeley.EDU - это поддомен Sequoia 2000. Возможно, вам захочется добавить соответствующие вашему домену файлы.
Вам нужно будет использовать или создать файлы .mc для ваших хостов в подкаталоге cf/cf . Это детально описано в файле cf/README.
Файл конфигурации обычно создается с использованием описанных выше файлов из поставки. Если у вас необычная конфигурация системы, то, возможно, вам понадобиться создать специальную версию. Формат этого файла более подробно описан в последующих разделах этого документа.
rm -f /usr/bin/newaliases ln -s /usr/sbin/sendmail /usr/bin/newaliasesОн должен быть создан там, где его найдет системный путь поиска.
Настоящий путь к этому каталогу определяется оцией Q в файле sendmail.cf.
cp lib/aliases /etc/aliases edit /etc/aliasesВы должны добавить в этот файл любые псевдонимы, необходимые в вашей системе.
Обычно sendmail смотрит на версии этих файлов в виде баз данных, хранящихся и в "/etc/aliases.dir" и в "/etc/aliases.pag" или "/etc/aliases.db", в зависимости от используемой вами пакета баз данных. Путь к этому файлу определяется опцией AliasFile в файле sendmail.cf.
Добавьте в ваш "/etc/rc" (или "/etc/rc.local" в зависимости от системы) в то место, где он запускает демоны (для систем на основе BSD) , или в один из файлов запуска, обычно это "/etc/init.d/sendmail" ( в системах на основе System-V), следующие строчки:
if [ -f /usr/sbin/sendmail -a -f /etc/sendmail.cf ]; then (cd /var/spool/mqueue; rm -f [lnx]f*) /usr/sbin/sendmail -bd -q30m & echo -n ' sendmail' /dev/console fiКоманды "cd" и "rm" здесь даются для того, чтобы гарантировать, что все файлы-замки (lock files) были уничтожены; посторонние файлы-замки могут остаться, если система вдруг "упадет" посреди обработки сообщения. Строка, которая на самом деле запускает sendmail , имеет два флага: "-bd" заставляет его слушать на порту SMTP, а "-q30m" заставляет его производить обработку очереди каждые полчаса.
Некоторые используют более сложный сценарий запуска, удаляющий файлы qf нулевой длины, и файлы df, для которых нет ни одного файла qf. Пример сложного сценария запуска представлен на рис.1.
# remove zero length qf files for qffile in qf* do if [ -r $qffile ] then if [ ! -s $qffile ] then echo -n " <zero: $qffile" /dev/console rm -f $qffile fi fi done # rename tf files to be qf if the qf does not exist for tffile in tf* do qffile=`echo $tffile | sed 's/t/q/'` if [ -r $tffile -a ! -f $qffile ] then echo -n " <recovering: $tffile" /dev/console mv $tffile $qffile else echo -n " <extra: $tffile" /dev/console rm -f $tffile fi done # remove df files with no corresponding qf files for dffile in df* do qffile=`echo $dffile | sed 's/d/q/'` if [ -r $dffile -a ! -f $qffile ] then echo -n " <incomplete: $dffile" /dev/console mv $dffile `echo $dffile | sed 's/d/D/'` fi done # announce files that have been saved during disaster recovery for xffile in [A-Z]f* do echo -n " <panic: $xffile" /dev/console done
Если ваша версия UNIX не поддерживает Berkeley TCP/IP, не включайте флаг -bd.
cp lib/sendmail.hf /usr/libНастоящий путь к этому файлу определяется опцией HelpFile в файле sendmail.cf.
cp /dev/null /etc/sendmail.st chmod 666 /etc/sendmail.stЭтот файл не увеличивается. Он распечатывается программой "mailstats/mailstats.c." Настоящий путь к этому файлу определяется опцией S в файле sendmail.cf.