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
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