1
Исходный текст sendmail доступен для анонимного FTP-копирования с сервера ftp.sendmail.org, где он хранится в каталоге pub/sendmail. sendmail постоянно обновляется. В последующих примерах использован дистрибутив sendmail 8.11.3. Помните, что в новых версиях происходят изменения. Всегда обращайтесь к файлам README и установочной документации, прежде чем начинать обновление.
Чтобы получить возможность скомпилировать программу sendmail, загрузите сжатый tar-файл в качестве двоичного, а затем распакуйте и извлеките архив при помощи команды tar, как показано ниже:
$ ftp ftp.sendmail.org Connected to ftp.sendmail.org. 220 pub2.pa.vix.com FTP server ready. Name (ftp.sendmail.org:craig): anonymous 331 Guest login ok, send your e-mail address as password. Password: 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd pub/sendmail ftp> get sendmail.8.11.3.tar.gz local: sendmail.8.11.3.tar.gz remote: sendmail.8.11.3.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for sendmail.8.11.3.tar.gz (1347756 bytes). 226 Transfer complete. 1347756 bytes received in 18.68 Seconds (72.42 Kbytes/sec) ftp> quit 221-You have transferred 1347756 bytes in 1 files. 221-Thank you for using the FTP service on pub2.pa.vix.com. 221 Goodbye. $ cd /usr/local/src $ tar -zxvf /home/craig/sendmail.8.11.3.tar.gz
Затем перейдите в каталог sendmail-8.11.3, созданный при распаковке архива, и воспользуйтесь сценарием Build для компиляции новой программы sendmail:
$ cd sendmail-8.11.3 $ ./Build Making all in: /usr/local/src/sendmail-8.11.3/libsmutil Configuration: pfx=, os=Linux, rel=2.2.10, rbase=2, rroot=2.2, arch=i586, sfx=, variant=optimized Using M4=/usr/bin/m4 Creating ../obj.Linux.2.2.10.i586/libsmutil using ../devtools/OS/Linux Making dependencies in ,./obj.Linux.2.2.10.i586/libsmutil шаке[1]: Entering directory '/usr/local/src/sendmail-8.11.3/obj.Linux.2.2.10.i586/libsmutil' cc -M -I. -I../../sendmail -I../../include -DNEWDB -DNOT_SENDMAIL debug.с errstring.c lockfile.c safefile.c snprintf.c strl.c » Makefile make[1]: Leaving directory '/usr/local/src/sendiriail-8.11.3/obj.Linux.2.2.10.i586/libsmutil' Making in ../obj.Linux.2.2.10.i586/libsrautil make[1]: Entering directory •/usr/local/src/sendmail-8.11.3/obj.Linux.2.2.10.i586/libsmutil' cc -0 -I. -I../../sendmail -I../../include -DNEWDB -DNOT_SENDMAIL -c debug.с -о debug.о cc -0 -I. -I../../sendmail -I../../include -DNEWDB -DNOT_SENDMAIL -c errstring.c -o errstring.o ... Удалено много, много, много строк... сс -О -I. -I../../sendmail -I../../include -DNEWDB -DNOT_SENDMAIL -с vacation.с -о vacation.о сс -о vacation vacation.о ../libsmdb/libsmdb.a ../libsmutil/libsmutil.a -ldb -lresolv -lcrypt -lnsl -ldl groff -Tascii -man vacation.1 > vacation.0 || cp vacation.O.dist vacation.О make[1]: Leaving directory '/usr/local/src/sendmail-8.11.3/obj.Linux.2.2.10.i586/vacation'
Сценарий Build самостоятельно определяет архитектуру системы и создает корректный для данной системы файл сборки Makefile. Затем выполняется компиляция sendmail при помощи созданного Makefile.
Если верить документации, выполнение Build - все, что нужно для компиляции sendmail в большинстве систем. Такой способ работает в Red Hat Linux и Solaris 8. Однако гарантий никаких нет. В вашей системе могут использоваться нестандартные каталоги или отсутствовать определенные библиотеки. Может потребоваться уточнить флаги компилятора для вашей системы.
Если у вас есть опыт компиляции sendmail, вы можете испытать соблазн заглянуть в поисках параметров компиляции в файл Makefile, расположенный в каталоге исходных текстов дистрибутива. Возможно, вы даже вспомните, что некогда указывали параметры компиляции именно в этом файле.
Но теперь все иначе. Параметры компилятора устанавливаются в файлах, расположенных в каталоге devtools дистрибутива исходных текстов sendmail.
Параметры компилятора, принимаемые по умолчанию, обычно устанавлива-ются в специальных для каждой ОС файлах из каталога devtools/OS и изме-няются в файлах, создаваемых непосредственно для вашего сервера в катало-ге devtools/Site. Имена файлов devtools/OS основаны на названиях операционных систем; к примеру, файл настройки Solaris 8 называется SunOS5.8.
Если ваша система Solaris 8 отличается от стандартной, создайте собственный файл в каталоге devtools/Site, дайте ему имя site.SunOS5.8.m4. В этом файле сохраните скорректированные настройки. Кроме того, вы можете создать файл site.config.m4 в каталоге devtools/Site, если устанавливаемые параметры компилятора относятся более к особенностям сервера, чем к поправкам на операционную систему. Build находит и использует файлы с такими именами.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
Как следует из расширений ,т4 имен данных файлов, команды, используемые для установки параметров компилятора, являются макроопределениями т4, а не простыми параметрами компилятора. В табл. Е.1 перечислены команды т4, используемые в sendmail 8.11.3 для управления процессом компиляции.
Таблица Е.1. т4, параметры компилятора
| Команда | Назначение |
| confBEFORE | Указывает файлы, которые необходимо создать перед компиляцией |
| ConfBLOVARIANT | Запрашивает варианты сборки OPTIMIZED, DEBUG или PURIFY |
| COnfBUILDBIN | Путь к вспомогательным исполняемым файлам сборки |
| confCC | Имя компилятора С |
| Команда | Назначение |
| confCCOPTS | Параметры, передаваемые компилятору |
| confCOPY | Имя программы, копирующей файлы |
| COnfDEPEND.TYPE | Имя файла из devtools/M4/depend, определяющего способ построения зависимостей |
| ConfDEPLIBS | Зависимые библиотеки для разделяемых объектов |
| confEBINDIR | Путь к программе, исполняемой другими программами |
| ConfENVDEF | Флаги -D, передаваемые компилятору |
| ConfFORCE_RHAIL | Принудительная установка rmail |
| ConfHFDIR | Путь к файлу справки sendmail |
| confHFFILE | Имя файла справки |
| ConflNCDIRS | Флаги -I, передаваемые компилятору |
| COnflNCGRP | Идентификатор группы для включаемых файлов |
| conflNCMODE | Файловые права доступа для включаемых файлов |
| confINCOWN | Идентификатор пользователя для включаемых файлов |
| COnflNCLUDEDIR | Путь установки включаемых файлов |
| COnflNSTALL | Программа установки |
| COnfINSTALL_RAWMAN | Устанавливать неформатированные страницы руководства |
| confLDOPTS | Параметры для редактора связей |
| ConfllBDIR | Путь к файлам библиотеки установки |
| confLIBDIRS | Флаги -L для редактора связей |
| confLIBGRP | Идентификатор группы для библиотек |
| confLIBMODE | Файловые права доступа для библиотек |
| COnfLIBOWN | Идентификатор пользователя для библиотек |
| confLIBS | Флаги -I, передаваемые редактору связей |
| COnfLIBSEARCH | Имена библиотек, используемых при связывании |
| COnfLIBSEARCHPATH | Путь к библиотекам, используемым при связывании |
| confLINKS | Имена логических ссылок на sendmail, к примеру, newaliases |
| confLN | Команда, используемая для создания логических ссылок |
| Команда | Назначение |
| COnfMANI | Путь к файлам manl |
| COnfMANIEXT | Расширение имен файлов manl |
| COnfMANISRC | Источник страниц manl |
| COnfMAN3 | Путь к файлам тапЗ |
| COnfMAN3EXT | Расширение имен файлов тапЗ |
| COnfMAN3SRC | Источник страниц тапЗ |
| COnfMAN4 | Путь к файлам man4 |
| COnfMAN4EXT | Расширение имен файлов тап4 |
| COnfMAN4SRC | Источник страниц man4 |
| ConfMAN5 | Путь к файлам man5 |
| COnfMAN5EXT | Расширение имен файлов man 5 |
| COnfHAN5SRC | Источник страниц man5 |
| COnfMAN8 | Путь к файлам man8 |
| COnfMAN8EXT | Расширение имен файлов тап8 |
| COnfMAN8SRC | Источник страниц man8 |
| COnfMANDOC | Макроопределения, используемые для форматирования страниц руководства |
| COnfMANGRP | Идентификатор группы для файлов страниц руководства |
| COnfMANMODE | Файловые права доступа для страниц руководства |
| COnfMANOWN | Идентификатор пользователя для файлов страниц руководства |
| COnfMANROOT | Корневой каталог для различных каталогов, содержащих отформатированные страницы руководства |
| ConfMANROOTMAN | Корневой каталог для различных каталогов, содержащих неформатированные страницы руководства |
| COnfHAPDEF | Указывает типы баз данных, поддержку которых следует встроить в sendmail |
| COnfMBINDIR | Путь установки для программы sendmail |
| COnfN0_HELPFILE_INSTALL | Не устанавливать файл справки |
| COnfN0_MAN_BUILD | Не создавать страницы руководства |
| COnfN0_MAN_INSTALL | Не устанавливать страницы руководства |
| confNO_STATISTICS_INSTALL | Не устанавливать файл статистики |
| COnfNROFF | Команда, используемая для форматирования страниц руководства |
| Команда | Назначение |
| COnfOBJADD | Указывает объекты, которые следует встроить в sendmail |
| confOPTIMIZE | Флаги, передаваемые компилятору в виде ${0} |
| COnfRANLIB | Путь к программе ranlib |
| COnfRANLIBOPTS | Параметры, передаваемые ranlib |
| COnfSBINDIR | Каталог, в котором сохраняются команды вроде makemap |
| COnfSBINGRP | Идентификатор группы для исполняемых файлов setuid |
| confSBINHODE | Файловые права доступа для исполняемых файлов setuid |
| ConfSBINOWN | Идентификатор пользователя для исполняемых файлов setuid |
| COnfSHAREDLIB_EXT | Расширения имен файлов разделяемых библиотек |
| COnfSHAREDLIB_SUFFIX | Суффикс для разделяемых объектов |
| COnfSHAREDLIBDIR | Каталог, в который устанавливаются разделяемые библиотеки |
| confSHELL | Полное имя интерпретатора команд, используемого make |
| COnfSMOBJAOD 67Q / 813 | Объекты, которые следует встраивать в sendmail |
| COnfSMSRCADD | Исходные файлы на языке С для объектов, перечисленных в confSMOBJADD |
| confSMSRCDIR | Каталог, содержащий исходные тексты sendmail |
| confSRCADD | Исходные файлы на языке С для объектов, перечисленных в confOBJADD |
| confSRCDIR | Путь к иерархии каталогов исходных текстов |
| COnfSONAME | Флаг редактора связей для записи имени разделяемого объекта |
| confSTDIO.TYPE | Указывает тип буферной зоны, portable или torek |
| COnfSTDIR | Каталог, в котором сохраняется файл статистики |
| confSTFILE | Имя файла статистики |
| confSTRIP | Указывает программу, используемую для удаления из исполняемых файлов отладочной информации |
| confSTRIPOPTS | Параметры, передаваемые программе confSTRIP |
| Команда | Назначение |
| COnfUBINDIR | Путь к пользовательским программам |
| COnfUBINGRP | Идентификатор группы для пользовательских исполняемых программ |
| COnfUBINHODE | Файловые права доступа для пользовательских исполняемых программ |
| COnfUBINOWN | Идентификатор пользователя для пользовательских исполняемых программ |
После компиляции sendmail устанавливается посредством команды Build с аргументом install, как показано ниже:
# ./Build Install Making all in: /usr/local/src/sendmail-8.11.3/libsmutil Configuration: pfx=, os=Linux, rel=2.2.10. rbase=2, rroot=2.2, arch=i586, sfx=, variant=optimized Making in ../obj.Linux.2.2.10.i586/libsmutil make[1]: Entering directory '/usr/local/src/sendmail-8.11.3/obj.Linux.2.2.10.i586/libsmutil' ... Удалено много, много, много строк... Making in ../obj.Linux.2.2.10.1586/vacation make[1]: Entering directory '/usr/local/src/sendmail-8.11.3/obj.Linux.2.2.10.i586/vacation' install -с -o bin -g bin -m 555 vacation /usr/bin install -с -o bin -g bin -m 444 vacation.0 /usr/man/manl/vacation. 1 make[1]: Leaving directory '/usr/local/src/sendmail-8.11.3/obj.Linux.2.2.10.i586/vacation'
Команда Build устанавливает страницы руководства, исполняемые файлы, файл справки, а также файл состояния в соответствующие каталоги вашей системы.
sendmail готова к запуску. В следующем разделе описывается синтаксис ко-манды sendmail.

