misc additions
[unix-history] / usr / src / usr.sbin / sendmail / src / conf.h
CommitLineData
5a739feb 1/*
dc45ba8c 2 * Copyright (c) 1983 Eric P. Allman
31de980b
KB
3 * Copyright (c) 1988, 1993
4 * The Regents of the University of California. All rights reserved.
bee79b64 5 *
417f7a11 6 * %sccs.include.redist.c%
bee79b64 7 *
d2dc4dd0 8 * @(#)conf.h 8.107 (Berkeley) %G%
bee79b64 9 */
aeb2545d
DF
10
11/*
12** CONF.H -- All user-configurable parameters for sendmail
5a739feb
EA
13*/
14
f43b04ce 15# include <sys/param.h>
82530719 16# include <sys/types.h>
46300693 17# include <sys/stat.h>
c2edb205 18# include <sys/file.h>
0349f8cc 19# include <sys/wait.h>
f8a31c8e 20# include <fcntl.h>
39270cfd 21# include <signal.h>
f43b04ce 22
ba6514e2 23/**********************************************************************
5a739feb
EA
24** Table sizes, etc....
25** There shouldn't be much need to change these....
ba6514e2 26**********************************************************************/
5a739feb 27
d36f8e5c 28# define MAXLINE 2048 /* max line length */
f0a960f1 29# define MAXNAME 256 /* max length of a name */
5a739feb 30# define MAXPV 40 /* max # of parms to mailers */
d36f8e5c 31# define MAXATOM 200 /* max atoms per address */
5a739feb 32# define MAXMAILERS 25 /* maximum mailers known to system */
8583ab39 33# define MAXRWSETS 100 /* max # of sets of rewriting rules */
5a739feb 34# define MAXPRIORITIES 25 /* max values for Precedence: field */
8583ab39 35# define MAXMXHOSTS 20 /* max # of MX records */
8657d05f 36# define SMTPLINELIM 990 /* maximum SMTP line length */
f43b04ce
EA
37# define MAXKEY 128 /* maximum size of a database key */
38# define MEMCHUNKSIZE 1024 /* chunk size for memory allocation */
b0b636d1 39# define MAXUSERENVIRON 100 /* max envars saved, must be >= 3 */
9f7134c8 40# define MAXALIASDB 12 /* max # of alias databases */
8583ab39
EA
41
42# ifndef QUEUESIZE
43# define QUEUESIZE 1000 /* max # of jobs per queue run */
44# endif
45
ba6514e2 46/**********************************************************************
5a739feb 47** Compilation options.
9bcdff70
EA
48**
49** #define these if they are available; comment them out otherwise.
ba6514e2 50**********************************************************************/
5a739feb 51
9bcdff70 52# define LOG 1 /* enable logging */
9bcdff70 53# define UGLYUUCP 1 /* output ugly UUCP From lines */
8988dfd3 54# define NETUNIX 1 /* include unix domain support */
3356c77c 55# define NETINET 1 /* include internet support */
9bcdff70 56# define SETPROCTITLE 1 /* munge argv to display current status */
7f0fd60b 57# define MATCHGECOS 1 /* match user names from gecos field */
8e5c6745 58# define XDEBUG 1 /* enable extended debugging */
273562d8
EA
59# ifdef NEWDB
60# define USERDB 1 /* look in user database (requires NEWDB) */
5a4c03c6
EA
61# endif
62
efe7f723
EA
63/**********************************************************************
64** 0/1 Compilation options.
65** #define these to 1 if they are available;
66** #define them to 0 otherwise.
67**********************************************************************/
68
69# ifndef NAMED_BIND
70# define NAMED_BIND 1 /* use Berkeley Internet Domain Server */
71# endif
72
fce21cb9
EA
73/*
74** Most systems have symbolic links today, so default them on. You
75** can turn them off by #undef'ing this below.
76*/
77
78# define HASLSTAT 1 /* has lstat(2) call */
79
c6bd47b4
EA
80/*
81** General "standard C" defines.
82**
83** These may be undone later, to cope with systems that claim to
84** be Standard C but aren't. Gcc is the biggest offender -- it
85** doesn't realize that the library is part of the language.
86**
87** Life would be much easier if we could get rid of this sort
88** of bozo problems.
89*/
90
91#ifdef __STDC__
92# define HASSETVBUF 1 /* we have setvbuf(3) in libc */
93#endif
94
ba6514e2 95/**********************************************************************
e6245c7e
EA
96** Operating system configuration.
97**
98** Unless you are porting to a new OS, you shouldn't have to
99** change these.
ba6514e2 100**********************************************************************/
5a4c03c6 101
fd57f063
EA
102/*
103** Per-Operating System defines
104*/
105
2b09dd75 106
ba6514e2 107/*
27a00e24 108** HP-UX -- tested for 8.07, 9.00, and 9.01.
ba6514e2
EA
109*/
110
8a47b280 111# ifdef __hpux
192b13aa
EA
112/* avoid m_flags conflict between db.h & sys/sysmacros.h on HP 300 */
113# undef m_flags
fd57f063 114# define SYSTEM5 1 /* include all the System V defines */
39270cfd
EA
115# define HASINITGROUPS 1 /* has initgroups(3) call */
116# define HASSETREUID 1 /* has setreuid(2) call */
e7261663 117# define setreuid(r, e) setresuid(r, e, -1)
33d59d37 118# define LA_TYPE LA_FLOAT
5e0e0f8f 119# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */
60e52ca7 120# define GIDSET_T gid_t
33d59d37 121# define _PATH_UNIX "/hp-ux"
60e52ca7
EA
122# ifndef _PATH_SENDMAILCF
123# define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
124# endif
a74fd615
EA
125# ifndef IDENTPROTO
126# define IDENTPROTO 0 /* TCP/IP implementation is broken */
127# endif
0379c130
EA
128# ifndef HASGETUSERSHELL
129# define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */
130# endif
fc658fc9 131# define syslog hard_syslog
0379c130
EA
132# ifdef __STDC__
133extern int syslog(int, char *, ...);
134# endif
273562d8
EA
135# endif
136
2b09dd75 137
ba6514e2
EA
138/*
139** IBM AIX 3.x -- actually tested for 3.2.3
140*/
141
a419d027 142# ifdef _AIX3
39270cfd 143# define HASINITGROUPS 1 /* has initgroups(3) call */
485a1ac5 144# define HASUNAME 1 /* use System V uname(2) system call */
1ee33f7d 145# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
9114f86c 146# define FORK fork /* no vfork primitive available */
3077a686 147# undef SETPROCTITLE /* setproctitle confuses AIX */
5e0e0f8f 148# define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */
8e5c6745
EA
149# endif
150
2b09dd75 151
ba6514e2
EA
152/*
153** Silicon Graphics IRIX
154**
0fc3fb21 155** Compiles on 4.0.1.
ba6514e2
EA
156*/
157
8e5c6745 158# ifdef IRIX
f369a70b 159# define SYSTEM5 1 /* this is a System-V derived system */
39270cfd
EA
160# define HASSETREUID 1 /* has setreuid(2) call */
161# define HASINITGROUPS 1 /* has initgroups(3) call */
1ee33f7d 162# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
8e5c6745 163# define FORK fork /* no vfork primitive available */
1c8c1ad2 164# define WAITUNION 1 /* use "union wait" as wait argument type */
0d2faefc 165# define setpgid BSDsetpgrp
e6cb9fc4 166# define GIDSET_T gid_t
5e0e0f8f 167# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */
f369a70b 168# define LA_TYPE LA_INT
9114f86c
EA
169# endif
170
ba6514e2
EA
171
172/*
8988dfd3
EA
173** SunOS and Solaris
174**
175** Tested on SunOS 4.1.x (a.k.a. Solaris 1.1.x) and
176** Solaris 2.2 (a.k.a. SunOS 5.2).
ba6514e2
EA
177*/
178
45f49b73 179#if defined(sun) && !defined(BSD)
fd57f063 180
39270cfd 181# define HASINITGROUPS 1 /* has initgroups(3) call */
8988dfd3 182# define HASUNAME 1 /* use System V uname(2) system call */
1ee33f7d 183# define HASGETUSERSHELL 1 /* DOES have getusershell(3) call in libc */
5e0e0f8f 184# define LA_TYPE LA_INT
45f49b73 185
d4125001
EA
186# ifdef SOLARIS_2_3
187# define SOLARIS
188# endif
189
7b3820ed 190# ifdef SOLARIS
ba6514e2 191 /* Solaris 2.x (a.k.a. SunOS 5.x) */
0554a095
EA
192# ifndef __svr4__
193# define __svr4__ /* use all System V Releae 4 defines below */
194# endif
fd57f063 195# include <sys/time.h>
6f884c69
EA
196# define gethostbyname solaris_gethostbyname /* get working version */
197# define gethostbyaddr solaris_gethostbyaddr /* get working version */
d7a2e485 198# define GIDSET_T gid_t
f361504a 199# ifndef _PATH_UNIX
1960c7b8 200# define _PATH_UNIX "/dev/ksyms"
f361504a 201# endif
33d59d37
EA
202# ifndef _PATH_SENDMAILCF
203# define _PATH_SENDMAILCF "/etc/mail/sendmail.cf"
0f786d57 204# endif
0f786d57 205# ifndef _PATH_SENDMAILPID
33d59d37
EA
206# define _PATH_SENDMAILPID "/etc/mail/sendmail.pid"
207# endif
71aecf7c
EA
208# ifndef SYSLOG_BUFSIZE
209# define SYSLOG_BUFSIZE 1024 /* allow full size syslog buffer */
210# endif
fd57f063 211
7b3820ed 212# else
e9abaf1a 213 /* SunOS 4.0.3 or 4.1.x */
f361504a 214# define HASSETREUID 1 /* has setreuid(2) call */
72af7ebb
EA
215# ifndef HASFLOCK
216# define HASFLOCK 1 /* has flock(2) call */
217# endif
5e0e0f8f 218# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */
45f49b73 219# include <vfork.h>
45f49b73 220
e9abaf1a
EA
221# ifdef SUNOS403
222 /* special tweaking for SunOS 4.0.3 */
223# include <malloc.h>
224# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */
225# define WAITUNION 1 /* use "union wait" as wait argument type */
226# undef WIFEXITED
227# undef WEXITSTATUS
228# undef HASUNAME
229# define setpgid setpgrp
230typedef int pid_t;
231extern char *getenv();
232
d0812b5a
EA
233# else
234 /* 4.1.x specifics */
235# define HASSETSID 1 /* has Posix setsid(2) call */
236# define HASSETVBUF 1 /* we have setvbuf(3) in libc */
237
e9abaf1a 238# endif
fd57f063 239# endif
45f49b73
EA
240#endif
241
fe3849ea 242/*
8988dfd3
EA
243** DG/UX
244**
245** Tested on 5.4.2
fe3849ea
EA
246*/
247
248#ifdef DGUX
249# define SYSTEM5 1
250# define LA_TYPE LA_SUBR
fe3849ea
EA
251# define HASSETREUID 1 /* has setreuid(2) call */
252# define HASUNAME 1 /* use System V uname(2) system call */
253# define HASSETSID 1 /* has Posix setsid(2) call */
254# define HASINITGROUPS 1 /* has initgroups(3) call */
e1ab99fe 255# define HASGETUSERSHELL 0 /* does not have getusershell(3) */
a74fd615
EA
256# ifndef IDENTPROTO
257# define IDENTPROTO 0 /* TCP/IP implementation is broken */
258# endif
fe3849ea 259# undef SETPROCTITLE
5e0e0f8f 260# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */
8988dfd3
EA
261
262/* these include files must be included early on DG/UX */
263# include <netinet/in.h>
264# include <arpa/inet.h>
265
fe3849ea
EA
266# define inet_addr dgux_inet_addr
267extern long dgux_inet_addr();
268#endif
269
2b09dd75 270
ba6514e2
EA
271/*
272** Digital Ultrix 4.2A or 4.3
9cea9407
EA
273**
274** Apparently, fcntl locking is broken on 4.2A, in that locks are
275** not dropped when the process exits. This causes major problems,
276** so flock is the only alternative.
ba6514e2
EA
277*/
278
45f49b73 279#ifdef ultrix
39270cfd 280# define HASSETREUID 1 /* has setreuid(2) call */
33d59d37 281# define HASUNSETENV 1 /* has unsetenv(3) call */
39270cfd 282# define HASINITGROUPS 1 /* has initgroups(3) call */
b1839a64 283# define HASUNAME 1 /* use System V uname(2) system call */
72af7ebb
EA
284# ifndef HASFLOCK
285# define HASFLOCK 1 /* has flock(2) call */
286# endif
1ee33f7d 287# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
a3815d39 288# define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_errno=0 */
0dbb4629
EA
289# ifdef vax
290# define LA_TYPE LA_FLOAT
291# else
292# define LA_TYPE LA_INT
293# define LA_AVENRUN "avenrun"
294# endif
5e0e0f8f 295# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */
a74fd615
EA
296# ifndef IDENTPROTO
297# define IDENTPROTO 0 /* TCP/IP implementation is broken */
298# endif
e6245c7e
EA
299#endif
300
2b09dd75 301
ba6514e2
EA
302/*
303** OSF/1 (tested on Alpha)
304*/
305
fd57f063 306#ifdef __osf__
33d59d37 307# define HASUNSETENV 1 /* has unsetenv(3) call */
39270cfd
EA
308# define HASSETREUID 1 /* has setreuid(2) call */
309# define HASINITGROUPS 1 /* has initgroups(3) call */
534256ae 310# ifndef HASFLOCK
72af7ebb
EA
311# define HASFLOCK 1 /* has flock(2) call */
312# endif
33d59d37 313# define LA_TYPE LA_INT
5e0e0f8f 314# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */
8988dfd3 315# ifndef _PATH_SENDMAILPID
fc658fc9 316# define _PATH_SENDMAILPID "/var/run/sendmail.pid"
8988dfd3 317# endif
6070681d
EA
318#endif
319
2b09dd75 320
ba6514e2
EA
321/*
322** NeXTstep
323*/
324
fbfeb92c 325#ifdef NeXT
39270cfd 326# define HASINITGROUPS 1 /* has initgroups(3) call */
72af7ebb
EA
327# ifndef HASFLOCK
328# define HASFLOCK 1 /* has flock(2) call */
329# endif
9cb009c2 330# define NEEDGETOPT 1 /* need a replacement for getopt(3) */
693a756a 331# define WAITUNION 1 /* use "union wait" as wait argument type */
8e5c6745 332# define sleep sleepX
0d2faefc 333# define setpgid setpgrp
e60b62fd
EA
334# ifndef LA_TYPE
335# define LA_TYPE LA_MACH
336# endif
5e0e0f8f 337# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */
0349f8cc 338# ifndef _POSIX_SOURCE
39270cfd 339typedef int pid_t;
0349f8cc
EA
340# undef WEXITSTATUS
341# undef WIFEXITED
342# endif
0f786d57
EA
343# ifndef _PATH_SENDMAILCF
344# define _PATH_SENDMAILCF "/etc/sendmail/sendmail.cf"
345# endif
0f786d57
EA
346# ifndef _PATH_SENDMAILPID
347# define _PATH_SENDMAILPID "/etc/sendmail/sendmail.pid"
348# endif
8c5949d2
EA
349#endif
350
2b09dd75 351
ba6514e2 352/*
33d59d37 353** 4.4 BSD
9c08c09b
EA
354**
355** See also BSD defines.
ba6514e2
EA
356*/
357
ed0b2c1b 358#ifdef BSD4_4
0f786d57 359# define HASUNSETENV 1 /* has unsetenv(3) call */
ed0b2c1b 360# include <sys/cdefs.h>
7621e399 361# define ERRLIST_PREDEFINED /* don't declare sys_errlist */
0f786d57
EA
362# ifndef LA_TYPE
363# define LA_TYPE LA_SUBR
364# endif
5e0e0f8f 365# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */
7621e399
EA
366#endif
367
2b09dd75 368
e7261663
EA
369/*
370** BSD/386 (all versions)
371** From Tony Sanders, BSDI
372*/
373
374#ifdef __bsdi__
375# define HASUNSETENV 1 /* has the unsetenv(3) call */
376# define HASSETSID 1 /* has the setsid(2) POSIX syscall */
e7261663
EA
377# include <sys/cdefs.h>
378# define ERRLIST_PREDEFINED /* don't declare sys_errlist */
11c14c72 379# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */
e7261663
EA
380# ifndef LA_TYPE
381# define LA_TYPE LA_SUBR
382# endif
11c14c72
EA
383# if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312
384 /* version 1.1 or later */
385# define HASSETPROCTITLE 1 /* setproctitle is in libc */
386# undef SETPROCTITLE /* so don't redefine it in conf.c */
387# else
388 /* version 1.0 or earlier */
389# ifndef OLD_NEWDB
390# define OLD_NEWDB 1 /* old version of newdb library */
391# endif
392# endif
e7261663
EA
393#endif
394
395
396
db82ecce 397/*
766f059d 398** 386BSD / FreeBSD 1.0E / NetBSD (all architectures, all versions)
db82ecce
EA
399**
400** 4.3BSD clone, closer to 4.4BSD
9c08c09b
EA
401**
402** See also BSD defines.
db82ecce
EA
403*/
404
766f059d 405#if defined(__386BSD__) || defined(__FreeBSD__) || defined(__NetBSD__)
db82ecce
EA
406# define HASUNSETENV 1 /* has unsetenv(3) call */
407# define HASSETSID 1 /* has the setsid(2) POSIX syscall */
1411dc64
EA
408# ifdef __NetBSD__
409# define HASUNAME 1 /* has uname(2) syscall */
410# endif
db82ecce
EA
411# include <sys/cdefs.h>
412# define ERRLIST_PREDEFINED /* don't declare sys_errlist */
413# ifndef LA_TYPE
414# define LA_TYPE LA_SUBR
415# endif
5e0e0f8f 416# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */
db82ecce
EA
417#endif
418
419
8988dfd3
EA
420/*
421** Mach386
422**
423** For mt Xinu's Mach386 system.
424*/
425
426#if defined(MACH) && defined(i386)
427# define MACH386 1
428# define HASUNSETENV 1 /* has unsetenv(3) call */
429# define HASINITGROUPS 1 /* has initgroups(3) call */
534256ae 430# ifndef HASFLOCK
72af7ebb
EA
431# define HASFLOCK 1 /* has flock(2) call */
432# endif
8988dfd3
EA
433# define NEEDGETOPT 1 /* need a replacement for getopt(3) */
434# define NEEDSTRTOL 1 /* need the strtol() function */
435# define setpgid setpgrp
436# ifndef LA_TYPE
437# define LA_TYPE LA_FLOAT
438# endif
5e0e0f8f 439# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */
c6bd47b4 440# undef HASSETVBUF /* don't actually have setvbuf(3) */
8988dfd3
EA
441# undef WEXITSTATUS
442# undef WIFEXITED
443# ifndef _PATH_SENDMAILCF
444# define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
445# endif
446# ifndef _PATH_SENDMAILPID
447# define _PATH_SENDMAILPID "/etc/sendmail.pid"
448# endif
449#endif
450
451
35f1f39e
EA
452/*
453** 4.3 BSD -- this is for very old systems
454**
f0bb212b
EA
455** Should work for mt Xinu MORE/BSD and Mips UMIPS-BSD 2.1.
456**
35f1f39e
EA
457** You'll also have to install a new resolver library.
458** I don't guarantee that support for this environment is complete.
459*/
460
f0bb212b 461#if defined(oldBSD43) || defined(MORE_BSD) || defined(umipsbsd)
35f1f39e
EA
462# define NEEDVPRINTF 1 /* need a replacement for vprintf(3) */
463# define NEEDGETOPT 1 /* need a replacement for getopt(3) */
0639fd0c 464# define ARBPTR_T char *
0d2faefc 465# define setpgid setpgrp
35f1f39e
EA
466# ifndef LA_TYPE
467# define LA_TYPE LA_FLOAT
468# endif
469# ifndef _PATH_SENDMAILCF
470# define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
471# endif
a74fd615
EA
472# ifndef IDENTPROTO
473# define IDENTPROTO 0 /* TCP/IP implementation is broken */
474# endif
ac3f694f
EA
475# undef WEXITSTATUS
476# undef WIFEXITED
477typedef short pid_t;
478extern int errno;
35f1f39e
EA
479#endif
480
2b09dd75 481
ba6514e2
EA
482/*
483** SCO Unix
8e01bd08
EA
484**
485** This includes two parts -- the first is for SCO Open Server 3.2v4
486** (contributed by Philippe Brand <phb@colombo.telesys-innov.fr>).
487** The second is, I believe, for an older version.
ba6514e2
EA
488*/
489
8e01bd08
EA
490#ifdef _SCO_unix_4_2
491# define _SCO_unix_
492# define HASSETREUID 1 /* has setreuid(2) call */
3f23b98b 493# define NEEDFSYNC 1 /* needs the fsync(2) call stub */
8e01bd08
EA
494# define _PATH_UNIX "/unix"
495# ifndef _PATH_SENDMAILCF
496# define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
497# endif
498# ifndef _PATH_SENDMAILPID
499# define _PATH_SENDMAILPID "/etc/sendmail.pid"
500# endif
501#endif
502
7621e399
EA
503#ifdef _SCO_unix_
504# define SYSTEM5 1 /* include all the System V defines */
39270cfd 505# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */
175dac04 506# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
7621e399
EA
507# define FORK fork
508# define MAXPATHLEN PATHSIZE
fe3849ea 509# define LA_TYPE LA_SHORT
5e0e0f8f 510# define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */
8988dfd3 511# undef NETUNIX /* no unix domain socket support */
33d59d37
EA
512#endif
513
2b09dd75 514
33d59d37
EA
515/*
516** ConvexOS 11.0 and later
f0bb212b
EA
517**
518** "Todd C. Miller" <millert@mroe.cs.colorado.edu> claims this
519** works on 9.1 as well.
33d59d37
EA
520*/
521
522#ifdef _CONVEX_SOURCE
0c31d7be
EA
523# define BSD 1 /* include all the BSD defines */
524# define HASUNAME 1 /* use System V uname(2) system call */
33d59d37 525# define HASSETSID 1 /* has POSIX setsid(2) call */
0c31d7be 526# define NEEDGETOPT 1 /* need replacement for getopt(3) */
33d59d37 527# define LA_TYPE LA_FLOAT
5e0e0f8f 528# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */
f0bb212b
EA
529# ifndef _PATH_SENDMAILCF
530# define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
531# endif
532# ifndef S_IREAD
533# define S_IREAD _S_IREAD
534# define S_IWRITE _S_IWRITE
535# define S_IEXEC _S_IEXEC
536# define S_IFMT _S_IFMT
537# define S_IFCHR _S_IFCHR
538# define S_IFBLK _S_IFBLK
539# endif
a74fd615
EA
540# ifndef IDENTPROTO
541# define IDENTPROTO 0 /* TCP/IP implementation is broken */
542# endif
33d59d37
EA
543#endif
544
2b09dd75 545
33d59d37 546/*
fa323968 547** RISC/os 4.52
33d59d37 548**
fa323968 549** Gives a ton of warning messages, but otherwise compiles.
33d59d37
EA
550*/
551
0fc3fb21 552#ifdef RISCOS
fa323968 553
33d59d37 554# define HASUNSETENV 1 /* has unsetenv(3) call */
534256ae 555# ifndef HASFLOCK
72af7ebb
EA
556# define HASFLOCK 1 /* has flock(2) call */
557# endif
fa323968
EA
558# define WAITUNION 1 /* use "union wait" as wait argument type */
559# define NEEDGETOPT 1 /* need a replacement for getopt(3) */
33d59d37
EA
560# define LA_TYPE LA_INT
561# define LA_AVENRUN "avenrun"
562# define _PATH_UNIX "/unix"
fa323968
EA
563# undef WIFEXITED
564
565# define setpgid setpgrp
566
567extern int errno;
568typedef int pid_t;
569#define SIGFUNC_DEFINED
570typedef int (*sigfunc_t)();
571extern char *getenv();
572extern void *malloc();
573
ed0b2c1b
EA
574#endif
575
2b09dd75 576
0d2faefc
EA
577/*
578** Linux 0.99pl10 and above...
a1a01683
EA
579**
580** Thanks to, in reverse order of contact:
581**
582** John Kennedy <warlock@csuchico.edu>
583** Florian La Roche <rzsfl@rz.uni-sb.de>
584** Karl London <karl@borg.demon.co.uk>
585**
586** Last compiled against: [03/02/94 @ 05:34 PM (Wednesday)]
587** sendmail 8.6.6.b9 named 4.9.2-931205-p1 db-1.73
588** gcc 2.5.8 libc.so.4.5.19
589** slackware 1.1.2 linux 0.99.15
0d2faefc
EA
590*/
591
404f4d13 592#ifdef __linux__
402003b1 593# define BSD 1 /* include BSD defines */
0d2faefc 594# define NEEDGETOPT 1 /* need a replacement for getopt(3) */
402003b1 595# define HASUNAME 1 /* use System V uname(2) system call */
c2edb205 596# define HASUNSETENV 1 /* has unsetenv(3) call */
402003b1 597# define ERRLIST_PREDEFINED /* don't declare sys_errlist */
a1a01683 598# define GIDSET_T gid_t /* from <linux/types.h> */
0d2faefc 599# ifndef LA_TYPE
ff065a83 600# define LA_TYPE LA_PROCSTR
0d2faefc 601# endif
a1a01683 602# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() impl */
72ef208d 603# include <sys/sysmacros.h>
a1a01683 604# undef atol /* wounded in <stdlib.h> */
0d2faefc
EA
605#endif
606
607
178464cb
EA
608/*
609** DELL SVR4 Issue 2.2, and others
610** From Kimmo Suominen <kim@grendel.lut.fi>
611**
612** It's on #ifdef DELL_SVR4 because Solaris also gets __svr4__
613** defined, and the definitions conflict.
69bed929
EA
614**
615** Peter Wemm <peter@perth.DIALix.oz.au> claims that the setreuid
616** trick works on DELL 2.2 (SVR4.0/386 version 4.0) and ESIX 4.0.3A
617** (SVR4.0/386 version 3.0).
178464cb
EA
618*/
619
620#ifdef DELL_SVR4
f361504a
EA
621 /* no changes necessary */
622 /* see general __svr4__ defines below */
178464cb
EA
623#endif
624
625
c2edb205
EA
626/*
627** Apple A/UX 3.0
628*/
629
630#ifdef _AUX_SOURCE
25a722b1 631# include <sys/sysmacros.h>
c2edb205 632# define BSD /* has BSD routines */
c2edb205 633# define HASUNAME 1 /* use System V uname(2) system call */
c2edb205 634# define HASSETVBUF 1 /* we have setvbuf(3) in libc */
53335960 635# define SIGFUNC_DEFINED /* sigfunc_t already defined */
a74fd615
EA
636# ifndef IDENTPROTO
637# define IDENTPROTO 0 /* TCP/IP implementation is broken */
638# endif
c2edb205
EA
639# define FORK fork
640# ifndef _PATH_SENDMAILCF
641# define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
642# endif
643# ifndef LA_TYPE
644# define LA_TYPE LA_ZERO
645# endif
5e0e0f8f 646# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */
96e003d2
EA
647# undef WIFEXITED
648# undef WEXITSTATUS
c2edb205
EA
649#endif
650
651
82530719
EA
652/*
653** Encore UMAX V
654**
655** Not extensively tested.
656*/
657
658#ifdef UMAXV
659# include <limits.h>
660# define HASUNAME 1 /* use System V uname(2) system call */
82530719
EA
661# define HASSETVBUF 1 /* we have setvbuf(3) in libc */
662# define HASINITGROUPS 1 /* has initgroups(3) call */
1ee33f7d 663# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
82530719
EA
664# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */
665# define SYS5SETPGRP 1 /* use System V setpgrp(2) syscall */
666# define FORK fork /* no vfork(2) primitive available */
5e0e0f8f 667# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */
82530719
EA
668# define MAXPATHLEN PATH_MAX
669extern struct passwd *getpwent(), *getpwnam(), *getpwuid();
670extern struct group *getgrent(), *getgrnam(), *getgrgid();
671# undef WIFEXITED
672# undef WEXITSTATUS
673#endif
674
675
31c3ae15
EA
676/*
677** Stardent Titan 3000 running TitanOS 4.2.
678**
679** Must be compiled in "cc -43" mode.
680**
fce21cb9 681** From Kate Hedstrom <kate@ahab.rutgers.edu>.
31c3ae15
EA
682**
683** Note the tweaking below after the BSD defines are set.
684*/
685
686#ifdef titan
687# define setpgid setpgrp
688typedef int pid_t;
689# undef WIFEXITED
690# undef WEXITSTATUS
691#endif
692
693
c6bd47b4
EA
694/*
695** Sequent DYNIX 3.2.0
696**
697** From Jim Davis <jdavis@cs.arizona.edu>.
698*/
699
700#ifdef sequent
efadb8ee 701
c6bd47b4
EA
702# define BSD 1
703# define HASUNSETENV 1
704# define BSD4_3 1 /* to get signal() in conf.c */
705# define WAITUNION 1
706# define LA_TYPE LA_FLOAT
707# ifdef _POSIX_VERSION
708# undef _POSIX_VERSION /* set in <unistd.h> */
709# endif
710# undef HASSETVBUF /* don't actually have setvbuf(3) */
711# define setpgid setpgrp
712
713/* Have to redefine WIFEXITED to take an int, to work with waitfor() */
714# undef WIFEXITED
715# define WIFEXITED(s) (((union wait*)&(s))->w_stopval != WSTOPPED && \
716 ((union wait*)&(s))->w_termsig == 0)
717# define WEXITSTATUS(s) (((union wait*)&(s))->w_retcode)
718typedef int pid_t;
719# define isgraph(c) (isprint(c) && (c != ' '))
720
28462cf3
EA
721# ifndef IDENTPROTO
722# define IDENTPROTO 0 /* TCP/IP implementation is broken */
723# endif
724
c6bd47b4
EA
725# ifndef _PATH_UNIX
726# define _PATH_UNIX "/dynix"
727# endif
728# ifndef _PATH_SENDMAILCF
729# define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
730# endif
731
732#endif
733
734
efadb8ee
EA
735/*
736** Sequent DYNIX/ptx v2.0 (and higher)
737**
738** For DYNIX/ptx v1.x, undefine HASSETREUID.
739**
740** From Tim Wright <timw@sequent.com>.
741*/
742
743#ifdef _SEQUENT_
744# define SYSTEM5 1 /* include all the System V defines */
745# define HASSETSID 1 /* has POSIX setsid(2) call */
746# define HASINITGROUPS 1 /* has initgroups(3) call */
747# define HASSETREUID 1 /* has setreuid(2) call */
748# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
749# define GIDSET_T gid_t
750# define LA_TYPE LA_INT
751# define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */
752# undef SETPROCTITLE
28462cf3
EA
753# ifndef IDENTPROTO
754# define IDENTPROTO 0 /* TCP/IP implementation is broken */
755# endif
efadb8ee
EA
756# ifndef _PATH_SENDMAILCF
757# define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
758# endif
759# ifndef _PATH_SENDMAILPID
760# define _PATH_SENDMAILPID "/etc/sendmail.pid"
761# endif
762#endif
763
764
250441f6
EA
765/*
766** Cray Unicos
767**
768** Ported by David L. Kensiski, Sterling Sofware <kensiski@nas.nasa.gov>
769*/
770
771#ifdef UNICOS
772# define SYSTEM5 1 /* include all the System V defines */
773# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */
250441f6
EA
774# define MAXPATHLEN PATHSIZE
775# define LA_TYPE LA_ZERO
5e0e0f8f 776# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */
250441f6
EA
777#endif
778
c6bd47b4 779
548197f7
EA
780/*
781** Apollo DomainOS
782**
783** From Todd Martin <tmartint@tus.ssi1.com> & Don Lewis <gdonl@gv.ssi1.com>
e7261663 784**
548197f7
EA
785** 15 Jan 1994
786**
787*/
788
789#ifdef apollo
548197f7
EA
790# define HASSETREUID 1 /* has setreuid(2) call */
791# define HASINITGROUPS 1 /* has initgroups(2) call */
792# undef SETPROCTITLE
793# define LA_TYPE LA_SUBR /* use getloadavg.c */
f243158a 794# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */
548197f7
EA
795# ifndef _PATH_SENDMAILCF
796# define _PATH_SENDMAILCF "/usr/lib/sendmail.cf"
797# endif
798# ifndef _PATH_SENDMAILPID
799# define _PATH_SENDMAILPID "/etc/sendmail.pid"
800# endif
801# undef S_IFSOCK /* S_IFSOCK and S_IFIFO are the same */
802# undef S_IFIFO
803# define S_IFIFO 0010000
804# ifndef IDENTPROTO
805# define IDENTPROTO 0 /* TCP/IP implementation is broken */
806# endif
e7261663 807#endif
548197f7
EA
808
809
41915d28
EA
810/*
811** UnixWare
812**
813** From Evan Champion <evanc@spatial.synapse.org>.
814*/
815
816#ifdef UNIXWARE
817# define SYSTEM5 1
818# ifndef HASGETUSERSHELL
819# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
820# endif
821# define GIDSET_T int
822# define SLEEP_T int
823# define SFS_TYPE SFS_STATVFS
824# define LA_TYPE LA_ZERO
825# undef WIFEXITED
826# undef WEXITSTATUS
827# define _PATH_UNIX "/unix"
828# ifndef _PATH_SENDMAILCF
829# define _PATH_SENDMAILCF "/usr/ucblib/sendmail.cf"
830# endif
831# ifndef _PATH_SENDMAILPID
832# define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid"
833# endif
834# define SYSLOG_BUFSIZE 128
835#endif
836
837
8b223875
EA
838/*
839** Intergraph CLIX 3.1
840**
841** From Paul Southworth <pauls@locust.cic.net>
842*/
843
844#ifdef CLIX
845# define SYSTEM5 1 /* looks like System V */
41915d28
EA
846# ifndef HASGETUSERSHELL
847# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
848# endif
8b223875
EA
849# define DEV_BSIZE 512 /* device block size not defined */
850# define GIDSET_T gid_t
851# undef LOG /* syslog not available */
852# define NEEDFSYNC 1 /* no fsync in system library */
853# define GETSHORT _getshort
854#endif
855
856
01e1d6e5
EA
857/*
858** NCR 3000 Series (SysVr4)
859**
860** From From: Kevin Darcy <kevin@tech.mis.cfc.com>.
861*/
862
863#ifdef NCR3000
864# define __svr4__
865# undef BSD
866# define LA_AVENRUN "avenrun"
867#endif
868
869
870
548197f7 871
178464cb 872
ba6514e2 873/**********************************************************************
fd57f063 874** End of Per-Operating System defines
ba6514e2 875**********************************************************************/
fd57f063 876
b4cd00ff
EA
877/**********************************************************************
878** More general defines
879**********************************************************************/
880
33d59d37
EA
881/* general BSD defines */
882#ifdef BSD
39270cfd
EA
883# define HASGETDTABLESIZE 1 /* has getdtablesize(2) call */
884# define HASSETREUID 1 /* has setreuid(2) call */
885# define HASINITGROUPS 1 /* has initgroups(2) call */
72af7ebb
EA
886# ifndef HASFLOCK
887# define HASFLOCK 1 /* has flock(2) call */
888# endif
33d59d37
EA
889#endif
890
f361504a
EA
891/* general System V Release 4 defines */
892#ifdef __svr4__
893# define SYSTEM5 1
894# define HASSETREUID 1 /* has seteuid(2) call & working saved uids */
1ee33f7d
EA
895# ifndef HASGETUSERSHELL
896# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */
9ceb18fe 897# endif
f361504a
EA
898# define setreuid(r, e) seteuid(e)
899
900# ifndef _PATH_UNIX
901# define _PATH_UNIX "/unix"
902# endif
903# ifndef _PATH_SENDMAILCF
904# define _PATH_SENDMAILCF "/usr/ucblib/sendmail.cf"
905# endif
906# ifndef _PATH_SENDMAILPID
907# define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid"
908# endif
909# ifndef SYSLOG_BUFSIZE
910# define SYSLOG_BUFSIZE 128
911# endif
25e2468c
EA
912# ifndef SFS_TYPE
913# define SFS_TYPE SFS_STATVFS
914# endif
f361504a
EA
915#endif
916
fd57f063 917/* general System V defines */
402003b1 918#ifdef SYSTEM5
8988dfd3 919# include <sys/sysmacros.h>
b4cd00ff 920# define HASUNAME 1 /* use System V uname(2) system call */
82530719 921# define SYS5SETPGRP 1 /* use System V setpgrp(2) syscall */
c6bd47b4 922# define HASSETVBUF 1 /* we have setvbuf(3) in libc */
33d59d37 923# ifndef LA_TYPE
5e0e0f8f
EA
924# define LA_TYPE LA_INT /* assume integer load average */
925# endif
926# ifndef SFS_TYPE
927# define SFS_TYPE SFS_USTAT /* use System V ustat(2) syscall */
33d59d37 928# endif
b4cd00ff
EA
929# define bcopy(s, d, l) (memmove((d), (s), (l)))
930# define bzero(d, l) (memset((d), '\0', (l)))
931# define bcmp(s, d, l) (memcmp((s), (d), (l)))
402003b1 932#endif
fd57f063 933
b4cd00ff
EA
934/* general POSIX defines */
935#ifdef _POSIX_VERSION
fe3849ea
EA
936# define HASSETSID 1 /* has Posix setsid(2) call */
937# define HASWAITPID 1 /* has Posix waitpid(2) call */
b4cd00ff
EA
938#endif
939
e6cb9fc4
EA
940/*
941** If no type for argument two of getgroups call is defined, assume
942** it's an integer -- unfortunately, there seem to be several choices
943** here.
944*/
945
946#ifndef GIDSET_T
947# define GIDSET_T int
948#endif
949
31c3ae15
EA
950/*
951** Tweaking for systems that (for example) claim to be BSD but
952** don't have all the standard BSD routines (boo hiss).
953*/
954
955#ifdef titan
956# undef HASINITGROUPS /* doesn't have initgroups(3) call */
957#endif
958
72af7ebb 959
a74fd615
EA
960/*
961** Due to a "feature" in some operating systems such as Ultrix 4.3 and
962** HPUX 8.0, if you receive a "No route to host" message (ICMP message
963** ICMP_UNREACH_HOST) on _any_ connection, all connections to that host
964** are closed. Some firewalls return this error if you try to connect
965** to the IDENT port (113), so you can't receive email from these hosts
966** on these systems. The firewall really should use a more specific
967** message such as ICMP_UNREACH_PROTOCOL or _PORT or _NET_PROHIB. If
968** not explicitly set to zero above, default it on.
969*/
970
971#ifndef IDENTPROTO
972# define IDENTPROTO 1 /* use IDENT proto (RFC 1413) */
973#endif
974
1ee33f7d
EA
975#ifndef HASGETUSERSHELL
976# define HASGETUSERSHELL 1 /* libc has getusershell(3) call */
9ceb18fe
EA
977#endif
978
72af7ebb
EA
979#ifndef HASFLOCK
980# define HASFLOCK 0 /* assume no flock(2) support */
981#endif
982
11c14c72
EA
983#ifndef OLD_NEWDB
984# define OLD_NEWDB 0 /* assume newer version of newdb */
985#endif
986
2295903c
EA
987
988/**********************************************************************
e6245c7e
EA
989** Remaining definitions should never have to be changed. They are
990** primarily to provide back compatibility for older systems -- for
6070681d 991** example, it includes some POSIX compatibility definitions
2295903c 992**********************************************************************/
e6245c7e 993
bd3dddbf
EA
994/* System 5 compatibility */
995#ifndef S_ISREG
fce21cb9
EA
996# define S_ISREG(foo) ((foo & S_IFMT) == S_IFREG)
997#endif
998#if !defined(S_ISLNK) && defined(S_IFLNK)
999# define S_ISLNK(foo) ((foo & S_IFMT) == S_IFLNK)
bd3dddbf
EA
1000#endif
1001#ifndef S_IWGRP
1002#define S_IWGRP 020
1003#endif
1004#ifndef S_IWOTH
1005#define S_IWOTH 002
1006#endif
1007
030ae776
EA
1008/*
1009** Older systems don't have this error code -- it should be in
1010** /usr/include/sysexits.h.
1011*/
1012
1013# ifndef EX_CONFIG
1014# define EX_CONFIG 78 /* configuration error */
1015# endif
5229f34d 1016
fe3849ea
EA
1017/* pseudo-code used in server SMTP */
1018# define EX_QUIT 22 /* drop out of server immediately */
1019
1020
92f2b65e
EA
1021/*
1022** These are used in a few cases where we need some special
1023** error codes, but where the system doesn't provide something
1024** reasonable. They are printed in errstring.
1025*/
1026
1027#ifndef E_PSEUDOBASE
1028# define E_PSEUDOBASE 256
1029#endif
1030
1031#define EOPENTIMEOUT (E_PSEUDOBASE + 0) /* timeout on open */
1032#define E_DNSBASE (E_PSEUDOBASE + 20) /* base for DNS h_errno */
1033
0639fd0c
EA
1034/* type of arbitrary pointer */
1035#ifndef ARBPTR_T
1036# define ARBPTR_T void *
1037#endif
1038
ed0b2c1b
EA
1039#ifndef __P
1040# include "cdefs.h"
1041#endif
1042
d2dc4dd0
EA
1043/*
1044** The size of an IP address -- can't use sizeof because of problems
1045** on Crays, where everything is 64 bits. This will break if/when
1046** IP addresses are expanded to eight bytes.
1047*/
1048
1049#define IPADDRSIZE 4
1050
3356c77c
EA
1051/*
1052** Do some required dependencies
1053*/
1054
1055#if defined(NETINET) || defined(NETISO)
e9aa7870
EA
1056# define SMTP 1 /* enable user and server SMTP */
1057# define QUEUE 1 /* enable queueing */
1058# define DAEMON 1 /* include the daemon (requires IPC & SMTP) */
3356c77c
EA
1059#endif
1060
1061
5229f34d
EA
1062/*
1063** Arrange to use either varargs or stdargs
1064*/
1065
1066# ifdef __STDC__
1067
1068# include <stdarg.h>
1069
5229f34d
EA
1070# define VA_LOCAL_DECL va_list ap;
1071# define VA_START(f) va_start(ap, f)
1072# define VA_END va_end(ap)
1073
1074# else
1075
1076# include <varargs.h>
1077
5229f34d
EA
1078# define VA_LOCAL_DECL va_list ap;
1079# define VA_START(f) va_start(ap)
1080# define VA_END va_end(ap)
1081
1082# endif
422bed79 1083
322eceee 1084#ifdef HASUNAME
422bed79
EA
1085# include <sys/utsname.h>
1086# ifdef newstr
1087# undef newstr
1088# endif
322eceee 1089#else /* ! HASUNAME */
422bed79
EA
1090# define NODE_LENGTH 32
1091struct utsname
1092{
1093 char nodename[NODE_LENGTH+1];
1094};
322eceee 1095#endif /* HASUNAME */
6e99f903 1096
7621e399
EA
1097#if !defined(MAXHOSTNAMELEN) && !defined(_SCO_unix_)
1098# define MAXHOSTNAMELEN 256
8d3fd325 1099#endif
49c069a9
EA
1100
1101#if !defined(SIGCHLD) && defined(SIGCLD)
1102# define SIGCHLD SIGCLD
1103#endif
1104
1105#ifndef STDIN_FILENO
1106#define STDIN_FILENO 0
1107#endif
1108
1109#ifndef STDOUT_FILENO
1110#define STDOUT_FILENO 1
1111#endif
1112
1113#ifndef STDERR_FILENO
1114#define STDERR_FILENO 2
1115#endif
f8a31c8e 1116
0f786d57 1117#ifndef LOCK_SH
39270cfd
EA
1118# define LOCK_SH 0x01 /* shared lock */
1119# define LOCK_EX 0x02 /* exclusive lock */
1120# define LOCK_NB 0x04 /* non-blocking lock */
1121# define LOCK_UN 0x08 /* unlock */
1122#endif
64247676 1123
39270cfd
EA
1124#ifndef SIG_ERR
1125# define SIG_ERR ((void (*)()) -1)
f8a31c8e 1126#endif
a3685d83 1127
0349f8cc
EA
1128#ifndef WEXITSTATUS
1129# define WEXITSTATUS(st) (((st) >> 8) & 0377)
1130#endif
1131#ifndef WIFEXITED
1132# define WIFEXITED(st) (((st) & 0377) == 0)
1133#endif
1134
53335960
EA
1135#ifndef SIGFUNC_DEFINED
1136typedef void (*sigfunc_t) __P((int));
1137#endif
1138
7cfc9c77
EA
1139/* size of syslog buffer */
1140#ifndef SYSLOG_BUFSIZE
1141# define SYSLOG_BUFSIZE 1024
1142#endif
1143
a3685d83
EA
1144/*
1145** Size of tobuf (deliver.c)
1146** Tweak this to match your syslog implementation. It will have to
1147** allow for the extra information printed.
1148*/
1149
1150#ifndef TOBUFSIZE
7cfc9c77
EA
1151# if (SYSLOG_BUFSIZE) > 512
1152# define TOBUFSIZE (SYSLOG_BUFSIZE - 256)
1153# else
1154# define TOBUFSIZE 256
1155# endif
a3685d83 1156#endif
9114f86c 1157
77779257
EA
1158/*
1159** Size of prescan buffer.
1160** Despite comments in the _sendmail_ book, this probably should
1161** not be changed; there are some hard-to-define dependencies.
1162*/
1163
1164# define PSBUFSIZE (MAXNAME + MAXATOM) /* size of prescan buffer */
9114f86c
EA
1165/* fork routine -- set above using #ifdef _osname_ or in Makefile */
1166# ifndef FORK
1167# define FORK vfork /* function to call to fork mailer */
1168# endif
5e0139e6
EA
1169
1170/*
1171** If we are going to link scanf anyway, use it in readcf
1172*/
1173
1174#if !defined(HASUNAME) && !defined(SCANF)
1175# define SCANF 1
1176#endif