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