Алексей Киреев wrote:
> Методом тыка понял, кто виновник: это опция (к ней нет никаких комментарев в 
> Makefile):
> CFLAGS += -fvisibility=hidden
> 
> Собрал exim4.77 на CentOS 5.5, не сразу, но добился работы exim-dlfunc.so и 
> начал изучать различие в флагах компиляции. Оказывается, в EXTRALIBS можно 
> ничего не писать, т.к. -ldl и -rdynamic (которого достаточно, т.е. не нужен 
> флаг -export-dynamic) - эти флаги берутся из опций линковщика, которые 
> выставляет perl (в конце набора параметров компиляции), примерно так:
> 
> gcc -o exim  acl.o child.o crypt16.o daemon.o dbfn.o debug.o deliver.o 
> directory.o dns.o drtables.o enq.o exim.o expand.o filter.o filtertest.o 
> globals.o dkim.o header.o host.o ip.o log.o lss.o match.o moan.o os.o parse.o 
> queue.o rda.o readconf.o receive.o retry.o rewrite.o rfc2047.o route.o 
> search.o sieve.o smtp_in.o smtp_out.o spool_in.o spool_out.o store.o string.o 
> tls.o tod.o transport.o tree.o verify.o lookups/lf_quote.o 
> lookups/lf_check_file.o lookups/lf_sqlperform.o local_scan.o perl.o malware.o 
> mime.o regex.o spam.o spool_mbox.o demime.o bmi_spam.o spf.o srs.o dcc.o 
> version.o \
>           routers/routers.a transports/transports.a lookups/lookups.a \
>           auths/auths.a pdkim/pdkim.a \
>           -lresolv -lnsl -lcrypt -lm   -lpam -ldl \
>            -ldb -lldap -llber -lmysqlclient -lpq -lsqlite3 -lsasl2 \
>           -Wl,-E  -fstack-protector -L/usr/local/lib  
> -L/usr/lib/perl/5.14/CORE -lperl -ldl -lm -lpthread -lc -lcrypt -lgnutls 
> -lpcre -rdynamic
> 
> В последней строке - опции для perl, там -rdynamic. Возможно это и есть ответ 
> на вопрос, почему без компиляции perl не видны символы acl_added_headers.

на сколько я понимаю, при сборке с поддержкой perl в таком случае
используется значение из CFLAGS_DYNAMIC

и получается, что при сборке с поддержкой dlfunc без поддержки зукд
нужно просто добавить -rdynamic в EXTRALIBS


>> я год назад пытался найти зависимость от сборки с поддержкой и без
>> поддержки perl и выводом сообщения об ошибке "Undefined symbol
>> "acl_added_headers"" - безуспешно.
> 
> 
> В CentOS символ acl_added_headers виден глобально (второе поле - g):
> objdump -t /usr/sbin/exim|grep acl_added
> 0812b05c g     O .bss   00000004              acl_added_headers
> 
> В Debian, когда не работала exim-dlfunc.so этот символ был виден локально 
> (второе поле - l):
> objdump -t /usr/sbin/exim4.bad |grep acl_added
> 081267ec l     O .bss   00000004              acl_added_headers
> 
> Причём проверять надо бинарник без strip, иначе "SYMBOL TABLE: no symbol" 

ясно

>> при этом strings `which exim` | grep acl_removed_headers выдавало пустую
>> строку или acl_removed_headers?
>>
> Сейчас strings `which exim` | grep acl_added_headers
> выдаёт acl_added_headers
> 
> acl_removed_headers - я сейчас не патчил с этим функционалом. Вообще, он 
> нужен или можно без него нормально работать?

можно работать без него. просто я много использую удаление полей
заголовок в acl. делаю это с помощью патча, который когда-то
опубликовали в exim-dev, но который не включили в релиз.

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

> Так же заметил, что у Вас на сайте на главной странице ссылка 
> http://mta.org.ua/exim-4.76-conf/ (Паровоз (конфигуратор для exim 4.70 и 
> выше):) ведёт на http://mta.org.ua/exim-4.69-conf/.

поправил

> Аналогично и с другой ссылкой - "Паровоз (конфигуратор для exim 4.67 и 
> выше):". Похоже из-за этого я взял файл kas3.c из 4.69.

поправил

на самом деле в самой dlfunc ничего не поменялось, кроме упрощения
сборки ее без учета использования патча для удаления полей заголовков в acl

> Спасибо Вам и Лене за помощь. И спасибо за kas3.c - наконец то получилось 
> прикрутить нормально kas к exim.

спасибо из пинок в сторону -rdynamic

а касперы потихоньку поворачиваются лицом к более функциональным методам
интеграции контент сканеров и антивирусов с exim.
в KAV 5.6 штатно включена их dlfunc.

среди нас тут есть тот, кто к этому руку приложил ощутимо. даже наверное
две :)

> При local_scan я не мог на этапе получения сообщения своими условиями 
> отвергнуть сообщение. Ну а метод интеграции с kas-pipe вообще не понравился.

поэтому я в свое время и стал испльзовать dlfunc.

а если использовать одновременно dlfunc для интеграции exim с DSPAM и
dlfunc для интеграции exim с KAS, при этом в KAS добавить правила для
оценки полей, добавленных самим DSPAM, то можно получить KAS с неплохим
статистическим фильтром, чего у него самого изначально нет.

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

_______________________________________________
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users

Ответить