The first argument to local_scan() is the file descriptor for the file that
contains the body of the message. While writing to the file isn't
recommended, it isn't forbidden. It can also be highly useful.
SA-Exim can write to the descriptor so that SpamAssassin's safe_mode can be
utilised. Apparently however, it also has to update body_linecount
accordingly, but that variable isn't part of the API, so the author cheated
and declared it, himself, along with smtp_out and primary_hostname.
Unfortunately, thanks to myself, version 4.67-1 of exim4 in Debian no longer
exports all symbols - only the ones declared in local_scan.h and the files
included from it (see
http://bugs.debian.org/413602). This of course causes
dlopen() to fail.
Since writing to fd isn't forbidden (and IMHO shouldn't be), either
a) body_linecount (and other variables that may need to be updated) should be
made available to local_scan() so that it can update it, or
b) the message body needs to be rescanned and body_linecount (and any other
variable that may need to be updated) be updated after the call to
local_scan().
Thoughts?
--
Magnus Holmgren holmgren@???
(No Cc of list mail needed, thanks)