home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


sendmail

sendmailSearch this book
Previous: 18.4 Tuning Makefile Chapter 18
Compile and Install sendmail
Next: 18.6 Install sendmail
 

18.5 Run Make

After you have finished tuning Makefile , you are ready to build sendmail . First (especially if you are building as root ), back up in the src directory run:

# ./makesendmail -n

This displays all the commands that make will generate without actually executing them. If all looks well, run makesendmail again, this time without the -n .

18.5.1 Use libresolv.a

If, when you compiled sendmail , the linker reported _res_* routines as missing, you need to specify the resolver library with -lresolv :

LDADD=  -ldbm -lcompat -lutil -lkvm 

-lresolv

This shows one way to include that library with the V8 Makefile . Another way might look like this:

# libraries required on your system
LIBS=   /usr/local/lib/libresolv.a

To ensure that sendmail achieves its optimum use of lookups, make sure that your resolver library is derived from the latest BIND release: BIND 4.9. [9] You will also need to include -l44bsd on the LIBS= line if you are running BIND 4.9.

[9] 4.8.3 is also good. 4.9 is available via anonymous FTP from ftp.vix.com .

The tricky part is finding out which resolver library your system supports. With SunOS systems, for example, resolver support in the standard C library uses nis for name resolution. Although this setup may be good for most applications, it is inappropriate for sendmail . There is a libresolv.a , but it is based on BIND 4.3 and so should probably be replaced with a newer version.

If your resolver library is not the correct one, you need to compile and install the newest version. You should do this even if it is used only by sendmail .

18.5.2 Remove -l44bsd

If you are running an old (pre V4.9) resolver library, you will see an error like the following during the loading part of your build:

ld: -l44bsd: No such file or directory

One solution is to upgrade to BIND 4.9, which will install the lib44bsd.a library (we recommend this). Another solution is to remove -l44bsd from the LIBS line in your Makefile .

18.5.3 Badly defined sys_errlist

Some systems define sys_errlist differently than sendmail . On such systems you may see a spurious warning about sys_errlist being redefined.

In general you should never get this error. But if you are building sendmail on a system that is similar to, but not identical to, one already supported, you may see such a warning. See Section 18.8.6, ERRLIST-PREDEFINED for a description of how to use ERRLIST_PREDEFINED to fix the problem, should it occur.