Commit | Line | Data |
---|---|---|
792e6158 | 1 | # Copyright (c) 1983, 1995 Eric P. Allman |
e4760d3b | 2 | # Copyright (c) 1988 The Regents of the University of California. |
bee79b64 KB |
3 | # All rights reserved. |
4 | # | |
e4760d3b | 5 | # %sccs.include.redist.sh% |
bee79b64 | 6 | # |
f4554bfa | 7 | # @(#)READ_ME 8.97 (Berkeley) %G% |
aac2beaf | 8 | # |
e4760d3b | 9 | |
bd144236 | 10 | This directory contains the source files for sendmail. |
2a9def67 | 11 | |
95168923 | 12 | For detailed instructions, please read the document ../doc/op.me: |
2a9def67 | 13 | |
95168923 | 14 | eqn ../doc/op.me | pic | ditroff -me |
2a9def67 | 15 | |
3f966d92 EA |
16 | ********************* |
17 | !! DO NOT USE MAKE !! to compile sendmail -- instead, use the | |
18 | ********************* "makesendmail" script located in the src | |
19 | directory. It will find an appropriate Makefile, and create an | |
20 | appropriate obj.* subdirectory so that multiplatform support | |
21 | works easily. | |
4ba9ab7a | 22 | |
0ad3831f EA |
23 | The Makefile is for the new (4.4BSD) Berkeley make and uses syntax |
24 | that is not recognized by older makes. It also has assumptions | |
25 | about the 4.4 file system layout built in. See below for details | |
26 | about other Makefiles. | |
99ab99e6 | 27 | |
4ba9ab7a EA |
28 | If you are porting to a new architecture for which there is no existing |
29 | Makefile, you might start with Makefile.dist. This works on the old | |
30 | traditional make, but isn't customized for any particular architecture. | |
95168923 | 31 | |
4ba9ab7a EA |
32 | ************************************************** |
33 | ** Read below for more details of Makefiles. ** | |
34 | ************************************************** | |
02b59634 | 35 | |
a84edbf8 EA |
36 | ************************************************************************** |
37 | ** IMPORTANT: DO NOT USE OPTIMIZATION (``-O'') IF YOU ARE RUNNING ** | |
38 | ** GCC 2.4.x or 2.5.x. THERE IS A BUG IN THE GCC OPTIMIZER THAT ** | |
39 | ** CAUSES SENDMAIL COMPILES TO FAIL MISERABLY. ** | |
40 | ************************************************************************** | |
6946fac8 | 41 | |
a84edbf8 EA |
42 | Jim Wilson of Cygnus believes he has found the problem -- it will |
43 | probably be fixed in GCC 2.5.6 -- but until this is verified, be | |
44 | very suspicious of gcc -O. | |
45 | ||
b290ce39 EA |
46 | This problem is reported to have been fixed in gcc 2.6. |
47 | ||
a84edbf8 EA |
48 | ************************************************************************** |
49 | ** IMPORTANT: Read the appropriate paragraphs in the section on ** | |
50 | ** ``Operating System and Compile Quirks''. ** | |
51 | ************************************************************************** | |
fe3849ea | 52 | |
39270cfd | 53 | |
0ad3831f EA |
54 | +-----------+ |
55 | | MAKEFILES | | |
56 | +-----------+ | |
57 | ||
4ba9ab7a | 58 | By far, the easiest way to compile sendmail is to use the "makesendmail" |
c4c49268 EA |
59 | script: |
60 | ||
61 | sh makesendmail | |
62 | ||
63 | This uses the "uname" command to figure out what architecture you are | |
64 | on and selects a proper Makefile accordingly. It also creates a | |
65 | subdirectory per object format, so that multiarchitecture support is | |
4ba9ab7a EA |
66 | easy. In general this should be all you need. However, if for some |
67 | reason this doesn't work (e.g., NeXT systems don't have the "uname" | |
68 | command) you may have to set up your compile environment by hand. | |
69 | ||
0ad3831f EA |
70 | The "Makefile"s in these directories are from 4.4 BSD, and hence |
71 | really only work properly if you are on a 4.4 system. In particular, | |
72 | they use new syntax that will not be recognized on old make programs, | |
73 | and some of them do things like ``.include ../../Makefile.inc'' to | |
74 | pick up some system defines. If you are getting sendmail separately, | |
75 | these files won't be included in the distribution, as they are | |
76 | outside of the sendmail tree. | |
77 | ||
78 | Instead, you should use one of the other Makefiles, such as | |
79 | Makefile.SunOS for a SunOS system, and so forth. These should | |
80 | work with the version of make that is appropriate for that | |
4ba9ab7a EA |
81 | system. All other Makefiles are in the "src/Makefiles" subdirectory. |
82 | They use the version of make that is native for that system. These | |
83 | are the Makefiles that I use, and they have "Berkeley quirks" in them. | |
84 | I can't guarantee that they will work unmodified in your environment. | |
85 | In particular, Many of them include -I/usr/sww/include/db and | |
86 | -L/usr/sww/lib -- these are Berkeley's locations in the ``Software | |
87 | Warehouse'' for the new database libraries, described below. You don't | |
88 | have to remove these definitions if you don't have these directories, | |
89 | but you may have to remove -DNEWDB from the DBMDEF definition. | |
0ad3831f EA |
90 | |
91 | Please look for an appropriate Makefile before you start trying to | |
92 | compile with Makefile or Makefile.dist. | |
93 | ||
94 | If you want to port the new Berkeley make, you can get it from | |
95 | ftp.uu.net in the directory /systems/unix/bsd-sources/usr.bin/make. | |
96 | Diffs and instructions for building this version of make under | |
97 | SunOS 4.1.x are available on ftp.css.itd.umich.edu in | |
a6aafe1f | 98 | /pub/systems/sun/Net2-make-sun4.diff.Z. Diffs and instructions |
0ad3831f EA |
99 | for building this version of make under IBM AIX 3.2.4 are available |
100 | on ftp.uni-stuttgart.de in /sw/src/patches/bsd-make-rus-patches. | |
8dad3efb | 101 | For Ultrix, try ftp.vix.com:~ftp/pub/patches/pmake-for-ultrix.Z. |
0ad3831f EA |
102 | Paul Southworth <pauls@umich.edu> published a description of porting |
103 | this make in comp.unix.bsd. | |
104 | ||
105 | The complete text of the Makefile.inc that is in the parent of the | |
106 | sendmail directory is: | |
107 | ||
108 | # @(#)Makefile.inc 8.1 (Berkeley) 6/6/93 | |
109 | ||
110 | BINDIR?= /usr/sbin | |
111 | ||
112 | ||
35ef9fff EA |
113 | +----------------------+ |
114 | | DATABASE DEFINITIONS | | |
115 | +----------------------+ | |
116 | ||
117 | There are several database formats that can be used for the alias files | |
118 | and for general maps. When used for alias files they interact in an | |
119 | attempt to be back compatible. | |
120 | ||
121 | The three options are NEWDB (the new Berkeley DB package), NDBM (the | |
122 | older DBM implementation -- the very old V7 implementation is no | |
123 | longer supported), and NIS (Network Information Services). Used alone | |
cff7779f | 124 | these just include the support they indicate. [If you are using NEWDB, |
4ba9ab7a EA |
125 | get the latest version from FTP.CS.Berkeley.EDU in /ucb/4bsd/db.tar.Z |
126 | (or db.tar.gz). DO NOT use the version from the Net2 distribution! | |
127 | However, if you are on BSD/386 or 386BSD-based systems, use the one | |
128 | that already exists on your system. You may need to #define OLD_NEWDB | |
129 | 1 to do this.] | |
35ef9fff | 130 | |
bc53a996 EA |
131 | [NOTE WELL: it is CRITICAL that you remove ndbm.o from libdb.a and |
132 | ndbm.h from the appropriate include directories if you want to get | |
133 | ndbm support. These files OVERRIDE calls to ndbm routines -- in | |
134 | particular, if you leave ndbm.h in, you can find yourself using | |
135 | the new db package even if you don't define NEWDB.] | |
136 | ||
35ef9fff EA |
137 | If NEWDB and NDBM are defined (but not NIS), then sendmail will read |
138 | NDBM format alias files, but the next time a newaliases is run the | |
139 | format will be converted to NEWDB; that format will be used forever | |
140 | more. This is intended as a transition feature. [Note however that | |
141 | the NEWDB library also catches and maps NDBM calls; you will have to | |
142 | back out this feature to get this to work. See ``Quirks'' section | |
143 | below for details.] | |
144 | ||
2dd88759 EA |
145 | If all three are defined and the name of the file includes the string |
146 | "/yp/", sendmail will rebuild BOTH the NEWDB and NDBM format alias | |
147 | files. However, it will only read the NEWDB file; the NDBM format file | |
148 | is used only by the NIS subsystem. | |
35ef9fff | 149 | |
2dd88759 EA |
150 | If NDBM and NIS are defined (regardless of the definition of NEWDB), |
151 | and the filename includes the string "/yp/", sendmail adds the special | |
35ef9fff EA |
152 | tokens "YP_LAST_MODIFIED" and "YP_MASTER_NAME", both of which are |
153 | required if the NDBM file is to be used as an NIS map. | |
154 | ||
4ba9ab7a EA |
155 | There is also preliminary support for NIS+ (-DNISPLUS), Hesiod |
156 | (-DHESIOD), and NetInfo (-DNETINFO). These have not been well | |
157 | tested. | |
158 | ||
159 | All of -DNEWDB, -DNDBM, -DNIS, -DNISPLUS, -DHESIOD, and -DNETINFO are | |
160 | normally defined in the DBMDEF line in the Makefile. | |
35ef9fff EA |
161 | |
162 | ||
39270cfd EA |
163 | +---------------+ |
164 | | COMPILE FLAGS | | |
165 | +---------------+ | |
166 | ||
95168923 | 167 | Whereever possible, I try to make sendmail pull in the correct |
ea330d82 EA |
168 | compilation options needed to compile on various environments based on |
169 | automatically defined symbols. Some machines don't seem to have useful | |
170 | symbols availble, requiring the following compilation flags in the | |
171 | Makefile: | |
95168923 EA |
172 | |
173 | SOLARIS Define this if you are running Solaris 2.0 or higher. | |
a84edbf8 | 174 | SOLARIS_2_3 Define this if you are running Solaris 2.3 or higher. |
1fdb916d | 175 | SUNOS403 Define this if you are running SunOS 4.0.3. |
e4099afa | 176 | NeXT Define this if you are on a NeXT box. (This one may |
0f786d57 EA |
177 | be pre-defined for you.) There are other hacks you |
178 | have to make -- see below. | |
95168923 | 179 | _AIX3 Define this if you are IBM AIX 3.x. |
0fc3fb21 | 180 | RISCOS Define this if you are running RISC/os from MIPS. |
ac091d9d | 181 | IRIX Define this if you are running IRIX from SGI. |
99ab99e6 | 182 | _SCO_unix_ Define this if you are on SCO UNIX. |
3bc5d9d5 | 183 | _SCO_unix_4_2 Define this if you are on SCO Open Server 3.2v4. |
810a6265 EA |
184 | DGUX Define this if you are on DG/UX 5.4.3 or later |
185 | DGUX_5_4_2 Define this if you are on DG/UX systems prior to 5.4.3. | |
264ee34f EA |
186 | NonStop_UX_BXX Define this if you are on a Tandem NonStop-UX release |
187 | Bxx system. | |
b6a2944f | 188 | IRIX64 Define this if you are on an IRIX64 system. |
95168923 | 189 | |
ea330d82 EA |
190 | If you are a system that sendmail has already been ported to, you |
191 | probably won't have to touch these. But if you are porting, you may | |
33d59d37 EA |
192 | have to tweak the following compilation flags in conf.h in order to |
193 | get it to compile and link properly: | |
95168923 | 194 | |
34ae5327 | 195 | SYSTEM5 Adjust for System V (not necessarily Release 4). |
39270cfd EA |
196 | SYS5SIGNALS Use System V signal semantics -- the signal handler |
197 | is automatically dropped when the signal is caught. | |
198 | If this is not set, use POSIX/BSD semantics, where the | |
199 | signal handler stays in force until an exec or an | |
200 | explicit delete. Implied by SYSTEM5. | |
2bae5486 | 201 | SYS5SETPGRP Use System V setpgrp() semantics. Implied by SYSTEM5. |
39270cfd EA |
202 | HASFLOCK Set this if you prefer to use the flock(2) system call |
203 | rather than using fcntl-based locking. Fcntl locking | |
204 | has some semantic gotchas, but many vendor systems | |
205 | also interface it to lockd(8) to do NFS-style locking. | |
206 | For this reason, this should not be set unless you | |
207 | don't have an alternative. | |
95168923 EA |
208 | HASUNAME Set if you have the "uname" system call. Implied by |
209 | SYSTEM5. | |
33d59d37 EA |
210 | HASUNSETENV Define this if your system library has the "unsetenv" |
211 | subroutine. | |
95168923 EA |
212 | HASSETSID Define this if you have the setsid(2) system call. This |
213 | is implied if your system appears to be POSIX compliant. | |
214 | HASINITGROUPS Define this if you have the initgroups(3) routine. | |
8e5c6745 EA |
215 | HASSETVBUF Define this if you have the setvbuf(3) library call. |
216 | If you don't, setlinebuf will be used instead. This | |
217 | defaults on if your compiler defines __STDC__. | |
ba6514e2 EA |
218 | HASSETREUID Define this if you have setreuid(2) ***AND*** root can |
219 | use setreuid to change to an arbitrary user. This second | |
220 | condition is not satisfied on AIX 3.x. You may find that | |
221 | your system has setresuid(2), (for example, on HP-UX) in | |
222 | which case you will also have to #define setreuid(r, e) | |
223 | to be the appropriate call. Some systems (such as Solaris) | |
a84edbf8 EA |
224 | have a compatibility routine that doesn't work properly, |
225 | but may have "saved user ids" properly implemented so you | |
226 | can ``#define setreuid(r, e) seteuid(e)'' and have it work. | |
ba6514e2 | 227 | The important thing is that you have a call that will set |
a84edbf8 EA |
228 | the effective uid independently of the real or saved uid |
229 | and be able to set the effective uid back again when done. | |
230 | There's a test program in ../test/t_setreuid.c that will | |
231 | try things on your system. Setting this improves the | |
232 | security, since sendmail doesn't have to read .forward | |
233 | and :include: files as root. There are certain attacks | |
234 | that may be unpreventable without this call. | |
04c2baef EA |
235 | USESETEUID Define this to 1 if you have seteuid(2) if you have a seteuid |
236 | system call that will allow root to set only the effective | |
237 | user id to an arbitrary value ***AND*** you have saved user | |
238 | ids. This is preferable to HASSETREUID if these conditions | |
239 | are fulfilled. These are the semantics of the to-be-released | |
240 | revision of Posix.1. The test program ../test/t_seteuid.c | |
241 | will try this out on your system. If you define both | |
242 | HASSETREUID and USESETEUID, the former is ignored. | |
a84edbf8 EA |
243 | HASLSTAT Define this if you have symbolic links (and thus the |
244 | lstat(2) system call). This improves security. Unlike | |
245 | most other options, this one is on by default, so you | |
246 | need to #undef it in conf.h if you don't have symbolic | |
247 | links (these days everyone does). | |
230ac0bd EA |
248 | HASSETRLIMIT Define this to 1 if you have the setrlimit(2) syscall. |
249 | You can define it to 0 to force it off. It is assumed | |
250 | if you are running a BSD-like system. | |
251 | HASULIMIT Define this if you have the ulimit(2) syscall (System V | |
252 | style systems). HASSETRLIMIT overrides, as it is more | |
253 | general. | |
52d85a9d EA |
254 | NEEDGETOPT Define this if you need a reimplementation of getopt(3). |
255 | On some systems, getopt does very odd things if called | |
256 | to scan the arguments twice. This flag will ask sendmail | |
257 | to compile in a local version of getopt that works | |
258 | properly. | |
259 | NEEDSTRTOL Define this if your standard C library does not define | |
260 | strtol(3). This will compile in a local version. | |
261 | NEEDVPRINTF Define this if your standard C library does not define | |
262 | vprintf(3). Note that the resulting fake implementation | |
263 | is not very elegant and may not even work on some | |
264 | architectures. | |
1f85a3c2 EA |
265 | NEEDFSYNC Define this if your standard C library does not define |
266 | fsync(2). This will try to simulate the operation using | |
267 | fcntl(2); if that is not available it does nothing, which | |
268 | isn't great, but at least it compiles and runs. | |
1ee33f7d EA |
269 | HASGETUSERSHELL Define this to 1 if you have getusershell(3) in your |
270 | standard C library. If this is not defined, or is defined | |
271 | to be 0, sendmail will scan the /etc/shells file (no | |
272 | NIS-style support, defaults to /bin/sh and /bin/csh if | |
273 | that file does not exist) to get a list of unrestricted | |
274 | user shells. This is used to determine whether users | |
275 | are allowed to forward their mail to a program or a file. | |
dd7a2111 EA |
276 | NEEDPUTENV Define this if your system needs am emulation of the |
277 | putenv(3) call. Define to 1 to implement it in terms | |
278 | of setenv(3) or to 2 to do it in terms of primitives. | |
e6cb9fc4 EA |
279 | GIDSET_T The type of entries in a gidset passed as the second |
280 | argument to getgroups(2). Historically this has been an | |
281 | int, so this is the default, but some systems (such as | |
282 | IRIX) pass it as a gid_t, which is an unsigned short. | |
283 | This will make a difference, so it is important to get | |
284 | this right! However, it is only an issue if you have | |
285 | group sets. | |
8dc2ce80 EA |
286 | SLEEP_T The type returned by the system sleep() function. |
287 | Defaults to "unsigned int". Don't worry about this | |
288 | if you don't have compilation problems. | |
ae4b2d9f EA |
289 | ARBPTR_T The type of an arbitrary pointer -- defaults to "void *". |
290 | If you are an very old compiler you may need to define | |
291 | this to be "char *". | |
ea330d82 | 292 | LA_TYPE The type of load average your kernel supports. These |
ff065a83 | 293 | can be one of: |
f87f0122 | 294 | LA_ZERO (1) -- it always returns the load average as |
ff065a83 | 295 | "zero" (and does so on all architectures). |
f87f0122 EA |
296 | LA_INT (2) to read /dev/kmem for the symbol avenrun and |
297 | interpret as a long integer. | |
298 | LA_FLOAT (3) same, but interpret the result as a floating | |
299 | point number. | |
300 | LA_SHORT (6) to interpret as a short integer. | |
301 | LA_SUBR (4) if you have the getloadavg(3) routine in your | |
302 | system library. | |
303 | LA_MACH (5) to use MACH-style load averages (calls | |
ff065a83 | 304 | processor_set_info()), |
f87f0122 | 305 | LA_PROCSTR (7) to read /proc/loadavg and interpret it |
ff065a83 | 306 | as a string representing a floating-point |
f87f0122 EA |
307 | number (Linux-style). |
308 | LA_READKSYM (8) is an implementation suitable for some | |
309 | versions of SVr4 that uses the MIOC_READKSYM ioctl | |
310 | call to read /dev/kmem. | |
311 | LA_DGUX (9) is a special implementation for DG/UX that uses | |
312 | the dg_sys_info system call. | |
313 | LA_HPUX (10) is an HP-UX specific version that uses the | |
314 | pstat_getdynamic system call. | |
315 | LA_INT, LA_SHORT, LA_FLOAT, and LA_READKSYM have several | |
316 | other parameters that they try to divine: the name of your | |
317 | kernel, the name of the variable in the kernel to examine, | |
318 | the number of bits of precision in a fixed point load average, | |
319 | and so forth. | |
ff065a83 EA |
320 | In desperation, use LA_ZERO. The actual code is in |
321 | conf.c -- it can be tweaked if you are brave. | |
f87f0122 EA |
322 | FSHIFT For LA_INT, LA_SHORT, and LA_READKSYM, this is the number |
323 | of bits of load average after the binary point -- i.e., | |
324 | the number of bits to shift right in order to scale the | |
325 | integer to get the true integer load average. Defaults to 8. | |
326 | _PATH_UNIX The path to your kernel. Needed only for LA_INT, LA_SHORT, | |
327 | and LA_FLOAT. Defaults to "/unix" on System V, "/vmunix" | |
328 | everywhere else. | |
329 | LA_AVENRUN For LA_INT, LA_SHORT, and LA_FLOAT, the name of the kernel | |
330 | variable that holds the load average. Defaults to "avenrun" | |
331 | on System V, "_avenrun" everywhere else. | |
dd61b649 EA |
332 | SFS_TYPE Encodes how your kernel can locate the amount of free |
333 | space on a disk partition. This can be set to SFS_NONE | |
334 | (0) if you have no way of getting this information, | |
335 | SFS_USTAT (1) if you have the ustat(2) system call, | |
336 | SFS_4ARGS (2) if you have a four-argument statfs(2) | |
337 | system call (and the include file is <sys/statfs.h>), | |
f4b322aa EA |
338 | SFS_VFS (3), SFS_MOUNT (4), SFS_STATFS (5) if you have |
339 | the two-argument statfs(2) system call with includes in | |
340 | <sys/vfs.h>, <sys/mount.h>, or <sys/statfs.h> respectively, | |
341 | or SFS_STATVFS (6) if you have the two-argument statvfs(2) | |
342 | call. The default if nothing is defined is SFS_NONE. | |
b2b48b69 EA |
343 | SFS_BAVAIL with SFS_4ARGS hou can also set SFS_BAVAIL to the field name |
344 | in the statfs structure that holds the useful information; | |
345 | this defaults to f_bavail. | |
ddeafa3b EA |
346 | SPT_TYPE Encodes how your system can display what a process is doing |
347 | on a ps(1) command (SPT stands for Set Process Title). Can | |
348 | be set to: | |
349 | SPT_NONE (0) -- Don't try to set the process title at all. | |
350 | SPT_REUSEARGV (1) -- Pad out your argv with the information; | |
351 | this is the default if none specified. | |
352 | SPT_BUILTIN (2) -- The system library has setproctitle. | |
353 | SPT_PSTAT (3) -- Use the PSTAT_SETCMD option to pstat(2) | |
354 | to set the process title; this is used by HP-UX. | |
355 | SPT_PSSTRINGS (4) -- Use the magic PS_STRINGS pointer (4.4BSD). | |
356 | SPT_PADCHAR Character used to pad the process title; if undefined, | |
357 | the space character (0x20) is used. This is ignored if | |
358 | SPT_TYPE != SPT_REUSEARGV | |
33d59d37 EA |
359 | ERRLIST_PREDEFINED |
360 | If set, assumes that some header file defines sys_errlist. | |
361 | This may be needed if you get type conflicts on this | |
362 | variable -- otherwise don't worry about it. | |
1c8c1ad2 EA |
363 | WAITUNION The wait(2) routine takes a "union wait" argument instead |
364 | of an integer argument. This is for compatibility with | |
365 | old versions of BSD. | |
a84edbf8 EA |
366 | SCANF You can set this to extend the F command to accept a |
367 | scanf string -- this gives you a primitive parser for | |
368 | class definitions -- BUT it can make you vulnerable to | |
369 | core dumps if the target file is poorly formed. | |
3bc5d9d5 EA |
370 | SYSLOG_BUFSIZE You can define this to be the size of the buffer that |
371 | syslog accepts. If it is not defined, it assumes a | |
372 | 1024-byte buffer. If the buffer is very small (under | |
373 | 256 bytes) the log message format changes -- each | |
374 | e-mail message will log many more messages, since it | |
375 | will log each piece of information as a separate line | |
376 | in syslog. | |
a3815d39 EA |
377 | BROKEN_RES_SEARCH |
378 | On Ultrix (and maybe other systems?) if you use the | |
379 | res_search routine with an unknown host name, it returns | |
380 | -1 but sets h_errno to 0 instead of HOST_NOT_FOUND. If | |
381 | you set this, sendmail considers 0 to be the same as | |
382 | HOST_NOT_FOUND. | |
bdcf06da EA |
383 | NAMELISTMASK If defined, values returned by nlist(3) are masked |
384 | against this value before use -- a common value is | |
385 | 0x7fffffff to strip off the top bit. | |
f87f0122 EA |
386 | BSD4_4_SOCKADDR If defined, socket addresses have an sa_len field that |
387 | defines the length of this address. | |
bdcf06da | 388 | |
ea330d82 | 389 | |
39270cfd EA |
390 | |
391 | +-----------------------+ | |
392 | | COMPILE-TIME FEATURES | | |
393 | +-----------------------+ | |
394 | ||
ea330d82 EA |
395 | There are a bunch of features that you can decide to compile in, such |
396 | as selecting various database packages and special protocol support. | |
397 | Several are assumed based on other compilation flags -- if you want to | |
398 | "un-assume" something, you probably need to edit conf.h. Compilation | |
399 | flags that add support for special features include: | |
95168923 EA |
400 | |
401 | NDBM Include support for "new" DBM library for aliases and maps. | |
35ef9fff | 402 | Normally defined in the Makefile. |
95168923 | 403 | NEWDB Include support for Berkeley "db" package (hash & btree) |
35ef9fff | 404 | for aliases and maps. Normally defined in the Makefile. |
11c14c72 EA |
405 | OLD_NEWDB If non-zero, the version of NEWDB you have is the old |
406 | one that does not include the "fd" call. This call was | |
407 | added in version 1.5 of the Berkeley DB code. If you | |
408 | use -DOLD_NEWDB=0 it forces you to use the new interface. | |
95168923 | 409 | NIS Define this to get NIS (YP) support for aliases and maps. |
35ef9fff | 410 | Normally defined in the Makefile. |
f87f0122 EA |
411 | NISPLUS Define this to get NIS+ support for aliases and maps. |
412 | Normally defined in the Makefile. | |
413 | HESIOD Define this to get Hesiod support for aliases and maps. | |
414 | Normally defined in the Makefile. | |
415 | NETINFO Define this to get NeXT NetInfo support for aliases and maps. | |
416 | Normally defined in the Makefile. | |
dd7a2111 EA |
417 | USERDB Define this to 1 to include support for the User Information |
418 | Database. Implied by NEWDB or HESIOD. You can use | |
419 | -DUSERDB=0 to explicitly turn it off. | |
a84edbf8 | 420 | IDENTPROTO Define this as 1 to get IDENT (RFC 1413) protocol support. |
95168923 EA |
421 | This is assumed unless you are running on Ultrix or |
422 | HP-UX, both of which have a problem in the UDP | |
a84edbf8 | 423 | implementation. You can define it to be 0 to explicitly |
f87f0122 EA |
424 | turn off IDENT protocol support. If defined off, the code |
425 | is actually still compiled in, but it defaults off; you | |
426 | can turn it on by setting the IDENT timeout to 30s in the | |
427 | configuration file. | |
298b05de EA |
428 | IP_SRCROUTE Define this to 1 to get IP source routing information |
429 | displayed in the Received: header. This is assumed on | |
430 | most systems, but some (e.g., Ultrix) apparently have a | |
431 | broken version of getsockopt that doesn't properly | |
432 | support the IP_OPTIONS call. You probably want this if | |
415e43a5 EA |
433 | your OS can cope with it. Symptoms of failure will be that |
434 | it won't compile properly (that is, no support for fetching | |
435 | IP_OPTIONs), or it compiles but source-routed TCP connections | |
436 | either refuse to open or open and hang for no apparent reason. | |
437 | Ultrix and AIX are known to fail this way. | |
95168923 | 438 | LOG Set this to get syslog(3) support. Defined by default |
ea330d82 | 439 | in conf.h. You want this if at all possible. |
95168923 | 440 | NETINET Set this to get TCP/IP support. Defined by default |
ea330d82 | 441 | in conf.h. You probably want this. |
95168923 EA |
442 | NETISO Define this to get ISO networking support. |
443 | SMTP Define this to get the SMTP code. Implied by NETINET | |
444 | or NETISO. | |
f87f0122 | 445 | NAMED_BIND If non-zero, include DNS (name daemon) support, including |
95168923 EA |
446 | MX support. The specs you must use this if you run |
447 | SMTP. Defined by default in conf.h. | |
448 | QUEUE Define this to get queueing code. Implied by NETINET | |
ea330d82 EA |
449 | or NETISO; required by SMTP. This gives you other good |
450 | stuff -- it should be on. | |
95168923 | 451 | DAEMON Define this to get general network support. Implied by |
ea330d82 EA |
452 | NETINET or NETISO. Defined by default in conf.h. You |
453 | almost certainly want it on. | |
95168923 EA |
454 | MATCHGECOS Permit fuzzy matching of user names against the full |
455 | name (GECOS) field in the /etc/passwd file. This should | |
456 | probably be on, since you can disable it from the config | |
ea330d82 | 457 | file if you want to. Defined by default in conf.h. |
f87f0122 EA |
458 | MIME8TO7 If non-zero, include 8 to 7 bit MIME conversions. This |
459 | also controls advertisement of 8BITMIME in the ESMTP | |
460 | startup dialogue. | |
461 | MIME7TO8 If non-zero, include 7 to 8 bit MIME conversions. Not yet | |
462 | implemented. | |
95168923 | 463 | |
39270cfd | 464 | |
a84edbf8 EA |
465 | +---------------------+ |
466 | | DNS/RESOLVER ISSUES | | |
467 | +---------------------+ | |
468 | ||
469 | Many systems have old versions of the resolver library. At a minimum, | |
470 | you should be running BIND 4.8.3; older versions may compile, but they | |
471 | have known bugs that should give you pause. | |
472 | ||
473 | Common problems in old versions include "undefined" errors for | |
474 | dn_skipname. | |
475 | ||
476 | Some people have had a problem with BIND 4.9; it uses some routines | |
477 | that it expects to be externally defined such as strerror(). It may | |
478 | help to link with "-l44bsd" to solve this problem. | |
479 | ||
3bc5d9d5 EA |
480 | !PLEASE! be sure to link with the same version of the resolver as |
481 | the header files you used -- some people have used the 4.9 headers | |
482 | and linked with BIND 4.8 or vice versa, and it doesn't work. | |
483 | Unfortunately, it doesn't fail in an obvious way -- things just | |
fee28a99 | 484 | subtly don't work. |
3bc5d9d5 | 485 | |
f4554bfa EA |
486 | WILDCARD MX RECORDS ARE A BAD IDEA! The only situation in which they |
487 | work reliably is if you have two versions of DNS, one in the real world | |
488 | which has a wildcard pointing to your firewall, and a completely | |
489 | different version of the database internally that does not include | |
490 | wildcard MX records that match your domain. ANYTHING ELSE WILL GIVE | |
491 | YOU HEADACHES! | |
492 | ||
a84edbf8 | 493 | |
39270cfd EA |
494 | +-------------------------------------+ |
495 | | OPERATING SYSTEM AND COMPILE QUIRKS | | |
496 | +-------------------------------------+ | |
497 | ||
3bc5d9d5 EA |
498 | GCC 2.5.x problems *** IMPORTANT *** |
499 | Date: Mon, 29 Nov 93 19:08:44 PST | |
500 | From: wilson@cygnus.com (Jim Wilson) | |
501 | Message-Id: <9311300308.AA04608@cygnus.com> | |
502 | To: kenner@vlsi1.ultra.nyu.edu | |
503 | Subject: [cattelan@thebarn.com: gcc 2.5.4-2.5.5 -O bug] | |
504 | Cc: cattelan@thebarn.com, rms@gnu.ai.mit.edu, sendmail@cs.berkeley.edu | |
505 | ||
506 | This fixes a problem that occurs when gcc 2.5.5 is used to compile | |
507 | sendmail 8.6.4 with optimization on a sparc. | |
508 | ||
509 | Mon Nov 29 19:00:14 1993 Jim Wilson (wilson@sphagnum.cygnus.com) | |
510 | ||
511 | * reload.c (find_reloads_toplev): Replace obsolete reference to | |
512 | BYTE_LOADS_*_EXTEND with LOAD_EXTEND_OP. | |
513 | ||
514 | *** clean-ss-931128/reload.c Sun Nov 14 16:20:01 1993 | |
515 | --- ss-931128/reload.c Mon Nov 29 18:52:55 1993 | |
516 | *************** find_reloads_toplev (x, opnum, type, ind | |
517 | *** 3888,3894 **** | |
518 | force a reload in that case. So we should not do anything here. */ | |
c4a61e98 | 519 | |
3bc5d9d5 EA |
520 | else if (regno >= FIRST_PSEUDO_REGISTER |
521 | ! #if defined(BYTE_LOADS_ZERO_EXTEND) || defined(BYTE_LOADS_SIGN_EXTEND) | |
522 | && (GET_MODE_SIZE (GET_MODE (x)) | |
523 | <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (x)))) | |
524 | #endif | |
525 | --- 3888,3894 ---- | |
526 | force a reload in that case. So we should not do anything here. */ | |
c4a61e98 | 527 | |
3bc5d9d5 EA |
528 | else if (regno >= FIRST_PSEUDO_REGISTER |
529 | ! #ifdef LOAD_EXTEND_OP | |
530 | && (GET_MODE_SIZE (GET_MODE (x)) | |
531 | <= GET_MODE_SIZE (GET_MODE (SUBREG_REG (x)))) | |
532 | #endif | |
533 | ||
534 | ||
cff7779f EA |
535 | SunOS 4.x (Solaris 1.x) |
536 | You may have to use -lresolv on SunOS. However, beware that | |
537 | this links in a new version of gethostbyname that does not | |
538 | understand NIS, so you must have all of your hosts in DNS. | |
6f603bf5 | 539 | |
9df12c2a EA |
540 | Some people have reported problems with the SunOS version of |
541 | -lresolv and/or in.named, and suggest that you get a newer | |
542 | version. The symptoms are delays when you connect to the | |
a84edbf8 EA |
543 | SMTP server on a SunOS machine or having your domain added to |
544 | addresses inappropriately. There is a version of BIND | |
9df12c2a EA |
545 | version 4.9 on gatekeeper.DEC.COM in pub/BSD/bind/4.9. |
546 | ||
6f603bf5 EA |
547 | There is substantial disagreement about whether you can make |
548 | this work with resolv+, which allows you to specify a search-path | |
549 | of services. Some people report that it works fine, others | |
550 | claim it doesn't work at all (including causing sendmail to | |
551 | drop core when it tries to do multiple resolv+ lookups for a | |
552 | single job). I haven't tried resolv+, as we use DNS exclusively. | |
553 | ||
554 | Should you want to try resolv+, it is on ftp.uu.net in | |
555 | /networking/ip/dns. | |
cff7779f | 556 | |
f4b322aa EA |
557 | Apparently getservbyname() can fail under moderate to high |
558 | load under some circumstances. This will exhibit itself as | |
559 | the message ``554 makeconnection: service "smtp" unknown''. | |
560 | The problem has been traced to one or more blank lines in | |
561 | /etc/services on the NIS server machine. Delete these | |
562 | and it should work. This info is thanks to Brian Bartholomew | |
563 | <bb@math.ufl.edu> of I-Kinetics, Inc. | |
564 | ||
cff7779f EA |
565 | Solaris 2.x (SunOS 5.x) |
566 | To compile for Solaris, be sure you use -DSOLARIS. | |
322eceee | 567 | |
13026d96 EA |
568 | To the best of my knowledge, Solaris does not have the |
569 | gethostbyname problem described above. However, it does | |
570 | have another one: | |
571 | ||
1be639fd EA |
572 | From a correspondent: |
573 | ||
c4a61e98 | 574 | For solaris 2.2, I have |
1be639fd EA |
575 | |
576 | hosts: files dns | |
577 | ||
578 | in /etc/nsswitch.conf and /etc/hosts has to have the fully | |
579 | qualified host name. I think "files" has to be before "dns" | |
580 | in /etc/nsswitch.conf during bootup. | |
581 | ||
13026d96 EA |
582 | From another correspondent: |
583 | ||
584 | When running sendmail under Solaris, the gethostbyname() | |
585 | hack in conf.c which should perform proper canonicalization | |
586 | of host names could fail. Result: the host name is not | |
587 | canonicalized despite the hack, and you'll have to define $j | |
588 | and $m in sendmail.cf somewhere. | |
589 | ||
590 | The reason could be that /etc/nsswitch.conf is improperly | |
591 | configured (at least from sendmail's point of view). For | |
592 | example, the line | |
593 | ||
594 | hosts: files nisplus dns | |
595 | ||
596 | will make gethostbyname() look in /etc/hosts first, then ask | |
597 | nisplus, then dns. However, if /etc/hosts does not contain | |
598 | the full canonicalized hostname, then no amount of | |
599 | gethostbyname()s will work. | |
600 | ||
601 | Solution (or rather, a workaround): Ask nisplus first, then | |
602 | dns, then local files: | |
603 | ||
604 | hosts: nisplus dns [NOTFOUND=return] files | |
cff7779f | 605 | |
a8b8aa82 EA |
606 | The Solaris "syslog" function is apparently limited to something |
607 | about 90 characters because of a kernel limitation. If you have | |
71aecf7c EA |
608 | source code, you can probably up this number. You can get patches |
609 | that fix this problem: the patch ids are: | |
610 | ||
611 | Solaris 2.1 100834 | |
612 | Solaris 2.2 100999 | |
0d61a904 | 613 | Solaris 2.3 101318 |
71aecf7c EA |
614 | |
615 | Be sure you have the appropriate patch installed or you won't | |
616 | see system logging. | |
a8b8aa82 | 617 | |
8429697f | 618 | Solaris 2.4 (SunOS 5.4) |
c4a61e98 EA |
619 | If you include /usr/lib at the end of your LD_LIBRARY_PATH you run |
620 | the risk of getting the wrong libraries under some circumstances. | |
621 | This is because of a new feature in Solaris 2.4, described by | |
622 | Rod.Evans@Eng.Sun.COM: | |
623 | ||
624 | >> Prior to SunOS 5.4, any LD_LIBRARY_PATH setting was ignored by the | |
625 | >> runtime linker if the application was setxid (secure), thus your | |
626 | >> applications search path would be: | |
627 | >> | |
628 | >> /usr/local/lib LD_LIBRARY_PATH component - IGNORED | |
629 | >> /usr/lib LD_LIBRARY_PATH component - IGNORED | |
630 | >> /usr/local/lib RPATH - honored | |
631 | >> /usr/lib RPATH - honored | |
632 | >> | |
633 | >> the effect is that path 3 would be the first used, and this would | |
634 | >> satisfy your resolv.so lookup. | |
635 | >> | |
636 | >> In SunOS 5.4 we made the LD_LIBRARY_PATH a little more flexible. | |
637 | >> People who developed setxid applications wanted to be able to alter | |
638 | >> the library search path to some degree to allow for their own | |
639 | >> testing and debugging mechanisms. It was decided that the only | |
640 | >> secure way to do this was to allow a `trusted' path to be used in | |
641 | >> LD_LIBRARY_PATH. The only trusted directory we presently define | |
642 | >> is /usr/lib. Thus a setuid root developer could play with some | |
643 | >> alternative shared object implementations and place them in | |
644 | >> /usr/lib (being root we assume they'ed have access to write in this | |
645 | >> directory). This change was made as part of 1155380 - after a | |
646 | >> *huge* amount of discussion regarding the security aspect of things. | |
647 | >> | |
648 | >> So, in SunOS 5.4 your applications search path would be: | |
649 | >> | |
650 | >> /usr/local/lib from LD_LIBRARY_PATH - IGNORED (untrustworthy) | |
651 | >> /usr/lib from LD_LIBRARY_PATH - honored (trustworthy) | |
652 | >> /usr/local/lib from RPATH - honored | |
653 | >> /usr/lib from RPATH - honored | |
654 | >> | |
655 | >> here, path 2 would be the first used. | |
8429697f | 656 | |
ad762555 EA |
657 | Ultrix |
658 | By default, the IDENT protocol is turned off on Ultrix. If you | |
37717795 EA |
659 | are running Ultrix 4.4 or later, or if you have included patch |
660 | CXO-8919 for Ultrix 4.2 or 4.3 to fix the TCP problem, you can turn | |
ad762555 EA |
661 | IDENT on in the configuration file by setting the "ident" timeout |
662 | to 30 seconds. | |
663 | ||
35ef9fff | 664 | OSF/1 |
c4a61e98 | 665 | If you are compiling on OSF/1 (DEC Alpha), you must use |
78649122 | 666 | -L/usr/shlib (otherwise it core dumps on startup). You may also |
a84edbf8 EA |
667 | need -mld to get the nlist() function, although some versions |
668 | apparently don't need this. | |
669 | ||
670 | Also, the enclosed makefile removed /usr/sbin/smtpd; if you need | |
671 | it, just create the link to the sendmail binary. | |
39270cfd | 672 | |
ac091d9d EA |
673 | IRIX |
674 | The header files on SGI IRIX are completely prototyped, and as | |
675 | a result you can sometimes get some warning messages during | |
676 | compilation. These can be ignored. There are two errors in | |
677 | deliver only if you are using gcc, both of the form ``warning: | |
678 | passing arg N of `execve' from incompatible pointer type''. | |
679 | Also, if you compile with -DNIS, you will get a complaint | |
680 | about a declaration of struct dom_binding in a prototype | |
681 | when compiling map.c; this is not important because the | |
682 | function being prototyped is not used in that file. | |
683 | ||
9fff2b81 EA |
684 | In order to compile sendmail you will have had to install |
685 | the developers' option in order to get the necessary include | |
686 | files. | |
687 | ||
b8b2fbcc EA |
688 | NeXT or NEXTSTEP |
689 | NEXTSTEP 3.3 and earlier ship with the old DBM library. You will | |
690 | need to acquire the new Berkeley DB from ftp.cs.berkeley.edu. | |
691 | Install it in /usr/local/{lib,include}. | |
692 | ||
693 | If you are compiling on NEXTSTEP, you will have to create an | |
694 | empty file "unistd.h" and create a file "dirent.h" containing: | |
aa102c71 | 695 | |
35ef9fff EA |
696 | #include <sys/dir.h> |
697 | #define dirent direct | |
39270cfd | 698 | |
35ef9fff | 699 | (The Makefile.NeXT should try to do both of these for you.) |
8e5c6745 | 700 | |
1be639fd EA |
701 | Apparently, there is a bug in getservbyname on Nextstep 3.0 |
702 | that causes it to fail under some circumstances with the | |
703 | message "SYSERR: service "smtp" unknown" logged. You should | |
704 | be able to work around this by including the line: | |
705 | ||
9981a641 | 706 | OOPort=25 |
1be639fd EA |
707 | |
708 | in your .cf file. | |
709 | ||
cff7779f EA |
710 | You may have to use -DNeXT. |
711 | ||
a84edbf8 EA |
712 | BSDI (BSD/386) 1.0, NetBSD 0.9, FreeBSD 1.0 |
713 | The "m4" from BSDI won't handle the config files properly. | |
714 | I haven't had a chance to test this myself. | |
715 | ||
716 | The M4 shipped in FreeBSD and NetBSD 0.9 don't handle the config | |
717 | files properly. One must use either GNU m4 1.1 or the PD-M4 | |
718 | recently posted in comp.os.386bsd.bugs (and maybe others). | |
719 | NetBSD-current includes the PD-M4 (as stated in the NetBSD file | |
720 | CHANGES). | |
721 | ||
722 | FreeBSD 1.0 RELEASE has uname(2) now. Use -DUSEUNAME in order to | |
723 | use it (look into Makefile.FreeBSD). NetBSD-current may have | |
724 | it too but it has not been verified. | |
725 | ||
726 | You cannot port the latest version of the Berkeley db library | |
727 | and use it with sendmail without recompiling the world. This | |
728 | is because C library routines use the older version which have | |
729 | incompatible header files -- the result is that it can't read | |
730 | other system files, such as /etc/passwd, unless you use the | |
731 | new db format throughout your system. You should normally just | |
732 | use the version of db supplied in your release. You may need | |
11c14c72 | 733 | to use -DOLD_NEWDB=1 to make this work -- this turns off some |
a84edbf8 EA |
734 | new interface calls (for file locking) that are not in older |
735 | versions of db. You'll get compile errors if you need this | |
736 | flag and don't have it set. | |
e4099afa | 737 | |
1be639fd EA |
738 | 4.3BSD |
739 | If you are running a "virgin" version of 4.3BSD, you'll have | |
740 | a very old resolver and be missing some header files. The | |
741 | header files are simple -- create empty versions and everything | |
742 | will work fine. For the resolver you should really port a new | |
743 | version (4.8.3 or later) of the resolver; 4.9 is available on | |
744 | gatekeeper.DEC.COM in pub/BSD/bind/4.9. If you are really | |
745 | determined to continue to use your old, buggy version (or as | |
746 | a shortcut to get sendmail working -- I'm sure you have the | |
747 | best intentions to port a modern version of BIND), you can | |
748 | copy ../contrib/oldbind.compat.c into src and add | |
749 | oldbind.compat.o to OBJADD in the Makefile. | |
750 | ||
fe3849ea EA |
751 | A/UX |
752 | Date: Tue, 12 Oct 1993 18:28:28 -0400 (EDT) | |
753 | From: "Eric C. Hagberg" <hagberg@med.cornell.edu> | |
754 | Subject: Fix for A/UX ndbm | |
755 | ||
756 | I guess this isn't really a sendmail bug, however, it is something | |
757 | that A/UX users should be aware of when compiling sendmail 8.6. | |
758 | ||
759 | Apparently, the calls that sendmail is using to the ndbm routines | |
760 | in A/UX 3.0.x contain calls to "broken" routines, in that the | |
761 | aliases database will break when it gets "just a little big" | |
762 | (sorry I don't have exact numbers here, but it broke somewhere | |
763 | around 20-25 aliases for me.), making all aliases non-functional | |
764 | after exceeding this point. | |
765 | ||
766 | What I did was to get the gnu-dbm-1.6 package, compile it, and | |
767 | then re-compile sendmail with "-lgdbm", "-DNDBM", and using the | |
768 | ndbm.h header file that comes with the gnu-package. This makes | |
769 | things behave properly. | |
770 | ||
771 | I suppose porting the New Berkeley db package is another route, | |
772 | however, I made a quick attempt at it, and found it difficult | |
773 | (not easy at least); the gnu-dbm package "configured" and | |
774 | compiled easily. | |
775 | ||
3f966d92 EA |
776 | SCO Unix |
777 | From: Thomas Essebier <tom@stallion.oz.au> | |
778 | Organisation: Stallion Technologies Pty Ltd. | |
779 | ||
780 | It will probably help those who are trying to configure sendmail 8.6.9 | |
c4a61e98 | 781 | to know that if they are on SCO, they had better set |
3f966d92 EA |
782 | OI-dnsrch |
783 | or they will core dump as soon as they try to use the resolver. | |
784 | ie. although SCO has _res.dnsrch defined, and is kinda BIND 4.8.3, it | |
785 | does not inititialise it, nor does it understand 'search' in | |
786 | /etc/named.boot. | |
787 | - sigh - | |
788 | ||
fe3849ea | 789 | DG/UX |
b4a2fa63 EA |
790 | Doug Anderson <dlander@afterlife.ncsc.mil> has successfully run |
791 | V8 on the DG/UX 5.4.2 and 5.4R3.x platforms under heavy usage. | |
792 | Originally, the DG /bin/mail program wasn't compatible with | |
793 | the V8 sendmail, since the DG /bin/mail requires the environment | |
794 | variable "_FORCE_MAIL_LOCAL_=yes" be set. Version 8.7 now includes | |
795 | this in the environment before invoking the local mailer. Some | |
796 | have used procmail to avoid this problem in the past. It works | |
797 | but some have experienced file locking problems with their DG/UX | |
798 | ports of procmail. | |
fe3849ea | 799 | |
548197f7 EA |
800 | Apollo DomainOS |
801 | If you are compiling on Apollo, you will have to create an empty | |
802 | file "unistd.h" and create a file "dirent.h" containing: | |
803 | ||
804 | #include <sys/dir.h> | |
805 | #define dirent direct | |
806 | ||
807 | (The Makefile.DomainOS will attempt to do both of these for you.) | |
808 | ||
bc53a996 EA |
809 | HP-UX 8.00 |
810 | Date: Mon, 24 Jan 1994 13:25:45 +0200 | |
811 | From: Kimmo Suominen <Kimmo.Suominen@lut.fi> | |
812 | Subject: 8.6.5 w/ HP-UX 8.00 on s300 | |
813 | ||
814 | Just compiled and fought with sendmail 8.6.5 on a HP9000/360 (ie. a | |
815 | series 300 machine) running HP-UX 8.00. | |
816 | ||
817 | I was getting segmentation fault when delivering to a local user. | |
818 | With debugging I saw it was faulting when doing _free@libc... *sigh* | |
819 | It seems the new implementation of malloc on s300 is buggy as of 8.0, | |
820 | so I tried out the one in -lmalloc (malloc(3X)). With that it seems | |
821 | to work just dandy. | |
822 | ||
823 | When linking, you will get the following error: | |
824 | ||
825 | ld: multiply defined symbol _freespace in file /usr/lib/libmalloc.a | |
826 | ||
827 | but you can just ignore it. You might want to add this info to the | |
828 | README file for the future... | |
829 | ||
830 | Linux | |
831 | Something broke between versions 0.99.13 and 0.99.14 of Linux: | |
832 | the flock() system call gives errors. If you are running .14, | |
833 | you must not use flock. You can do this with -DHASFLOCK=0. | |
834 | ||
c8fe5892 EA |
835 | Around the inclusion of bind-4.9.3 & linux libc-4.6.20, the |
836 | initialization of the _res structure changed. If /etc/hosts.conf | |
837 | was configured as "hosts, bind" the resolver code could return | |
838 | "Name server failure" errors. This is supposedly fixed in | |
839 | later versions of libc (>= 4.6.29?), and later versions of | |
840 | sendmail (> 8.6.10) try to work around the problem. | |
841 | ||
842 | Some older versions (< 4.6.20?) of the libc/include files conflict | |
843 | with sendmail's version of cdefs.h. Deleting sendmail's version | |
844 | on those systems should be non-harmful, and new versions don't care. | |
845 | ||
bc53a996 EA |
846 | AIX |
847 | This version of sendmail does not support MB, MG, and MR resource | |
848 | records, which are supported by AIX sendmail. | |
849 | ||
ac091d9d EA |
850 | RISC/os |
851 | RISC/os from MIPS is a merged AT&T/Berkeley system. When you | |
852 | compile on that platform you will get duplicate definitions | |
853 | on many files. You can ignore these. | |
854 | ||
34ae5327 EA |
855 | System V Release 4 Based Systems |
856 | There is a single Makefile that is intended for all SVR4-based | |
857 | systems (called Makefile.SVR4). It defines __svr4__, which is | |
858 | predefined by some compilers. If your compiler already defines | |
859 | this compile variable, you can delete the definition from the | |
860 | Makefile. | |
861 | ||
862 | It's been tested on Dell Issue 2.2. | |
863 | ||
3bc5d9d5 EA |
864 | DELL SVR4 |
865 | Date: Mon, 06 Dec 1993 10:42:29 EST | |
866 | From: "Kimmo Suominen" <kim@grendel.lut.fi> | |
867 | Message-ID: <2d0352f9.lento29@lento29.UUCP> | |
868 | To: eric@cs.berkeley.edu | |
4a786eee | 869 | Cc: sendmail@cs.berkeley.edu |
3bc5d9d5 EA |
870 | Subject: Notes for DELL SVR4 |
871 | ||
872 | Eric, | |
873 | ||
874 | Here are some notes for compiling Sendmail 8.6.4 on DELL SVR4. I ran | |
875 | across these things when helping out some people who contacted me by | |
876 | e-mail. | |
877 | ||
878 | 1) Use gcc 2.4.5 (or later?). Dell distributes gcc 2.1 with their | |
879 | Issue 2.2 Unix. It is too old, and gives you problems with | |
880 | clock.c, because sigset_t won't get defined in <sys/signal.h>. | |
881 | This is due to a problematic protection rule in there, and is | |
882 | fixed with gcc 2.4.5. | |
883 | ||
884 | 2) If you don't use the new Berkeley DB (-DNEWDB), then you need | |
885 | to add "-lc -lucb" to the libraries to link with. This is because | |
886 | the -ldbm distributed by Dell needs the bcopy, bcmp and bzero | |
887 | functions. It is important that you specify both libraries in | |
888 | the given order to be sure you only get the BSTRING functions | |
889 | from the UCB library (and not the signal routines etc.). | |
890 | ||
891 | 3) Don't leave out "-lelf" even if compiling with "-lc -lucb". | |
892 | The UCB library also has another copy of the nlist routines, | |
893 | but we do want the ones from "-lelf". | |
894 | ||
895 | If anyone needs a compiled gcc 2.4.5 and/or a ported DB library, they | |
c4a61e98 | 896 | can use anonymous ftp to fetch them from lut.fi in the /kim directory. |
3bc5d9d5 EA |
897 | They are copies of what I use on grendel.lut.fi, and offering them |
898 | does not imply that I would also support them. I have sent the DB | |
899 | port for SVR4 back to Keith Bostic for inclusion in the official | |
900 | distribution, but I haven't heard anything from him as of today. | |
901 | ||
902 | - gcc-2.4.5-svr4.tar.gz (gcc 2.4.5 and the corresponding libg++) | |
903 | - db-1.72.tar.gz (with source, objects and a installed copy) | |
904 | ||
905 | Cheers | |
906 | + Kim | |
c4a61e98 | 907 | -- |
3bc5d9d5 EA |
908 | * Kimmo.Suominen@lut.fi * SysVr4 enthusiast at GRENDEL.LUT.FI * |
909 | * KIM@FINFILES.BITNET * Postmaster and Hostmaster at LUT.FI * | |
910 | * + 358 200 865 718 * Unix area moderator at NIC.FUNET.FI * | |
911 | ||
3802cde0 EA |
912 | ConvexOS 10.1 and below |
913 | In order to use the name server, you must create the file | |
914 | /etc/use_nameserver. If this file does not exist, the call | |
915 | to res_init() will fail and you will have absolutely no | |
916 | access to DNS, including MX records. | |
3bc5d9d5 | 917 | |
21c5cb89 EA |
918 | Amdahl UTS 2.1.5 |
919 | In order to get UTS to work, you will have to port BIND 4.9. | |
920 | The vendor's BIND is reported to be ``totally inadequate.'' | |
921 | See sendmail/contrib/AmdahlUTS.patch for the patches necessary | |
922 | to get BIND 4.9 compiled for UTS. | |
923 | ||
dde3f4ae EA |
924 | UnixWare 2.0 |
925 | According to Alexander Kolbasov <sasha@unitech.gamma.ru>, | |
926 | the m4 on UnixWare 2.0 (still in Beta) will core dump on the | |
927 | config files. GNU m4 and the m4 from UnixWare 1.x both work. | |
928 | ||
fe3849ea EA |
929 | Non-DNS based sites |
930 | This version of sendmail always tries to connect to the Domain | |
931 | Name System (DNS) to resolve names, regardless of the setting | |
932 | of the `I' option. On most systems that are not running DNS, | |
933 | this will fail quickly and sendmail will continue, but on some | |
934 | systems it has a long timeout. If you have this problem, you | |
935 | will have to recompile without NAMED_BIND. Some people have | |
936 | claimed that they have successfully used "OI+USEVC" to force | |
937 | sendmail to use a virtual circuit -- this will always time out | |
938 | quickly, but also tells sendmail that a failed connection | |
939 | should requeue the message (probably not what you intended). | |
940 | A future release of sendmail will correct this problem. | |
941 | ||
35ef9fff EA |
942 | Both NEWDB and NDBM |
943 | If you use both -DNDBM and -DNEWDB, you must delete the module | |
944 | ndbm.o from libdb.a and delete the file "ndbm.h" from the files | |
945 | that get installed (that is, use the OLD ndbm.h, not the new | |
946 | ndbm.h). This compatibility module maps ndbm calls into DB | |
947 | calls, and breaks things rather badly. | |
322eceee | 948 | |
3943d695 EA |
949 | GNU getopt |
950 | I'm told that GNU getopt has a problem in that it gets confused | |
951 | by the double call. Use the version in conf.c instead. | |
952 | ||
a105f790 | 953 | BIND 4.9.2 and Ultrix |
7fab18a1 EA |
954 | If you are running on Ultrix, be sure you read conf/Info.Ultrix |
955 | in the BIND distribution very carefully -- there is information | |
956 | in there that you need to know in order to avoid errors of the | |
957 | form: | |
a105f790 EA |
958 | |
959 | /lib/libc.a(gethostent.o): sethostent: multiply defined | |
960 | /lib/libc.a(gethostent.o): endhostent: multiply defined | |
961 | /lib/libc.a(gethostent.o): gethostbyname: multiply defined | |
962 | /lib/libc.a(gethostent.o): gethostbyaddr: multiply defined | |
963 | ||
964 | during the link stage. | |
965 | ||
bdebce78 EA |
966 | strtoul |
967 | Some compilers (notably gcc) claim to be ANSI C but do not | |
968 | include the ANSI-required routine "strtoul". If your compiler | |
969 | has this problem, you will get an error in srvrsmtp.c on the | |
970 | code: | |
971 | ||
972 | # ifdef defined(__STDC__) && !defined(BROKEN_ANSI_LIBRARY) | |
973 | e->e_msgsize = strtoul(vp, (char **) NULL, 10); | |
974 | # else | |
975 | e->e_msgsize = strtol(vp, (char **) NULL, 10); | |
976 | # endif | |
977 | ||
978 | You can use -DBROKEN_ANSI_LIBRARY to get around this problem. | |
979 | ||
39270cfd | 980 | |
65e35a85 EA |
981 | +--------------+ |
982 | | MANUAL PAGES | | |
983 | +--------------+ | |
984 | ||
985 | The manual pages have been written against the -mandoc macros | |
986 | instead of the -man macros. The latest version of groff has them | |
987 | included. You can also get a copy from FTP.UU.NET in directory | |
988 | /systems/unix/bsd-sources/share/tmac. | |
989 | ||
990 | ||
76b4b35d EA |
991 | +-----------------+ |
992 | | DEBUGGING HOOKS | | |
993 | +-----------------+ | |
994 | ||
995 | As of 8.6.5, sendmail daemons will catch a SIGUSR1 signal and log | |
996 | some debugging output (logged at LOG_DEBUG severity). The | |
997 | information dumped is: | |
998 | ||
999 | * The value of the $j macro. | |
1000 | * A warning if $j is not in the set $=w. | |
1001 | * A list of the open file descriptors. | |
1002 | * The contents of the connection cache. | |
1003 | * If ruleset 89 is defined, it is evaluated and the results printed. | |
1004 | ||
1005 | This allows you to get information regarding the runtime state of the | |
1006 | daemon on the fly. This should not be done too frequently, since | |
1007 | the process of rewriting may lose memory which will not be recovered. | |
1008 | Also, ruleset 89 may call non-reentrant routines, so there is a small | |
1009 | non-zero probability that this will cause other problems. It is | |
1010 | really only for debugging serious problems. | |
1011 | ||
1012 | A typical formulation of ruleset 89 would be: | |
1013 | ||
1014 | R$* $@ $>0 some test address | |
1015 | ||
1016 | ||
39270cfd EA |
1017 | +-----------------------------+ |
1018 | | DESCRIPTION OF SOURCE FILES | | |
1019 | +-----------------------------+ | |
eb6c0e7a | 1020 | |
bd144236 | 1021 | The following list describes the files in this directory: |
2a9def67 | 1022 | |
9e0bdf8f EA |
1023 | Makefile The makefile used here; this version only works with |
1024 | the new Berkeley make. | |
1025 | Makefile.dist A trimmed down version of the makefile that works with | |
1026 | the old make. | |
2a9def67 | 1027 | READ_ME This file. |
95168923 EA |
1028 | TRACEFLAGS My own personal list of the trace flags -- not guaranteed |
1029 | to be particularly up to date. | |
2a9def67 | 1030 | alias.c Does name aliasing in all forms. |
bd144236 | 1031 | arpadate.c A subroutine which creates ARPANET standard dates. |
bd144236 EA |
1032 | clock.c Routines to implement real-time oriented functions |
1033 | in sendmail -- e.g., timeouts. | |
2a9def67 EA |
1034 | collect.c The routine that actually reads the mail into a temp |
1035 | file. It also does a certain amount of parsing of | |
1036 | the header, etc. | |
1037 | conf.c The configuration file. This contains information | |
1038 | that is presumed to be quite static and non- | |
1039 | controversial, or code compiled in for efficiency | |
1040 | reasons. Most of the configuration is in sendmail.cf. | |
bd144236 | 1041 | conf.h Configuration that must be known everywhere. |
2a9def67 | 1042 | convtime.c A routine to sanely process times. |
bd144236 EA |
1043 | daemon.c Routines to implement daemon mode. This version is |
1044 | specifically for Berkeley 4.1 IPC. | |
2a9def67 | 1045 | deliver.c Routines to deliver mail. |
95168923 EA |
1046 | domain.c Routines that interface with DNS (the Domain Name |
1047 | System). | |
2a9def67 | 1048 | err.c Routines to print error messages. |
bd144236 | 1049 | envelope.c Routines to manipulate the envelope structure. |
2a9def67 EA |
1050 | headers.c Routines to process message headers. |
1051 | macro.c The macro expander. This is used internally to | |
1052 | insert information from the configuration file. | |
2a9def67 EA |
1053 | main.c The main routine to sendmail. This file also |
1054 | contains some miscellaneous routines. | |
95168923 EA |
1055 | map.c Support for database maps. |
1056 | mci.c Routines that handle mail connection information caching. | |
bd144236 | 1057 | parseaddr.c The routines which do address parsing. |
2a9def67 EA |
1058 | queue.c Routines to implement message queueing. |
1059 | readcf.c The routine that reads the configuration file and | |
1060 | translates it to internal form. | |
bd144236 | 1061 | recipient.c Routines that manipulate the recipient list. |
2a9def67 | 1062 | savemail.c Routines which save the letter on processing errors. |
2a9def67 | 1063 | sendmail.h Main header file for sendmail. |
2a9def67 EA |
1064 | srvrsmtp.c Routines to implement server SMTP. |
1065 | stab.c Routines to manage the symbol table. | |
1066 | stats.c Routines to collect and post the statistics. | |
1067 | sysexits.c List of error messages associated with error codes | |
1068 | in sysexits.h. | |
bd144236 EA |
1069 | trace.c The trace package. These routines allow setting and |
1070 | testing of trace flags with a high granularity. | |
95168923 | 1071 | udb.c The user database interface module. |
2a9def67 EA |
1072 | usersmtp.c Routines to implement user SMTP. |
1073 | util.c Some general purpose routines used by sendmail. | |
95168923 EA |
1074 | version.c The version number and information about this |
1075 | version of sendmail. Theoretically, this gets | |
1076 | modified on every change. | |
2a9def67 EA |
1077 | |
1078 | Eric Allman | |
1079 | ||
f4554bfa | 1080 | (Version 8.97, last update %G% 18:11:35) |