26 февраля 2012 г. 0:54 пользователь Victor Ustugov
<[email protected]> написал:
> Алексей Киреев 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:[email protected]
> public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
> ICQ UIN: 77186900, 371808614 nic-handle: CRV-UANIC
>
> _______________________________________________
> Exim-users mailing list
> [email protected]
> http://mailground.net/mailman/listinfo/exim-users
>



-- 
Sincerely yours,
Oleg Kostyuk (CUB-UANIC)
_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users

Ответить