[exim-conf] сборка exim и libspf2 на Solaris 10

Victor Ustugov victor на corvax.kiev.ua
Вт Июл 6 21:30:24 EEST 2010


приветствую

реализована сборка exim с моими патчами под Solaris 10 (точнее Solaris 
10u8):
http://mta.org.ua/exim-4.69-conf/pkgsrc-solaris/exim-4.72/

механизм сборки основан на подобных механизмах для сборки exim из pkgsrc 
для NetBSD и DragonFly BSD.

подготовка к сборке exim на Solaris чуть более сложная, чем на других 
системах, поэтому опишу ее немного подробнее.


устанавливаем (если они еще не установлены) gcc, gmake, wget, m4, tar и 
т. д. с дистрибутивного DVD:

pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWgcc
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWgmake
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWwgetu
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWgm4
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWgtar
export PATH=$PATH:/usr/sfw/bin

настраиваем установку пакетов с blastwave.org:

cd /tmp
/usr/sfw/bin/wget http://download.blastwave.org/csw/pkgutil_`/sbin/uname -p`.pkg

pkgadd -d pkgutil_`/sbin/uname -p`.pkg/opt/csw/bin/pkgutil --catalog

устанавливаем rsync:

/opt/csw/bin/pkgutil --install rsync
export PATH=$PATH:/opt/csw/bin

к этому времени обязательно должны быть решены возможные проблемы с 
locale, сопровождаемые выводом следующих сообщений при выполнении 
консольных команд:
couldn't set locale correctly

проблемы решаются путем указания корректных значений переменных locale в 
файле /etc/default/init с последующей перезагрузкой.

разворачиваем pkgsrc:

cd /usr
wget ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.gz 
-O/tmp/pkgsrc.tar.gz
gtar -xzf /tmp/pkgsrc.tar.gz -C /usr
echo CC=gcc >> /etc/mk.conf
cd /usr/pkgsrc/bootstrap
./bootstrap
export PATH=$PATH:/usr/pkg/bin:/usr/pkg/sbin

перед сборкой openssl из pkgsrc необходимо исправить ошибку gcc 3.x на 
Solaris/x86:
http://mail-index.netbsd.org/pkgsrc-users/2008/12/15/msg008884.html

wget http://www.openssl.org/%7Eappro/values.c -O/tmp/values.c
ksh -f /tmp/values.c

устанавливаем переменную окружения SYSV3 для нормальной работы echo -n:

export SYSV3=YES

разворачиваем конфигуратор:

mkdir -p /usr/pkg/etc/exim/m4
cd /usr/pkg/etc/exim/m4
wget http://mta.org.ua/exim-4.69-conf/m4/Makefile
gmake sync && gmake sync pre-install

при необходимости собираем libspf2 (если она соберется по зависимостям 
при сборке exim'а, то в этом случае не будут наложены мои патчи):

cd /usr/pkg/etc/exim/pkgsrc-solaris/libspf2-1.2.9
gmake install

собираем exim:

cd /usr/pkg/etc/exim/pkgsrc-solaris/exim-4.72
cp Makefile.local.sample Makefile.local
vi Makefile.local
gmake patch_port
gmake install

добавляем пути поиска библиотек из состава pkgsrc для использования их 
из dlfunc (мне нужна была libGeoIP.so.1 из состава GeoIP для определения 
страны по IP адресу хоста):

crle -c /var/ld/ld.config -l /lib:/usr/lib:/usr/local/lib:/usr/pkg/lib

из-за отсутствия mailwrapper вручную создаем символические ссылки на exim:

mv /usr/sbin/sendmail /usr/sbin/sendmail.orig
ln -s `which exim` /usr/sbin/sendmail
mv /usr/sbin/newaliases /usr/sbin/sendmail.orig
ln -s `which exim` /usr/sbin/newaliases
mv /usr/bin/mailq /usr/bin/mailq.orig
ln -s `which exim` /usr/bin/mailq
mv /usr/lib/sendmail /usr/lib/sendmail.orig
ln -s `which exim` /usr/lib/sendmail



что касается непосредственно процесса сборки exim, то он мало чем 
отличается от сборки exim из pkgsrc на других системах.

при необходимости собрать exim с поддержкой libspf2 нужно в переменной
PKG_OPTIONS файла Makefile.local указать значение exim-spf.

при необходимости собрать exim с поддержкой embedded perl необходимо в 
переменной PKG_OPTIONS файла Makefile.local указать значение exim-perl.

при этом надо обратить внимание, что в этой же переменной нужно оставить
значение exim-expand-dlfunc, т. к. dlfunc сейчас широко применяется в
конфигураторе и собирать exim без поддержки dlfunc я не рекомендую.

т. к. по умолчанию в переменной confMAILERTABLE_LMTP включено
использование lmtp транспорта в mailertable, то в значении переменной
PKG_OPTIONS нужно указать и exim-transport-lmtp. если необходимости в
роутинге почты по LTMP нет, то можно в conf/site указать NO в качестве
значения confMAILERTABLE_LMTP и не указывать exim-transport-lmtp в
значении PKG_OPTIONS в Makefile.local.

далее нужно выполнить gmake build, далее gmake install


собранные бинарные пакеты exim и libspf2 для Solaris 10 выложены в 
рипозитарий:
http://mta.org.ua/updates/SunOS/5.10/i386/


в процессе отладки сборки exim из pkgsrc под Solaris очень помогли 
советы Андрея Октябрьского.

-- 
Best wishes Victor Ustugov   mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 371808614 nic-handle: CRV-UANIC




Подробная информация о списке рассылки exim-conf