Компиляция sendmail

Содержание материала

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

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 находит и использует файлы с такими именами.

Как следует из расширений ,т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.


Обмениваться, хранить, передавать Ваши файлы стало просто как никогда.
yandex-disk
Читать подробнее: для чего Yandex-Диск проекту Mini-Server. Практика установки, настройки и использования сетевого хранилища на Ubuntu server LTS 12.04 в статье Резервное копирование сервера Ubuntu на Яндекс Диск.

>> Ubuntu 12.04 + Nginx Скачать сервер
>> Fedora 15 Скачать сервер
>> Простой Debian 6.0.6 Скачать сервер
>> CentOS 6.0 и
+ (5.6) другой
Скачать сервер
>> OpenSUSE 11.4
MAX
Скачать сервер

Вход на сайт

ВНИМАНИЕ!

Регистрация на сайте только по согласованию с администратором ресурса. Обращаться через форму обратной связи.