Ubuntu karmic exim upgrade 4.71 sa-exim

tron

New member
Joined
Feb 26, 2010
Messages
1
Just a FYI, after upgrading from 4.69 to 4.71 in order to use DKIM,
I've got stumped with an error from loading the sa-exim.so that I was using.

What I did:
-downloaded 4.71 sources
-used /usr/shared/doc/exim-daemon-heavy/EDITME.exim4-heavy.gz as Local/Makefile, plus some PREC stuff from the 4.71 EDITME
-make & make install.

This worked like a charm in one system, but in the other where I was using
sa-exim.so, it did not:

2010-02-25 14:53:38 Exim configuration error in line 233 of /var/lib/exim4/config.autogenerated.tmp:
main option "local_scan_path" unknown
Invalid new configfile /var/lib/exim4/config.autogenerated.tmp, not installing /var/lib/exim4/config.autogenerated.tmp to /var/lib/exim4/config.autogenerated

Then I learned about the dynamic patch to enable .so loading, so I downloded
sa-exim 4.2.1 and applied the patch, just to go to:

2010-02-25 20:03:00 1NkmjU-0007pf-OJ local_scan() library open failed - message temporarily rejected
2010-02-25 20:03:00 1NkmjU-0007pf-OJ [email protected] U=root P=local temporarily rejected
by local_scan(): Local configuration error - local_scan() library failure\n
/usr/lib/exim4/local_scan/sa-exim.so: undefined symbol: message_id

After some digging, it turns out that the EDITME/Makefile is using
visibility=hidden flag to gcc, but the patch (the one I applied at least)
was not changing the PRAGMA to default arround the needed symbols.

So... somewhere I found a patch that did the magic:
insert #pragma GCC visibility push(default) and #pragma GCC visibility pop
arround the local_scan.h file (just bellow #include <sys/types>) like:

#include <sys/types.h>
#pragma GCC visibility push(default)
#include "config.h"

...

extern uschar *string_sprintf(char *, ...);

#pragma GCC visibility pop

/* End of local_scan.h */


That did the trick for me. Hope it helps someone.
-Carlos
 
Back
Top