1 /* 2 * Copyright (c) 1983 Eric P. Allman 3 * Copyright (c) 1988, 1993 4 * The Regents of the University of California. All rights reserved. 5 * 6 * %sccs.include.redist.c% 7 * 8 * @(#)conf.h 8.3 (Berkeley) 07/13/93 9 */ 10 11 /* 12 ** CONF.H -- All user-configurable parameters for sendmail 13 */ 14 15 # include <sys/param.h> 16 # include <sys/stat.h> 17 # include <fcntl.h> 18 19 /* 20 ** Table sizes, etc.... 21 ** There shouldn't be much need to change these.... 22 */ 23 24 # define MAXLINE 2048 /* max line length */ 25 # define MAXNAME 256 /* max length of a name */ 26 # define MAXPV 40 /* max # of parms to mailers */ 27 # define MAXATOM 200 /* max atoms per address */ 28 # define MAXMAILERS 25 /* maximum mailers known to system */ 29 # define MAXRWSETS 100 /* max # of sets of rewriting rules */ 30 # define MAXPRIORITIES 25 /* max values for Precedence: field */ 31 # define MAXMXHOSTS 20 /* max # of MX records */ 32 # define SMTPLINELIM 990 /* maximum SMTP line length */ 33 # define MAXKEY 128 /* maximum size of a database key */ 34 # define MEMCHUNKSIZE 1024 /* chunk size for memory allocation */ 35 # define MAXUSERENVIRON 100 /* max envars saved, must be >= 3 */ 36 # define MAXIPADDR 16 /* max # of IP addrs for this host */ 37 # define MAXALIASDB 12 /* max # of alias databases */ 38 # define PSBUFSIZE (MAXLINE + MAXATOM) /* size of prescan buffer */ 39 40 # ifndef QUEUESIZE 41 # define QUEUESIZE 1000 /* max # of jobs per queue run */ 42 # endif 43 44 /* 45 ** Compilation options. 46 ** 47 ** #define these if they are available; comment them out otherwise. 48 */ 49 50 # define LOG 1 /* enable logging */ 51 # define UGLYUUCP 1 /* output ugly UUCP From lines */ 52 # define NETINET 1 /* include internet support */ 53 # define SETPROCTITLE 1 /* munge argv to display current status */ 54 # define NAMED_BIND 1 /* use Berkeley Internet Domain Server */ 55 # define MATCHGECOS 1 /* match user names from gecos field */ 56 # define XDEBUG 1 /* enable extended debugging */ 57 58 # ifdef NEWDB 59 # define USERDB 1 /* look in user database (requires NEWDB) */ 60 # endif 61 62 /* 63 ** Operating system configuration. 64 ** 65 ** Unless you are porting to a new OS, you shouldn't have to 66 ** change these. 67 */ 68 69 /* general "standard C" defines */ 70 #ifdef __STDC__ 71 # define HASSETVBUF 1 /* yes, we have setvbuf in libc */ 72 #endif 73 74 /* general POSIX defines */ 75 #ifdef _POSIX_VERSION 76 # define HASSETSID 1 /* has setsid(2) call */ 77 #endif 78 79 /* 80 ** Per-Operating System defines 81 */ 82 83 /* HP-UX -- tested for 8.07 */ 84 # ifdef __hpux 85 # define SYSTEM5 1 /* include all the System V defines */ 86 # define UNSETENV 1 /* need unsetenv(3) support */ 87 # define HASSETEUID 1 /* we have seteuid call */ 88 # define seteuid(uid) setresuid(-1, uid, -1) 89 # ifndef __STDC__ 90 # define HASSETVBUF 1 /* we have setvbuf in libc (but not __STDC__) */ 91 # endif 92 # endif 93 94 /* IBM AIX 3.x -- actually tested for 3.2.3 */ 95 # ifdef _AIX3 96 # define LOCKF 1 /* use System V lockf instead of flock */ 97 # define FORK fork /* no vfork primitive available */ 98 # define UNSETENV 1 /* need unsetenv(3) support */ 99 # define SYS5TZ 1 /* use System V style timezones */ 100 # endif 101 102 /* Silicon Graphics IRIX */ 103 # ifdef IRIX 104 # define FORK fork /* no vfork primitive available */ 105 # define UNSETENV 1 /* need unsetenv(3) support */ 106 # define setpgrp BSDsetpgrp 107 # endif 108 109 /* various systems from Sun Microsystems */ 110 #if defined(sun) && !defined(BSD) 111 112 # define UNSETENV 1 /* need unsetenv(3) support */ 113 114 # ifdef SOLARIS 115 /* Solaris 2.x */ 116 # define LOCKF 1 /* use System V lockf instead of flock */ 117 # define HASUSTAT 1 /* has the ustat(2) syscall */ 118 # define bcopy(s, d, l) (memmove((d), (s), (l))) 119 # define bzero(d, l) (memset((d), '\0', (l))) 120 # define bcmp(s, d, l) (memcmp((s), (d), (l))) 121 # include <sys/time.h> 122 123 # else 124 /* SunOS 4.1.x */ 125 # define HASSTATFS 1 /* has the statfs(2) syscall */ 126 # define HASSETEUID 1 /* we have seteuid call */ 127 # include <vfork.h> 128 129 # endif 130 #endif 131 132 /* Digital Ultrix 4.2A or 4.3 */ 133 #ifdef ultrix 134 # define HASSTATFS 1 /* has the statfs(2) syscall */ 135 # define HASSETEUID 1 /* we have seteuid call */ 136 #endif 137 138 /* OSF/1 (tested on Alpha) */ 139 #ifdef __osf__ 140 # define HASSETEUID 1 /* we have seteuid call */ 141 # define seteuid(uid) setreuid(-1, uid) 142 #endif 143 144 /* NeXTstep */ 145 #ifdef __NeXT__ 146 # define sleep sleepX 147 # define UNSETENV 1 /* need unsetenv(3) support */ 148 #endif 149 150 /* various flavors of BSD */ 151 #ifdef BSD 152 # define HASGETDTABLESIZE 1 /* we have getdtablesize(2) call */ 153 #endif 154 155 /* 4.4BSD */ 156 #ifdef BSD4_4 157 # include <sys/cdefs.h> 158 # define HASSETEUID 1 /* we have seteuid(2) call */ 159 #endif 160 161 /* 162 ** End of Per-Operating System defines 163 */ 164 165 /* general System V defines */ 166 # ifdef SYSTEM5 167 # define LOCKF 1 /* use System V lockf instead of flock */ 168 # define SYS5TZ 1 /* use System V style timezones */ 169 # define HASUNAME 1 /* use System V uname system call */ 170 # define NEEDGETDTABLESIZE 1 /* needs a replacement getdtablesize */ 171 # endif 172 173 /* 174 ** Due to a "feature" in some operating systems such as Ultrix 4.3 and 175 ** HPUX 8.0, if you receive a "No route to host" message (ICMP message 176 ** ICMP_UNREACH_HOST) on _any_ connection, all connections to that host 177 ** are closed. Some firewalls return this error if you try to connect 178 ** to the IDENT port (113), so you can't receive email from these hosts 179 ** on these systems. The firewall really should use a more specific 180 ** message such as ICMP_UNREACH_PROTOCOL or _PORT or _NET_PROHIB. 181 */ 182 183 #if !defined(ultrix) && !defined(__hpux) 184 # define IDENTPROTO 1 /* use IDENT proto (RFC 1413) */ 185 #endif 186 187 /* 188 ** Remaining definitions should never have to be changed. They are 189 ** primarily to provide back compatibility for older systems -- for 190 ** example, it includes some POSIX compatibility definitions 191 */ 192 193 /* System 5 compatibility */ 194 #ifndef S_ISREG 195 #define S_ISREG(foo) ((foo & S_IFREG) == S_IFREG) 196 #endif 197 #ifndef S_IWGRP 198 #define S_IWGRP 020 199 #endif 200 #ifndef S_IWOTH 201 #define S_IWOTH 002 202 #endif 203 204 /* 205 ** Older systems don't have this error code -- it should be in 206 ** /usr/include/sysexits.h. 207 */ 208 209 # ifndef EX_CONFIG 210 # define EX_CONFIG 78 /* configuration error */ 211 # endif 212 213 #ifndef __P 214 # include "cdefs.h" 215 #endif 216 217 /* 218 ** Do some required dependencies 219 */ 220 221 #if defined(NETINET) || defined(NETISO) 222 # define SMTP 1 /* enable user and server SMTP */ 223 # define QUEUE 1 /* enable queueing */ 224 # define DAEMON 1 /* include the daemon (requires IPC & SMTP) */ 225 #endif 226 227 228 /* 229 ** Arrange to use either varargs or stdargs 230 */ 231 232 # ifdef __STDC__ 233 234 # include <stdarg.h> 235 236 # define VA_LOCAL_DECL va_list ap; 237 # define VA_START(f) va_start(ap, f) 238 # define VA_END va_end(ap) 239 240 # else 241 242 # include <varargs.h> 243 244 # define VA_LOCAL_DECL va_list ap; 245 # define VA_START(f) va_start(ap) 246 # define VA_END va_end(ap) 247 248 # endif 249 250 #ifdef HASUNAME 251 # include <sys/utsname.h> 252 # ifdef newstr 253 # undef newstr 254 # endif 255 #else /* ! HASUNAME */ 256 # define NODE_LENGTH 32 257 struct utsname 258 { 259 char nodename[NODE_LENGTH+1]; 260 }; 261 #endif /* HASUNAME */ 262 263 #ifndef MAXHOSTNAMELEN 264 #define MAXHOSTNAMELEN 256 265 #endif 266 267 #if !defined(SIGCHLD) && defined(SIGCLD) 268 # define SIGCHLD SIGCLD 269 #endif 270 271 #ifndef STDIN_FILENO 272 #define STDIN_FILENO 0 273 #endif 274 275 #ifndef STDOUT_FILENO 276 #define STDOUT_FILENO 1 277 #endif 278 279 #ifndef STDERR_FILENO 280 #define STDERR_FILENO 2 281 #endif 282 283 #ifdef LOCKF 284 #define LOCK_SH 0x01 /* shared lock */ 285 #define LOCK_EX 0x02 /* exclusive lock */ 286 #define LOCK_NB 0x04 /* non-blocking lock */ 287 #define LOCK_UN 0x08 /* unlock */ 288 289 #else 290 291 # include <sys/file.h> 292 293 #endif 294 295 /* 296 ** Size of tobuf (deliver.c) 297 ** Tweak this to match your syslog implementation. It will have to 298 ** allow for the extra information printed. 299 */ 300 301 #ifndef TOBUFSIZE 302 # define TOBUFSIZE (1024 - 256) 303 #endif 304 305 /* fork routine -- set above using #ifdef _osname_ or in Makefile */ 306 # ifndef FORK 307 # define FORK vfork /* function to call to fork mailer */ 308 # endif 309