Rev 1 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1 | magnus | 1 | READ THIS FIRST |
2 | --------------- |
||
3 | If you try to build with 'make' without editing the makefile for sa-exim to |
||
4 | see the exim source, and if you haven't patched your exim source with |
||
5 | localscan_dlopen.patch, sa-exim will not build. |
||
6 | This is normal, see the BUILDING section below |
||
7 | |||
8 | This version of sa-exim now requires at least exim 4.11 |
||
9 | |||
10 | |||
11 | |||
12 | |||
13 | BUILDING |
||
14 | -------- |
||
15 | The code can be compiled in two ways: |
||
16 | |||
17 | 0) Do not set LOCAL_SCAN_HAS_OPTIONS=yes in exim's Makefile. Leave the |
||
18 | default which is disabled. |
||
19 | |||
20 | 1) Unpack exim 4.11 or better, and overwrite src/local_scan.c with |
||
21 | sa-exim.c. |
||
22 | In the sa-exim distribution directory, type make sa-exim.h, and copy |
||
23 | it in the same place than sa-exim.c. |
||
24 | Rebuild exim, and you're done. |
||
25 | Note that if you do this, you are responsible for modifying variables |
||
26 | in sa-exim.c that would normally have been modified by the Makefile. |
||
27 | |||
28 | This method might seem simpler, but it requires that you rebuild exim every |
||
29 | time you upgrade sa-exim. |
||
30 | |||
31 | 2) The better solution is to patch exim with localscan_dlopen.patch originally |
||
32 | from David Woodhouse (provided in this archive), and rebuild exim. |
||
33 | Here are details on how to patch exim if yours needs it (at least debian's |
||
34 | exim4 is prepatched, yours may be too). |
||
35 | Choose the patch for your exim version (Philip included the portion that |
||
36 | sets LOCAL_SCAN_ABI_VERSION_MAJOR and LOCAL_SCAN_ABI_VERSION_MINOR in exim |
||
37 | 4.20) |
||
38 | - localscan_dlopen_exim_4.20_or_better.patch |
||
39 | - localscan_dlopen_up_to_4.14.patch |
||
40 | |||
41 | |||
42 | What you gain from doing this is that sa-exim, or another local_scan module |
||
43 | can be plugged into exim without rebuilding exim itself (here too you need |
||
44 | exim 4.11 or better) |
||
45 | |||
46 | To build, you can edit EXIM_SRC in the Makefile and build sa-exim-x.y.so, |
||
47 | or I have also recently modified the build environment so that you can |
||
48 | now build sa-exim without having the exim sources. |
||
49 | You can look in eximinc/version to see which source I included. While this |
||
50 | should work for the forseable future, the exim local_scan API might change |
||
51 | one day and not building against the current exim sources could cause issues |
||
52 | (hopefully, at worst it will prevent sa-exim from using better functions in |
||
53 | newer versions of the local_scan API). |
||
54 | To be really safe, I modified the localscan_dlopen patch to include a |
||
55 | minor and major version number for the API. Philip has agreed to including |
||
56 | the piece of the patch that says which version of the API exim is using, |
||
57 | so it will be obvious in the future whether exim becomes potentially |
||
58 | incompatible with an older version of sa-exim. Note that when Philip adds |
||
59 | this small portion of the patch, you will have a resulting conflict if |
||
60 | you try to apply it again. This is obviously normal, just remove it :-) |
||
61 | |||
62 | Once you're done building, you can copy sa-exim-x.y.so and optionally the |
||
63 | dummy/test accept.so in /usr/lib/exim4/local_scan/, and add this to your |
||
64 | exim4.conf (at the beginning of the file) |
||
65 | #local_scan_path = /usr/lib/exim4/local_scan/accept.so |
||
66 | local_scan_path = /usr/lib/exim4/local_scan/sa-exim.so |
||
67 | |||
68 | If you are a package builder, note that you don't actually have |
||
69 | to edit the values in the Makefile, you can override them as such: |
||
70 | make SACONF=/etc/mail/sa-exim.conf LDFLAGS="-shared -fPIC" |
||
71 | |||
72 | |||
73 | The following is mostly obsolete, but left here for info purposes |
||
74 | ----------------------------------------------------------------- |
||
75 | I would also recommend to edit exim/src/config.h.defaults as such: |
||
76 | #define STRING_SPRINTF_BUFFER_SIZE 32768 |
||
77 | The default value is a bit too small for some of the strings that we need to |
||
78 | expand from SA. |
||
79 | That said, I found out that exim then complaints that the headers |
||
80 | it tries to add are too big even after I set "uschar buffer[32768];" in |
||
81 | src/header.c. |
||
82 | As a result, I haven't quite found out how to deal with more than 8KB worth |
||
83 | of SpamAssassin headers, but it may not be a huge deal, 8KB headers are too |
||
84 | long anyway. |
||
85 | I asked the SA guys not to output such huge headers and I wrote a patch |
||
86 | to disable one of the "features" that outputs such huge headers. |
||
87 | See: http://bugzilla.spamassassin.org/showattachment.cgi?attach_id=195 |
||
88 | This is included and turned on by default in Spamassassin 2.40 and later. |
||
89 | |||
90 | |||
91 | INSTALL |
||
92 | ------- |
||
93 | Copy sa-exim.conf to /etc/exim4 (or whatever you set SACONF to), |
||
94 | and make sure to read it and edit the values to suit your environment. |
||
95 | So that you don't make any mistakes, SAEximRunCond is turned off by default. |
||
96 | This should force you to scan the docs before potentially shooting yourself |
||
97 | in the foot :) |
||
98 | |||
99 | See README for options |
||
100 |