[exim-conf] механизм сборки pkgsrc exim 4.76 для RedHat/CentOS/Fedora

Victor Ustugov victor на corvax.kiev.ua
Сб Май 14 00:03:01 EEST 2011


Victor Ustugov wrote:

>> обновился механизм сборки порта exim для FreeBSD с собранными мной патчами
> 
> обновился механизм сборки pkgsrc exim для NetBSD/DragonFly
> BSD/Solaris/Open Solaris:
> 
> http://mta.org.ua/exim-4.70-conf/packages/pkgsrc-netbsd/exim-4.76/
> http://mta.org.ua/exim-4.70-conf/packages/pkgsrc-dragonfly/exim-4.76/
> http://mta.org.ua/exim-4.70-conf/packages/pkgsrc-solaris/exim-4.76/
> 
> в настоящий момент времени механизмы сборки pkgsrc exim для NetBSD и
> DragonFly BSD ничем не отличаются.
> в недавнем прошлом они отличались использованием внутри механизма сборки
> make и bmake соответственно.
> 
> в будущем механизмы сборки pkgsrc для NetBSD и DragonFly BSD скорее
> всего будут объединены.
> возможно будет использован один механизм сборки pkgsrc для всех систем,
> который в зависимости от системы будет накладывать на сам порт те или
> иные патчи в зависимости от системы.
> 
> также возможно расширение поддерживаемых систем за счет CentOS, т. к. у
> нас тут есть постмастера, использующие CentOS + pkgsrc + exim

реализован пробный вариант механизма сборки pkgsrc exim 4.76 для
RedHat/CentOS/Fedora:

http://mta.org.ua/exim-4.70-conf/packages/pkgsrc-redhat/exim-4.76/

продиктовано это было не только и не столько моим желанием расширить
набор поддерживаемых систем для pkgsrc exim с моими патчами, сколько
тем, что разработчики Fedora не спешат заворачивать exim 4.76 в src.rpm

до сих пор в Fedora Development доступен лишь exim-4.73-3.fc15.src.rpm,
хотя информация об уязвимости в exim 4.70-4.75 была опубликована еще
06.05.2011.

> pkgsrc для RedHat/CentOS/Fedora будет отличаться лишь стартовым скриптом
> и механизмом его регистрации с помощью chkconfig, а также удалением из
> системы стартового скрипта. также в RedHat/CentOS/Fedora при установке
> exim из pkgsrc будет настроен mail wrapper с использованием механизма
> alternatives.

тут все оказалось не так просто. вернее чуть более громоздко и возможно
чуть более запутанно.

итак, все, что устанавливается непосредственно из pkgsrc, я оставил
внутри каталога /usr/pkg.

отличием pkgsrc для RedHat/CentOS/Fedora от других ОС (NetBSD/DragonFly
BSD/Solaris/Open Solaris) является установка файла с параметрами демона
в /usr/pkg/share/examples/exim/sysconfig

также отличается содержимое стартового скрипта, устанавливаемого в
/usr/pkg/share/examples/rc.d/exim.
он реализован максимально приближенно к штатному стартовому скрипту из
состава RPM из поставки Fedora.

прединсталляционный скрипт перед установкой exim из pkgsrc производит
следующие действия:
1. при необходимости создает каталог /var/spool/exim
2. при необходимости создает группу exim
3. при необходимости создает учетную запись пользователя exim, от имени
которого традиционно запускается exim на RedHat/CentOS/Fedora.

постинсталляционный скрипт после установки exim из pkgsrc производит
следующие действия:
1. при необходимости создает каталог /etc/exim с соответствующими
правами и владельцем
2. если файл /etc/exim/configure не существут, то переносит дефолтовый
конфигурационный файл exim'а, установленный из pkgsrc, из
/usr/pkg/etc/exim/configure в /etc/exim/configure и создает
символическую ссылку /usr/pkg/etc/exim/configure, указывающую на
/etc/exim/configure
3. если файл /etc/exim/configure существут, то удаляет дефолтовый
конфигурационный файл exim'а /usr/pkg/etc/exim/configure, установленный
из pkgsrc, и создает символическую ссылку /usr/pkg/etc/exim/configure,
указывающую на /etc/exim/configure
4. создает символическую ссылку /etc/exim/exim.conf, указывающую на
/etc/exim/configure
5. при необходимости создает с соответствующими правами и владельцем
следующие каталоги:
/var/spool/exim
/var/spool/exim/db
/var/spool/exim/input
/var/spool/exim/msglog
/var/log/exim
6. копирует стартовый скрипт из /usr/pkg/share/examples/rc.d/exim в
/etc/rc.d/init.d/exim
7. копирует файл параметров запуска демона из
/usr/pkg/share/examples/exim/sysconfig в /etc/sysconfig/exim
8. регистрирует exim как системный сервис с помощью chkconfig
9. настраивает механизм alternatives на использование exim в качестве
MTA по умолчанию.

при настройке mail wrapper'а я не стал по аналогии со штатным exim,
установленным из RPM, создавать в каталоге /usr/sbin символическую
ссылку sendmail.exim и в каталоге /usr/bin символические ссылки
mailq.exim, newaliases.exim, rmail.exim, rsmtp.exim, runq.exim. в
качестве путей для мастера и всех слейвов я сразу указывал
/usr/pkg/sbin/exim.

а весьма путанная схема использования конфигурационных файлов связана с
несколькими ньюансами:
1. пока хотелось как можно меньше вмешиваться непосредственно в процесс
сборки exim'а. поэтому конфигурационный файл он ищет в
/usr/pkg/etc/exim/configure.
2. на RedHat/CentOS/Fedora конфигурационные файлы exim'а по умолчанию
находятся в /etc/exim, поэтому я перенес умолчательный configure в этот
каталог, а в /usr/pkg/etc/exim создал символическую ссылку на него
3. в своем конфигураторе я всегда создаю конфигурационный файл с именем
configure, как принято в exim'е. поэтому принятый по умолчанию
меинтейнерами exim'а в RedHat/CentOS/Fedora файл /etc/exim/exim.conf я
сделал лишь символической ссылкой на /etc/exim/configure

следует обратить внимание, что между установкой exim при несуществующем
ранее файле /etc/exim/configure и первым запуском exim нужно
сгенерировать /etc/exim/configure таким образом, чтобы значение
параметра exim_user равнялось exim. в противном случае exim при запуске
будет использовать конфигурационный файл /usr/pkg/etc/exim/configure,
указывающий на дефолтный файл /etc/exim/configure, в котором не указано
в явном виде значение параметра exim_user. следовательно, exim будет
запущен от дефолтного для pkgsrc (т. е. для NetBSD) пользователя mail,
что помешает корректной работе демона.

что же касается самой сборки pkgsrc, то она ничем не отличается от
сборки exim из pkgsrc на NetBSD/DragonFly BSD/Solaris/Open Solaris.

бинарные пекаджи exim 4.76 для RedHat/CentOS/Fedora я пока не
выкладывал, т. к. возможно, что кроме Андрея Октябрьского exim из pkgsrc
никому из читающих рассылку не будет нужен.

да и не исключено, что тот же Андрей найдет кучу недоработок в описанном
варианте сборки pkgsrc и его придется дорабатывать.

-- 
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