I've had a bit of hassle recently trying to compile VPopMail 5.2.1/5.3.8 with
the Oracle authentication module. Having had a bit of a poke about the
archives for this mailing list I see that a few other people have had the
same problems and no one has posted a solution yet.
First I want to give a little background so that if anyone wants to pick up
where I've left off it will be a little easier.
VPopMail uses a number of different authentication modules. Which one you're
going to use is defined when you run ./configure and the chosen file is
symlinked to auth.c (auth.h remains unchanged). In the case of the Oracle
module the authentication file is voracle.c which has been produced by
running Pro*C (oracle's precompiler) on voracle.pc.
Also, during ./configure, the file config.h is produced. This contains
various #define statements depending on which arguments you have passed to
configure. Many of these #defines are used by the c preprocessor to chose
which particular parts of the program(s) are to be compiled. Therefore the
arguments passed to ./configure are very important.
OK, on to the build.
Make sure that Oracle's precompiler (proc) is installed and working. You
have no chance of building vpopmail with oracle support without proc. Test
it out on it's demo files.
Unpack the archive with
gunzip < vpopmail-5.2.1.tar.gz | tar xvf -
You need to make 2 changes to voracle.pc so open it up in an editor and make
the following changes:
voracle.pc line 630, change MYSQL_DEFAULT_TABLE to ORACLE_DEFAULT_TABLE
voracle.pc line 334, change memset(pwent, 0, sizeof(pwent)); to
memset(&pwent, 0, sizeof(pwent));
save voracle.pc and run it through the oracle precompiler
this will produce the voracle.c file.
Now you need to run configure. remember that the arguments passed to
configure are extrememly important and you may need to experiment a little.
The arguments that have worked for me are :-
--enable-mysql=n --enable-many-domains=y --enable-file-locking=y
You will have to adjust the path details for the include directory and
library directory to suit your system and there may be a little scope for
experimentation with the other options, but be careful. As I mentioned
above; many of the options set precompiler directives which determine exactly
which bits of code are/are not compiled. Many of the errors I was getting
and many of the errors listed on this list are due to the compiler trying to
build incorrect pieces of code.
Finally you need to add a #define macro to config.h so open it with an editor
and go to the end and add the following line:
#define SITE_SIZE 10000000
I've just picked 10000000 as an arbitary value. You will probably want to
experiment with this and find something suitable for your needs.
OK, we're done. type
and it should compile. Hope this works out for you and many thanks to Ken for
helping me out.