[exim-conf] механизм сборки exim 4.71 из MacPorts для Mac OS X

Victor Ustugov victor на corvax.kiev.ua
Вт Янв 22 21:25:24 EET 2013


Victor Ustugov wrote:

>> реализован пробный вариант механизма сборки pkgsrc exim 4.80.1 для Mac OS X:
>> http://mta.org.ua/exim-4.76-conf/packages/pkgsrc-macosx/exim-4.80.1/
> 
> реализован пробный механизм сборки exim 4.71 из MacPorts:
> http://mta.org.ua/exim-4.76-conf/packages/ports-macosx/exim-4.71_2/
> 
> версии софта там такие же старые, как и в портах OpenBSD.
> 
> т. о. задача автоматизации сборки exim со своими патчами под данную
> систему портов носит практически чисто академический характер.
> 
>> опции сборки такие же, как для pkgsrc под другие системы.
>> пример указания опций сборки:
>> http://mta.org.ua/exim-4.76-conf/packages/pkgsrc-macosx/exim-4.80.1/Makefile.local.sample
> 
> опции сборки (по крайней мере касательно накладываемых патчей) почти
> такой же, как для других механизмов сборки exim 4.71.
> 
> за исключением того, что я изначально отказался от патча
> patch-src::dlopen-localscan.patch (все равно local_scan я нигде не
> использую), patch-src::expand-primary_hostname.patch (лучше указывать в
> site/configure.general вычисляемое значение active_hostname),
> patch-src::hide_ldap_error.patch и patch-src::hide_ldap_pass.patch (их
> функционал дублируется патчем patch-src::hide_expand_error.patch)
> 
> набор применяемых патчей можно менять в файле Makefile.local.
> пример можно посмотреть в файле Makefile.local.sample.

указание набора применяемых патчей переделано с использованием variant'ов.

с одной стороны не нужно будет каждый раз при корректировке набора
патчей вносить исправления в значение patchfiles в файле Portfile.

с другой стороны после подключения патчей в каталог
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/mail/exim/files
остальные манипуляции по сборке порта можно будет проводить штатными
средствами MacPorts, указывая при сборке порта exim нужные наборы
variant'ов.

с третьей стороны, все это сильно упростило файл Makefile.inc в каталоге
механизма сборки порта exim. может в ближайшем будущем он вообще будет
упразднен при сборке exim из MacPorts.

т. о. теперь для подготовки порт exim нужно находясь в каталоге
packages/ports-macosx/exim-4.71_2 выполнить gmake patch_port

при этом будет модифицирован файл Portfile в каталоге порта, в
подкаталоге files будут созданы символические ссылки на все доступные
для этой версии порта патчи.

при необходимости вернуть файлы порта в исходное состояние можно
выполнить gmake replace_port

далее для сборки порта можно выполнять gmake clean, gmake build, для
установки порта gmake install, для обновления gmake upgrade, для
принудительного обновления порта (например, для сборки и установки с
другим набором variant'ов) - gmake upgrade_force

> что касается других параметров сборки - я пока добавил поддержку sqlite
> и dlfunc в виде штатного для MacPorts механизма variant'ов.
> 
> пример указания выполнять сборку exim с поддержкой sqlite и dlfunc можно
> посмотреть в уже упомянутом файле Makefile.local.sample.

полный набор доступных на текущий момент времени variant'ов в учетом
сегодняшних изменений по формированию набора применяемых патчей:

sqlite
dlfunc
hide_expand_error
lmtp_extern
recursive_acl
rfc2047_mimelen
rfc2047_utf8_fix
rfc2231
spamd_next_try
spool_mbox
user_unknown_defer2fail

краткое описание каждого вариант будет доступно в файле Portfile порт
exim после выполнения gmake patch_port

>> отличается pkgsrc для Mac OS X наличием файла настроек
>> /System/Library/LaunchDaemons/org.exim.exim.plist для общесистемного
>> менеджера сервисов launchd с использованием org.exim.exim в качестве
>> значения Label.
> 
> в MacPorts такой файл создается автоматически на основании директив
> startupitem.* в файле сборки порта Portfile. так что с этим возиться не
> пришлось.
> 
>> стартовать exim при этом можно двумя способами - с помощью launchctl и
>> с помощью традиционного стартового скрипта из /usr/pkg/etc/rc.d:
>>
>> /bin/launchctl start org.exim.exim
>> /usr/pkg/etc/rc.d/exim start
>
> при сборке из MacPorts стартовать exim можно несколькими способами:
> 
> /opt/local/share/exim/exim.sh start - собственно стартовый скрипт
> 
> /opt/local/etc/LaunchDaemons/org.macports.exim/exim.wrapper start -
> wrapper для вышеуказанного скрипта, который используется при
> необходимости launchctl - управляющим интерфейсом для launchd

как показала практика последних суток, двумя вышеуказанными скриптами
лучше не останавливать exim. launchd все равно его перезапустит. по
крайней мере если значение KeepAlive в org.macports.exim.plist будет
равно true.

> /bin/launchctl start org.macports.exim - с этим способом старта пока
> проблемы, хотя он должен быть самым корректным при использовании launchd

опять же, если значение KeepAlive в org.macports.exim.plist будет равно
true, то при выполнении /bin/launchctl stop org.macports.exim будет
выполнен перезапуск exim'а менеджером launchd.

видимо просто придется просто выполнять load/unload

>> если exim будет собираться с поддержкой SPF, то libspf2 лучше собрать с
>> использованием отдельного механизма, а не с помощью сборки штатного pkgsrc:
>> http://mta.org.ua/exim-4.76-conf/packages/pkgsrc-macosx/libspf2-1.2.9/
> 
> в MacPorts нет порта для libspf2. поэтому при необходимости проверять
> соответствие адреса хоста отправителя SPF записи домена отправителя
> нужно использовать `SPFD' в качестве значения переменной
> `confSPF2_BACKEND' в site/conf.
> 
> в MacPorts нужно установить порт p5-mail-spf и использовать spfd и его
> состава.
> 
> мне не удалось создать файл для запуска spfd средствами launchd.
> p5-mail-spf - это stub port, реально spfd собрался у меня из порта
> p5.12-mail-spf. для p5.12-mail-spf отдельного Portfile нет, а в Portfile
> для p5-mail-spf все настройки startupitem.* были проигнорированы при сборке.
> 
> т. о. стартовые скрипты и файл для launchd придется настраивать вручную.
> 
> нужно создать каталог /opt/local/share/p5-mail-spf и сохранить в нем файл:
> 
> http://mta.org.ua/exim-4.76-conf/packages/ports-macosx/p5-mail-spf-2.7.0_3/files/share/p5-mail-spf/spfd.sh
> 
> далее нужно создать каталог
> /opt/local/etc/LaunchDaemons/org.macports.spfd и сохранить в нем файлы:
> 
> http://mta.org.ua/exim-4.76-conf/packages/ports-macosx/p5-mail-spf-2.7.0_3/files/etc/LaunchDaemons/org.macports.spfd/spfd.wrapper
> 
> http://mta.org.ua/exim-4.76-conf/packages/ports-macosx/p5-mail-spf-2.7.0_3/files/etc/LaunchDaemons/org.macports.spfd/org.macports.spfd.plist
> 
> после этого нужно выполнить:
> 
> /bin/launchctl load -w
> /opt/local/etc/LaunchDaemons/org.macports.spfd/org.macports.spfd.plist

еще нужно выполнить:

ln -s
/opt/local/etc/LaunchDaemons/org.macports.spfd/org.macports.spfd.plist
/Library/LaunchDaemons/

> это позволит полноценно работать с SPF записями без использования
> библиотеки libspf2.
> 


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