RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

Перевод выполнен Алексеем Паутовым в рамках некоммерческого проекта RussianLDP (http://www.rldp.ru/). Именно на этом сайте и надлежит искать новые версии, если таковые будут.

4. Сборка и инсталляция Exim

4.1. Распаковка

Exim распространяется как bzip или gzip tar-архив, который при распаковке разворачивается в каталог с именем релиза (например, exim-4.63), куда помещаются следующие файлы:
ФайлОписание
ACKNOWLEDGMENTS Содержит слова благодарности
CHANGES Содержит указания на изменения
LICENCEGNU-лицензия
MakefileГлавный make-файл
NOTICEУсловия использования Exim
README Список файлов, каталогов и небольшие инструкции по сборке

Другие файлы, чьи имена начинаются словом README, могут так же присутствовать.
ФайлОписание
LocalПустой каталог для локальных файлов
OSСпецифические файлы для операционных систем
docДокументация
exim_monitorИсходные файлы exim monitor
scriptsСкрипты, использующиеся для сборки
srcИсходные тексты
utilНезависимые утилиты

Главные утилиты содержатся в каталоге src и собираются вместе с двоичным файлом exim. Каталог util содержит несколько дополнительных скриптов, которые могут быть полезны.

4.2. Разнообразие архитектур и операционных систем

Процесс сборки exim устроен таким образом, чтобы облегчить получение файлов для разных архитектур и операционных систем из одного и того же набора исходных текстов. Компиляция происходит не в каталоге src. Вместо этого создается build directory для различных операционных систем. Символические ссылки инсталлируются в каталог, где происходит сборка. В большинстве случаев exim способен распознать архитектуру компьютера и операционную систему, но в случае необходимости это может быть изменено.

4.2.1. Библиотека PCRE

У Exim больше нет встроенной библиотеки PCRE, поскольку большинство современных систем включает PCRE как системную библиотеку, хотя Вы, возможно, должны установить PCRE или пакет развития PCRE для Вашей операционной системы. Если у Вашей системы будет нормальная установка PCRE, то процесс сборки Exim не будет нуждаться ни в какой дальнейшей конфигурации. Если библиотека или заголовки будут в необычном местоположении, то Вы должны будете или установить соответственно директивы PCRE_LIBS и INCLUDE, или установите PCRE_CONFIG=yes, чтобы использовать установленную команду pcre-config. Если у Вашей операционной системы нет никакой поддержки PCRE, то Вы должны будете получить и собрать текущий PCRE из ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/. Много полезной информации по PCRE доступно на http://www.pcre.org/.

4.3. DBM-библиотеки

Даже если Вы не используете каких-либо DBM-файлов в конфигурации, Exim нуждается в библиотеке чтобы использовать индексированные файлы базы данных. К сожалению, присутствует множество DBM-библиотек, зачастую различные операционные системы требуют различные установленные библиотеки. Если Вы используете Solaris, IRIX, какую-либо современную BSD-систему или дистрибутив Linux, конфигурация DBM должна пройти автоматически, и Вы можете не читать этот раздел. В противном случае Вам придется узнать больше о DBM-библиотеках. Лицензионные версии Unix обычно содержат библиотеку функций DBM, работающую через интерфейс ndbm, на это Exim расчитывает по умолчанию. В свободных версиях Unix понятие "стандарт" варьируется. В частности, в ранних версиях Linux по умолчанию не было никакой библиотеки DBM, и различные распространители ставили разные версии DBM в свои дистрибутивы. Как бы то ни было, свежие версии стандартизировались на библиотеке DB от Berkley.

Различные DBM-библиотеки имеют разные соглашения об именовании файлов, которые они используют. Когда программа открывает файл с именем dbmfile, существует несколько вариантов:

  • 1. Традиционное ndbm-исполнение, такое как то, которое идет как часть Solaris, оперирует с двумя файлами dbmfile.dir и dbmfile.pag.
  • 2. GNU-библиотека gdbm оперирует одним файлом. Если используется совместимость с ndbm, то создаются две жесткие ссылки на файлы dbmfile.dir и dbmfile.pag, если используется родной интерфейс, тогда используемое имя не изменяется.
  • 3. Пакет DB от Беркли, если вызывается в режиме совместимости с ndbm, оперирует единственным файлом dbmfile.db, но программируется так же, как и традиционный ndbm.
  • 4. Если пакет от Беркли используется в родном режиме, он оперирует одним файлом ndbm dbmfile, интерфейс программирования несколько отличен от ndbm.
  • 5. Углубляясь далее, есть несколько DB пакетов от Беркли. Версия 1.85 считалась долгое время стабильной, версии 2.x и 3.x были текущими, последняя версия пронумерована как 4.x. Поддержка некоторых более ранних версий прекращена. Все версии DB-пакетов от Беркли могут быть получены на http://www.sleepycat.com/.
  • 6. Еще одна библиотека с названием tdb доступна по адресу: http://download.sourceforge.net/tdb. Она также обладает собственным интерфейсом и оперирует одним файлом.

Exim и его утилиты могут быть скомпилированы для использования любого из этих интерфейсов. Чтобы использовать пакеты от Беркли в родном режиме Вы должны добавить строку USE_DB в файле конфигурации (обычно это Local/Makefile). Например:
USE_DB=yes

Точно так же для использования gdbm Вы добавляете строку USE_GDBM, а для tdb нужна USE_TDB. При использовании нескольких интерфейсов Вы получите ошибку.

На низком уровне при построении конфигурации не устанавливается ни одна из этих опций, таким образом присваивается интерфейс типа (1). Однако некоторые конфигурационные файлы операционных систем (например, BSD и Linux) принимают тип (4), устанавливая USE_DB по умолчанию, а в файлы конфигурации для Cygwin устанавливается USE_GDBM. Все, что Вы определите в Local/Makefile, отменяет значения, принимаемые по умолчанию.

Также, как и определение USE_DB, USE_GDBM или USE_TDB, может возникнуть необходимость добавить DBMLIB, чтобы вызвать включение этой библиотеки для следующих установок:
DBMLIB = -ldb
DBMLIB = -ltdb

Такие настройки будут работать, если библиотека DBM установлена в стандартном каталоге. В тех случаях, когда это не так, файлы c заголовками для библиотеки могут также находиться не в каталоге, принятом по умолчанию, тогда Вам придется определить директиву INCLUDE и указать местоположение файла с заголовками для библиотеки, а также определить полный путь к библиотеке, как в этом примере:
INCLUDE=-I/usr/local/include/db-4.1
DBMLIB=/usr/local/lib/db-4.1/libdb.a

Более детальное рассмотрение разных DBM-библиотек находится в файле doc/dbm.discuss.txt в дистрибутиве Exim.

4.4. Предсборочная конфигурация

Перед сборкой Exim локальный файл конфигурации определяет опции, независимые от любой операционной системы, которые будут созданы в файле Local/Makefile. Шаблон для этого файла поставляется как файл src/EDITME и содержит в себе полные описания всех параметров настройки. Эти описания здесь не рассматриваются. Если Вы собираете Exim впервые, то самый лучший способ скопировать rc/EDITME в Local/Makefile, затем его прочитать и отредактировать соответствующим образом.

Есть три параметра в настройках, которые Вы должны оставить потому, что Exim не соберется без них. Это местоположение конфигурационного файла (CONFIGURE_FILE), каталога, куда будут установлены готовые файлы Exim (BIN_DIRECTORY), и пользователь Exim (EXIM_USER и возможно также EXIM_GROUP). Значения CONFIGURE_FILE в списке файлов могут разделятся двоеточием, Exim использует первое из них при его существовании.

Есть также несколько других параметров, которые могут быть определены, например, время сборки, время загрузки, разрешить использовать тот же двоичный файл некоторому количеству других машин. Однако, если местоположение каталога spool или log (если он не внутри spool) фиксировано, то рекомендуется указать его в файле Local/Makefile вместо рабочей конфигурации, чтобы ошибки, которые возникают на стадии запуска (например, кривой файл конфигурации) Exim, могли быть отражены в файле протокола.

Интерфейсы Exim для вызова антивирусов и спамфильтров из access control lists не собираются по умолчанию. Если Вы хотите включить эти программы, нужно вписать следующую строку:
WITH_CONTENT_SCAN=yes
в файл Local/Makefile. Более детально об этих возможностях можно почитать в главе 40. Если Вы собираетесь собирать Exim-монитор, необходим схожий процесс конфирурирования. Файл exim_monitor/EDITME должен быть отредактирован в соответствии с Вашими параметрами установки и сохранен под именем Local/eximon.conf. Если Вы довольствуетесь настройками по умолчанию, описанными в файле exim_monitor/EDITME, то Local/eximon.conf может быть пустым, но существовать он должен.

Это вся конфигурация, которая может быть необходима для большинства известных операционных систем. Однако, процесс сборки настроен таким образом, что очень легко изменить настройки, принимаемые по умолчанию операционной системой. Например, изменить компилятор C, которым по умолчанию является gcc. Смотрите подраздел 4.11 о том, как это сделать.

Имеется также параметр ENABLE_DISABLE_FSYNC. Если он задан на момент компиляции, то Exim будет собран с опцией выполнения disable_fsync. Добавлен с Exim 4.67.

4.5. Поддержка iconv()

Содержание заголовков в сообщении может быть закодировано согласно RFC 2047. Это позволяет передавать символы, которые отсутствуют в таблице определений ASCII-символов и отмечать их как являющиеся частью этих таблиц. Когда Exim проверяет строки заголовка, с помощью механизма $h_, он расшифровывает их и переводит в специфический набор символов (по умолчанию это ISO-8859-1). Перевод возможен, если операционная система поддерживает функцию iconv().

Однако, некоторые операционные системы, которые поставляются с функцией iconv(), не поддерживают очень много преобразований. Библиотека GNU libiconv (доступна по адресу http://www.gnu.org/software/libiconv/) может быть установлена на таких системах, чтобы исправить этот недостаток, так же как и на системах, которые не поддерживают iconv() вообще. После инсталляции libiconv Вы должны добавить:
HAVE_ICONV=yes
в файл Local/Makefile и пересобрать Exim.

4.6. Включение TLS/SSL-шифрования

Exim может быть собран с поддержкой шифрованных SMTP-соединений, используя STARTSSL команду согласно RFC 2487. Он также поддерживает клиентское ПО, которое ожидает немедленного соединения на нестандартном порте (смотрите tls_on_connect_ports во время выполнения и опцию командной строки tls-on-connect).

Если Вы хотите собрать Exim c поддержкой TLS, то Вы должны сперва инсталлировать библиотеку OpenSSL или GnuTLS. В Exim отсутствует непосредственная поддержка SSL-соединения. Если OpenSSL инсталлирована, то Вы должны добавить:
SUPPORT_TLS=yes
TLS_LIBS=-lssl -lcrypto
в файл Local/Makefile. Вам может также потребоваться определить путь к библиотекам OpenSSL и include-файлам. Например:
SUPPORT_TLS=yes
TLS_LIBS=-L/usr/local/openssl/lib -lssl -lcrypto
TLS_INCLUDE=-I/usr/local/openssl/include

Если Вы имеете pkg-конфигурацию в наличии, то вместо этого Вы можете использовать:

SUPPORT_TLS=yes
USE_OPENSSL_PC=openssl

Если используется GnuTLS:
SUPPORT_TLS=yes
USE_GNUTLS=yes
TLS_LIBS=-lgnutls -ltasn1 -lgcrypt
в файле Local/Makefile и опять-таки может потребоваться указать полный путь к включаемым файлам и библиотекам. Например:
SUPPORT_TLS=yes
USE_GNUTLS=yes
TLS_LIBS=-L/usr/gnu/lib -lgnutls -ltasn1 -lgcrypt
TLS_INCLUDE=-I/usr/gnu/include

Если Вы имеете pkg-конфигурацию в наличии, то вместо этого Вы можете использовать:

SUPPORT_TLS=yes
USE_GNUTLS=yes
USE_GNUTLS_PC=gnutls

Вам не нужно устанавливать TLS_INCLUDE, если такой каталог уже определен в INCLUDE. Более подробное описание, как сконфигурировать Exim с поддержкой TLS дано в главе 38.

4.7. Использование tcpwrappers

Exim может быть слинкован с библиотекой tcpwrappers, чтобы проверять входящие запросы SMTP, используя файлы tcpwrappers. Данная возможность может использоваться в качестве альтернативы собственным средствам Exim для проверки обеспечения, которое использует tcpwrappers в других целях. Для того, чтобы сделать это, нужно внести строку USE_TCP_WRAPPERS в файл Local/Makefile, убедитесь что файл tcpd.h доступен во время компиляции, а библиотека libwrap.a доступна во время компоновки, включая -lwrap в EXTRALIBS_EXIM. Для примера, если tcpwrappers инсталлирован в /usr/local, Вы должны внести соответсвующие строки:
USE_TCP_WRAPPERS=yes
CFLAGS=-O -I/usr/local/include
EXTRALIBS_EXIM=-L/usr/local/lib -lwrap
в файл Local/Makefile. Имя, используемое в файле tcpwrappers, exim. Например строка:
exim : LOCAL 192.168.1. .friendly.domain.example
в файле /etc/hosts.allow разрешает соединения от локального хоста, подсети 192.168.1.0/24 и от всех хостов в friendly.domain.example. Остальные соединения запрещаются. Название демона, используемое tcpwrappers, может быть изменено установкой TCP_WRAPPERS_DAEMON_NAME в Local/Makefile или устанавливая tcp_wrappers_daemon_name в файле конфигурирации. Для более детальной информации загляните в документацию на tcpwrappers.

4.8. Включение поддержики IPv6

Exim содержит код для использования в системах с поддержкой Ipv6. Установите значение HAVE_IPV6=YES в файле Local/Makefile, чтобы код, поддерживающий Ipv6, был включен. Также может потребоваться установить IPV6_INCLUDE и IPV6_LIB в системах, где поддержка Ipv6 не полностью включена в библиотеки и include-файлы.

Два различных типа записи DNS были определены для поддержки адресов IPv6. AAAA-записи (аналоги записей IPv4) используются в настоящий момент и, похоже, использование стало массовым. Другой тип записи, называемый A6, расценивается как более лучший, нежели AAAA, потому как он более гибкий. Однако, он считается более сложным, и его статус был уменьшен до экспериментального. Доподлинно неизвестно, использует ли кто-либо записи A6. Exim поддерживает записи A6, если Вы установили SUPPORT_A6=YES в файле Local/Makefile. Поддержка не проверялась.

4.9. Процесс сборки

На некоторых платформах поддержки Exim, не компилирует все модули поиска непосредственно в основной исполняемый файл, вместо этого помещая некоторые во внешние модули, которые могут быть загружены по требованию. Это разрешает поставщикам программного блока создавать Exim с поддержкой поисков с обширными зависимостями библиотек, не требуя, чтобы все пользователи установили все эти зависимости. Не все типы поиска могут быть так созданы.

Установите LOOKUP_MODULE_DIR к каталогу, в который будут установлены модули. Exim будет загружать модули только из этого каталога, как мера по безопасности. Вы должны будете установить CFLAGS_DYNAMIC, если это еще не определено для Вашей ОС. Может быть также надо скорректировать EXTRALIBS, подробности в src/EDITME. Для каждого модуля, который будет загружен динамически, определите соответствующую запись LOOKUP_<lookup_type>, которая должна иметь значение "2" вместо "yes". Например, это создаст lsearch непосредственно в исполняемом файле, но загрузит sqlite и поддержку mysql по требованию:

LOOKUP_LSEARCH=yes
LOOKUP_SQLITE=2
LOOKUP_MYSQL=2

Как только Local/MakefileLocal/eximon.conf, если необходимо) будет создан, запустите make в каталоге с Exim. Определяется архитектура компьютера и операционная система и создается каталог, в котором и происходит сборка. Например, на компьютере Sun с операционной системой Solaris 8, создаваемый каталог будет именоватся build-SunOS5-5.8-sparc. Символические ссылки на исходные файлы будут созданы в каталоге, где происходит сборка. Внимание: флаг -j не должен использоваться с make, процесс сборки завершится с ошибкой, если он установлен.

Если make запущен впервые, то вызывается скрипт, который создает make-файл внутри каталога, где происходит сборка, используя конфигурационный файл в каталоге Local. Новый make-файл передается новому экземпляру make. Он выполняет работу по созданию сервисных скриптов, затем компилирует и компонует исполняемый файл Exim монитора (если сконфигурировано), некоторое количество утилит и сам Exim. Команда make makefile используется для принудительного создния нового make-файла в каталоге со сборкой, по мере необходимости.

Если у Вас есть затруднения со сборкой Exim, загляните в файл README согласно Вашей операционной системе, а также поглядите в FAQ, где поясняются часто встречающиеся проблемы.

4.10. Выходные данные после make

Выходные данные, создаваемые make, собираются в строки, которые зачастую нечитабельны, ибо они очень длинные. Поэтому нормальные выходные данные не используются, а заменяются данными, схожими с теми, которые Вы видите при компиляции ядра Linux версии 2.6, только короткие строки для каждого скомпилированного или слинкованного модуля. Однако, возможно получить нормальный вывод, вызывая make следующим образом:
FULLECHO='' make -e

Значение FULLECHO по умолчанию '', это значение флага, подавляет сокращенный вывод make. Когда Вы запрашиваете полный вывод выходных данных, make расширяет стандартные выходные данные.

4.11. Отмена опций при сборке Exim

Главный make-файл, который создается в начале процесса сборки, состоит из связи некоторого количества файлов с определенными конфигурационными значениями, сопровождаемые фиксированным набором make-инструкций. Если значение установлено неоднократно, последнее значение отвергает все предыдущие. Это является удобным способом изменения настроек по умолчанию. Файлы, которые идут в следующем порядке:
OS/Makefile-Default
OS/Makefile-ostype
Local/Makefile
Local/Makefile-ostype
Local/Makefile-archtype
Local/Makefile-ostype-archtype
OS/Makefile-Base
где ostype задает тип операционной системы, и archtype определяет тип архитектуры компьютера. Local/Makefile должен существовать, иначе процесс сборки будет завершен с ошибкой, остальные три Local-файла опциональны и зачастую могут быть не нужны.

Значения, используемые для ostype и archtype, получены от скриптов scripts/os-type и scripts/arch-type, соответственно. Если также установлены значения переменных EXIM_OSTYPE или EXIM_ARCHTYPE используются их значения, таким образом являясь средством принудительной настройки. Иначе, скрипты пытаются получить значения из команды uname. Если это сделать не удается, осматриваются переменные shell OSTYPE и ARCHTYPE. Тогда применяются некоторые быстрые преобразования для получения стандартных имен, которые распознаются Exim. Вы можете запускать эти скрипты напрямую из оболочки для того, чтобы выяснить, какие значения используются в Вашей системе.

OS/Makefile-Default содержит комментарии к переменным, которые там находятся. Некоторые (но не все) рассматриваются ниже. Если что-то нужно изменить, посмотрите содержимое этого файла и содержимое файла make для Вашей операционной системы (OS/Makefile-<ostype>) чтобы узнать, какие настройки используются по умолчанию.

Если нужно изменить любое значение в OS/Makefile-Default или в OS/Makefile-ostype или добавить новое, Вам не нужно менять оригинальные файлы. Вместо этого Вам нужно записать необходимые изменения в соответствующем Local-файле. Для примера, когда сборка происходит в операционной системе Tru64-Unix (бывший Digital UNIX, еще более бывший DEC-OSF1), то необходимо изменить компилятор языка C с gcc на сс. Также компилятор должен вызываться с опцией -stdl для того, чтобы поддерживались некоторые особенности стандартного C, которые Exim использует (большинство других компиляторов распознают стандартный C по умолчанию). Для того, чтобы это сделать, нужно создать файл Local/Makefile-OSF1, содержащий следующие строки:
CC=cc
CFLAGS=-std1

Если компиляция производится для одной операционной системы, то будет гораздо проще записать необходимые строки в Local/Makefile.

Хранение локальных файлов конфигурации отдельно от файлов, идущих с дистрибутивом, позволяет проще передавать настройки новым версиям Exim путем копирования их в каталог Local.

Exim содержит поддержку LDAP, NIS, NIS+ и другие виды поисков файла, но не во все системы инсталлированы эти компоненты, поэтому по умолчанию данный код не включается в исполняемый файл. Все разные типы файлов и баз данных, которые поддерживает Exim, подключены как модули, которые включаются, если установлены соответствующие опции компиляции. Для LDAP, NIS, NIS+ параметры файла Local/Makefile следующие:
LOOKUP_LDAP=yes
LOOKUP_NIS=yes
LOOKUP_NISPLUS=yes
похожие установки применимы для других типов поиска. Они перечислены в файле src/EDITME. Во многих случаях некоторые включаемые файлы и библиотеки интерфейсов должны быть установлены до инсталляции Exim. Однако, есть некоторые типы поисков (такие, как cdb), код для которых содержится в Exim и не требуется никаких внешних библиотек и включаемых файлов. Когда поиск не включен в исполняемый файл, попытка сконфигурировать Exim, чтобы использовать такой тип вызовет ошибку.

Много систем теперь используют инструмент, названный pkg-config, чтобы обработать информацию о том, как собирать библиотеки. В Exim есть некоторая начальная поддержка возможности использовать pkg-config для поисков и аутентификаторов. Для любой переменной makefile, имя которой начинается с LOOKUP_ или AUTH_, Вы можете добавить новую переменную с суффиксом _PC. В качестве значения ей будет присвоено имя пакета. Результаты запросов через команду pkg-config будут добавлены к соответствующим переменным Makefile с директивой +=, таким образом, Ваша версия make должна поддерживать этот синтаксис. Например:

LOOKUP_SQLITE=yes
LOOKUP_SQLITE_PC=sqlite3
AUTH_GSASL=yes
AUTH_GSASL_PC=libgsasl
AUTH_HEIMDAL_GSSAPI=yes
AUTH_HEIMDAL_GSSAPI_PC=heimdal-gssapi

Exim может быть скомпонован с встроенным интерпретатором Perl, позволяющим процедурам Perl вызываться внутри строк расширения. Включение этой возможности:
EXIM_PERL=perl.o
должно быть установлено в файле Local/Makefile. Более подробно это рассматривается в главе 12. Расположение библиотек X11 варьируется между операционными системами. Сам по себе Exim не использует X11, но если Вы компилируете Exim-монитор, то библиотеки X11 должны быть доступны. Последние три переменные определены в OS/Makefile-Default:
X11=/usr/X11R6
XINCLUDE=-I$(X11)/include
XLFLAGS=-L$(X11)/lib

Они отменяются в некоторых файлах конфигурации операционных систем. Например, в файле OS/Makefile-SunOS5:
X11=/usr/openwin
XINCLUDE=-I$(X11)/include
XLFLAGS=-L$(X11)/lib -R$(X11)/lib

Если нужно отменить значения по умолчанию, запишите эти значения переменных в файл Local/Makefile-ostype. Если необходимо добавить какую-либо дополнительную библиотеку, положите переменную, называемую EXTRALIBS, которая принимается при компоновке, но по умолчанию не включена. Напротив, EXTRALIBS_EXIM используется только для компоновки исполняемого файла Exim, а не для дополнительных утилит.

Также есть DBMLIB, которая появляется в командах компоновки исполняемого файла, использующего функции DBM (смотрите раздел 4.3). И наконец есть EXTRALIBS_EXIMON, которая появляется только на этапе компоновки исполняемого файла монитора Exim и может использоваться, например, для добавления дополнительных библиотек X11.

Сборочные файлы справляются с пересборкой Exim корректно, если отредактированы конфигурационные файлы. Однако, если дополнительный конфигурационный файл удален, то необходимо создать связанный файл (то есть, Local/Makefile или Local/eximon.conf) перед пересборкой.

4.12. OS-cпецифические заголовки

Каталог OS содержит файлы, которые именуются как os.h-ostype. Это специфические заголовки C, которые не должны меняться. Есть список макропараметров, которые находятся в файле OS/os.configuring, в которые нужно посмотреть, если Вы портируете Exim на новую операционную систему.

4.13. Отмена опций при сборке монитора

Схожие процессы используются при сборке монитора Exim. Необходимые файлы:
OS/eximon.conf-Default
OS/eximon.conf-ostype
Local/eximon.conf
Local/eximon.conf-ostype
Local/eximon.conf-archtype
Local/eximon.conf-ostype-archtype

Также, как и сам Exim, последние три файла необязательно должны присутствовать, в таком случае файл OS/eximon.conf-ostype опционален. Значения по умолчанию в файле OS/eximon.conf-Default могут быть отменены динамически установкой переменных с теми же именами, которые используются EXIMON_. Например, установка EXIMON_LOG_DEPTH отменяет значение LOG_DEPTH при загрузке.

4.14. Установка двоичных файлов и скриптов Exim

Команда make install запускает скрипт exim_install без аргументов. Скрипт копирует двоичные файлы и скрипты в каталог, чье имя определено в переменной BIN_DIRECTORY в файле Local/Makefile. Инсталляционный скрипт замещает файлы только в том случае, если копируемые файлы более новые, нежели установленные. Владельцем двоичного файла Exim должен являться root c установленным битом setuid для обычной конфигурации. Поэтому Вы должны запустить make install от имени пользователя root, чтобы таким образом настроить права двоичного файла Exim. Однако, в некоторых особенных ситуациях (например, когда хост не осуществляет локальных доставок) можно запускать Exim не выставляя setuid root (для более детальной информации смотрите главу 51).

Загрузочный файл конфигурации Exim определяется переменной CONFIGURE_FILE в файле Local/Makefile. Если указывается один файл и он не существует, то файл по умолчанию src/configure.default копируется инсталляционным скриптом. Если CONFIGURE_FILE содержит список разделенный двоеточием, то по умолчанию ничего установлено не будет.

Одно изменение делается в конфигурационном файле, устанавливаемом по умолчанию: конфигурация по умолчанию содержит путь к файлу псевдонимов в системе. Путь к этому файлу устанавливается в переменной SYSTEM_ALIASES_FILE в файле Local/Makefile (/etc/aliases по умолчанию). Если файл системных псевдонимов отсутствует, то инсталляционный скрипт создает его и выводит комментарий пользователю.

Созданный файл не содержит псевдонимов, но он содержит комментарии о псевдонимах сайтов, которые должны существовать. Почтовые псевдонимы по умолчанию хранятся в /etc/aliases. Однако, некоторые операционные системы используют /etc/mail/aliases. Вы должны убедиться, справедливо ли это по отношению к Вашей операционной системе и при необходимости изменить конфигурацию Exim.

Конфигурация по умолчанию использует имя localhost как единственный локальный домен и настраивает локальную доставку в общий каталог /var/mail исполняясь как локальный пользователь. Системные псевдонимы и .forward-файлы в домашних каталогах пользователей поддерживаются, но поддержка NIS или NIS+ не конфигурируется. Домены, отличные от локального, маршрутизируются с помощью DNS с доставкой через SMTP.

Возможно инсталлировать Exim для особых целей (например, распространения двоичного файла) в специальные пути операционной системы. Можно сделать это командой:
make DESTDIR=/some/directory/ install

Этот путь будет применятся ко всем файлам, кроме файла с системными именами, который присутствует в конфигурации по умолчанию (если файл псевдонимов по умолчанию создан, он модифицируется). Для обратной совместимости используется ROOT, если DESTDIR не установлена, однако это не одобряется.

Запуск make install не скопирует Exim-скрипт convert4r4 или тестовую программу pcretest. Первый из этих скриптов Вы запустите только однажды (если обновляете Exim 3), а второй не является частью Exim. Ни один из файлов документации в doc не будет скопирован, кроме информационных файлов, которые Вы установили в переменной INFO_DIRECTORY, как описано в разделе 4.15 выше. Для утилит старые версии переименовываются с добавлением суффикса .O к именам файлов. Двоичный файл Exim обрабатывается иначе. Он инсталлируется с именем, которое включает в себя номер версии и номер компиляции, например, exim-4.63-1. Скрипт создает символическую ссылку c названием exim на двоичный файл Exim. Если Вы обновляете предыдущую версию, скрипт заботится о том, чтобы имя exim никогда не отсутствовало в каталоге (как видимое другими процессами).

Если Вы хотите увидеть, что происходит после команды make install без непосредственной инсталляции, можете добавить ключ -n в инсталляционный скрипт следующей командой:
make INSTALL_ARG=-n install

Содержимое переменной INSTALL_ARG передается инсталляционному скрипту. Вам не потребуются права root, чтобы запустить этот тест. В качестве альтернативы Вы можете управлять инсталляционным скриптом непосредственно, но это должно быть сделано в каталоге, где происходит сборка. Например в верхнем каталоге Exim используйте следующую команду:
cd build-SunOS5-5.5.1-sparc
../scripts/exim_install -n

Существуют две опции, которые распознаются инсталляционным скриптом:

  • -no_chown пропускает вызов смены владельца инсталлированного двоичного файла на root и вызов установки бита setuid.
  • -no_symlink пропускает процедуру создания символической ссылки на двоичный файл exim.

INSTALL_ARG может быть использована для передачи этих опций скрипту. Например:
make INSTALL_ARG=-no_symlink install

Инсталляционному скрипту можно также дать аргументы, определяющие, какие файлы должны быть скопированы. Например, чтобы инсталлировать только двоичный файл exim без символических ссылок, нужно использовать следующую комманду:
make INSTALL_ARG='-no_symlink exim' install

4.15. Инсталляция документации

Не все системы используют GNU info для документации, по этой причине исходные тексты Texinfo-документации не включены в главный дистрибутив. Они доступны отдельно на ftp-сайте (смотрите раздел 1.6).

Если Вы определили INFO_DIRECTORY в файле Local/Makefile и исходники Texinfo документации найдены в дереве исходников, запуск make install автоматически создаст info-файлы и инсталлирует их.

4.16. Определение каталога spool

При загрузке Exim пытается создать каталог spool, если она отсутствует. gid и uid применяются к каталогу spool те же, что и у Exim. Подкаталоги в каталоге spool создаются автоматически, по мере необходимости.

4.17. Тестирование

Проинсталлировав Exim Вы можете проверить, что конфигурационный файл синтаксически верен, запустив следующую команду, которая предполагает, что путь к двоичному файлу Exim находится в PATH.
exim -bV

Если в файле конфигурации содержатся ошибки, Exim выведет ошибку. В противном случае он выведет номер версии и дату сборки, какая DBM-библиотека используется, информацию о драйверах и других программных модулях, включенных в исполняемый файл. Используются простые тесты с адресом в качестве параметра. Например:
exim -bt <local username>
должен подтвердить что распознается локальный почтовый ящик, а:
exim -bt <remote address>
при использовании удаленного. Теперь проверим доставку почты удаленно и локально. Это может быть сделано с помощью пропуска сообщения непосредственно через Exim без прохождения через пользовательскую почтовую программу. Например:
exim -v postmaster@your.domain.example
From: user@your.domain.example
To: postmaster@your.domain.example
Subject: Testing Exim

This is a test message.
^D

Опция -v заставляет Exim выводить проверку произошедшего. В этом случае Вы должны увидеть три строки отчета, одну о прибытии сообщения, одну о его доставке и одну, содержащую Completed.

Если Вы сталкиваетесь с проблемами, загляните в файлы (mainlog и paniclog), чтобы проверить наличие какой-либо полезной информации в них. Другой источник информации, запуск Exim в отладочном режиме с опцией -d. Если сообщение застряло в spool Exim, Вы можете осуществить принудительную доставку в отладочном режиме c помощью команды:
exim -d -M <exim-message-id>

Для того, чтобы это сделать, Вы должны быть root или "admin user". Опция -d выводит очень много информации, но Вы можете вырезать специальные области. Например, если используете -d-all+route то будет использована информация только касающаяся пути письма. Для дополнительных деталей об опции -d смотрите раздел 5.

Одна проблема, которая обнаружилась на некоторых этапах, невозможность локальной доставки в каталог с общим ящиком, потому как он не имеет установленный sticky bit. По умолчанию Exim пытается создать закрытый файл до записи в файл-почтовый ящик, и если он не может создать закрытый файл, то почта не доставляется. Это можно обойти путем присвоения каталогу sticky bit или создавая определенную группу для локальной доставки и разрешить этой группе доставку в этот каталог (смотрите выше про переменную local_delivery в конфигурационном файле).

Другой подход к конфигурированию Exim: не использовать закрытые файлы, вместо этого полагаясь на функцию fcntl(). Однако, Вы должны делать это только если уверены, что пользовтельская почтовая программа также используют fcntl(). Для более подробной информации о закрытии обратитесь к главе 26.

Одна вещь, которая не может быть протестирована в системе, в которой уже запущен MTA: получение входящей SMTP-почты на стандартном порту SMTP. Однако, опция -oX может быть использована для запуска демона Exim, который слушает другой порт, или может использоваться inetd. Опция -bh и утилита exim_checkaccess может быть использована для проверки политик на входящую SMTP-почту.

Проверка новой версии в системе, на которой уже установлен Exim, может быть легко произведена сборкой исполняемого файла с другой установкой переменной CONFIGURE_FILE. Внутри конфигурационного файла все каталоги и файлы с именами, которые использует, Exim могут быть изменены, дабы сохранить чистоту версии.

4.17. Замещение другого MTA Exim

Сборка и инсталляция Exim, производящаяся впервые, не использует себя по умолчанию. Название MTA, который вызывает пользовательский почтовый агент, находится в /usr/sbin/sendmail или /usr/lib/sendmail (в зависимости от системы) и необходимо указать использование Exim, чтобы mua могли передавать письма Exim. Обычно это делается с помощью переименования любого существующего файла в /usr/sbin/sendmail или /usr/lib/sendmail и создания символической ссылки на файл exim. Хорошей идеей является удаление setuid и снятие флага x со старого MTA. Необходимо остановить и перезапустить почтового демона, если он загружен.

Некоторые операционные системы предоставляют иные пути переключения на другие MTA. Например, если Вы используете FreeBSD, нужно отредактировать файл etc/mail/mailer.conf вместо создания символической ссылки, как было только что описано. Содержание файла, загружающего Exim, следующее:
sendmail    /usr/exim/bin/exim
send-mail   /usr/exim/bin/exim
mailq       /usr/exim/bin/exim -bp
newaliases  /usr/bin/true

Как только Вы сделали символическую ссылку или отредактировали /etc/mail/mailer.conf, Ваш инсталлированый Exim "ожил". Проверьте это, получив письмо Вашей почтовой программой.

Вы должны осознавать, что скажете пользователям по поводу смены MTA. Exim может иметь разную совместимость с тем, что ранее использовалось и могут быть различия в сообщениях командной строки и в отторгнутых сообщениях. Если Вы разрешите пользователям применять возможности фильтрования Exim, следует сделать доступным для них документ с названием Интерфейс Exim для фильтрования почты (Exim's interface to mail filtering).

4.19. Обновление Exim

Если у Вас уже загружен Exim на Вашем хосте, сборка и инсталляция новой версии автоматически доступна для использования MUA или других программ, которые вызывают MTA напрямую. Однако, если у Вас загружен демон Exim, то нужно отправить ему сигнал HUP для того, чтобы он перезагрузил себя и загрузил новый файл. Вы не должны прекращать обработку почты для того, чтобы инсталлировать новую версию Exim. Инсталляционный скрипт не модифицирует существующий конфигурационный файл.

4.20. Остановка демона Exim на Solaris

Стандартной командой остановки демона на Solaris является:
/etc/init.d/sendmail stop

Если /usr/lib/sendmail является символической ссылкой, скрипт не сможет остановить Exim потому, что он использует команду ps -e и grep для вывода текста "sendmail", а его не будет, потому что настоящее имя программы (exim) дается команде ps с этими опциями. Решение состоит в том, чтобы заменить эту строку на идентификатор системного процесса, например:
pid=`cat /var/spool/exim/exim-daemon.pid`
который получим из файла, в который Exim сохраняет его.

Стоит отметить, что остановка демона не означает остановки Exim. Сообщения все еще могут получаться от локальных процессов и, если автоматическая доставка сконфигурирована (вероятный случай), то доставка будет происходить.

Поиск

 

Найди своих коллег!