Алексей Киреев 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