1 /* 2 * Copyright (c) 1998-2002 Proofpoint, Inc. and its suppliers. 3 * All rights reserved. 4 * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. 5 * Copyright (c) 1988, 1993 6 * The Regents of the University of California. All rights reserved. 7 * 8 * By using this file, you agree to the terms and conditions set 9 * forth in the LICENSE file which can be found at the top level of 10 * the sendmail distribution. 11 * 12 * 13 * $Id: conf.h,v 8.577 2013-11-22 20:51:55 ca Exp $ 14 */ 15 16 /* 17 ** CONF.H -- All user-configurable parameters for sendmail 18 ** 19 ** Send updates to sendmail@Sendmail.ORG so they will be 20 ** included in the next release. 21 */ 22 23 #ifndef CONF_H 24 #define CONF_H 1 25 26 #ifdef __GNUC__ 27 struct rusage; /* forward declaration to get gcc to shut up in wait.h */ 28 #endif /* __GNUC__ */ 29 30 # include <sys/param.h> 31 # include <sys/types.h> 32 # include <sys/stat.h> 33 # ifndef __QNX__ 34 /* in QNX this grabs bogus LOCK_* manifests */ 35 # include <sys/file.h> 36 # endif /* ! __QNX__ */ 37 # include <sys/wait.h> 38 # include <limits.h> 39 # include <fcntl.h> 40 # include <signal.h> 41 # include <netdb.h> 42 # include <pwd.h> 43 # include <grp.h> 44 45 /* make sure TOBUFSIZ isn't larger than system limit for size of exec() args */ 46 #ifdef ARG_MAX 47 # if ARG_MAX > 4096 48 # define SM_ARG_MAX 4096 49 # else /* ARG_MAX > 4096 */ 50 # define SM_ARG_MAX ARG_MAX 51 # endif /* ARG_MAX > 4096 */ 52 #else /* ARG_MAX */ 53 # define SM_ARG_MAX 4096 54 #endif /* ARG_MAX */ 55 56 /********************************************************************** 57 ** Table sizes, etc.... 58 ** There shouldn't be much need to change these.... 59 ** If you do, be careful, none should be set anywhere near INT_MAX 60 **********************************************************************/ 61 62 #define MAXLINE 2048 /* max line length */ 63 #if SASL 64 # define MAXINPLINE 12288 /* max input line length (for AUTH) */ 65 #else /* SASL */ 66 # define MAXINPLINE MAXLINE /* max input line length */ 67 #endif /* SASL */ 68 #define MAXNAME 256 /* max length of a name */ 69 #ifndef MAXAUTHINFO 70 # define MAXAUTHINFO 100 /* max length of authinfo token */ 71 #endif /* ! MAXAUTHINFO */ 72 #define MAXPV 256 /* max # of parms to mailers */ 73 #define MAXATOM 1000 /* max atoms per address */ 74 #define MAXRWSETS 200 /* max # of sets of rewriting rules */ 75 #define MAXPRIORITIES 25 /* max values for Precedence: field */ 76 #define MAXMXHOSTS 100 /* max # of MX records for one host */ 77 #define SMTPLINELIM 990 /* max SMTP line length */ 78 #define MAXUDBKEY 128 /* max size of a database key (udb only) */ 79 #define MAXKEY 1024 /* max size of a database key */ 80 #define MEMCHUNKSIZE 1024 /* chunk size for memory allocation */ 81 #define MAXUSERENVIRON 100 /* max envars saved, must be >= 3 */ 82 #define MAXMAPSTACK 12 /* max # of stacked or sequenced maps */ 83 #if MILTER 84 # define MAXFILTERS 25 /* max # of milter filters */ 85 # define MAXFILTERMACROS 50 /* max # of macros per milter cmd */ 86 #endif /* MILTER */ 87 #define MAXSMTPARGS 20 /* max # of ESMTP args for MAIL/RCPT */ 88 #define MAXTOCLASS 8 /* max # of message timeout classes */ 89 #define MAXRESTOTYPES 3 /* max # of resolver timeout types */ 90 #define MAXMIMEARGS 20 /* max args in Content-Type: */ 91 #define MAXMIMENESTING 20 /* max MIME multipart nesting */ 92 #define QUEUESEGSIZE 1000 /* increment for queue size */ 93 94 #ifndef MAXNOOPCOMMANDS 95 # define MAXNOOPCOMMANDS 20 /* max "noise" commands before slowdown */ 96 #endif /* ! MAXNOOPCOMMANDS */ 97 98 /* 99 ** MAXQFNAME == 2 (size of "qf", "df" prefix) 100 ** + 8 (base 60 encoded date, time & sequence number) 101 ** + 10 (base 10 encoded 32 bit process id) 102 ** + 1 (terminating NUL character). 103 */ 104 105 #define MAXQFNAME 21 /* max qf file name length + 1 */ 106 #define MACBUFSIZE 4096 /* max expanded macro buffer size */ 107 #define TOBUFSIZE SM_ARG_MAX /* max buffer to hold address list */ 108 #define MAXSHORTSTR 203 /* max short string length */ 109 #define MAXMACNAMELEN 25 /* max macro name length */ 110 #define MAXMACROID 0377 /* max macro id number */ 111 /* Must match (BITMAPBITS - 1) */ 112 #ifndef MAXHDRSLEN 113 # define MAXHDRSLEN (32 * 1024) /* max size of message headers */ 114 #endif /* ! MAXHDRSLEN */ 115 #ifndef MAXDAEMONS 116 # define MAXDAEMONS 10 /* max number of ports to listen to */ 117 #endif /* MAXDAEMONS */ 118 #ifndef MAXINTERFACES 119 # define MAXINTERFACES 512 /* number of interfaces to probe */ 120 #endif /* MAXINTERFACES */ 121 #ifndef MAXSYMLINKS 122 # define MAXSYMLINKS 32 /* max number of symlinks in a path */ 123 #endif /* ! MAXSYMLINKS */ 124 #define MAXLINKPATHLEN (MAXPATHLEN * MAXSYMLINKS) /* max link-expanded file */ 125 #define DATA_PROGRESS_TIMEOUT 300 /* how often to check DATA progress */ 126 #define ENHSCLEN 10 /* max len of enhanced status code */ 127 #define DEFAULT_MAX_RCPT 100 /* max number of RCPTs per envelope */ 128 #ifndef MAXQUEUEGROUPS 129 # define MAXQUEUEGROUPS 50 /* max # of queue groups */ 130 /* must be less than BITMAPBITS for DoQueueRun */ 131 #endif /* MAXQUEUEGROUPS */ 132 #if MAXQUEUEGROUPS >= BITMAPBITS 133 ERROR _MAXQUEUEGROUPS must be less than _BITMAPBITS 134 #endif /* MAXQUEUEGROUPS >= BITMAPBITS */ 135 136 #ifndef MAXWORKGROUPS 137 # define MAXWORKGROUPS 50 /* max # of work groups */ 138 #endif /* MAXWORKGROUPS */ 139 140 #define MAXFILESYS BITMAPBITS /* max # of queue file systems 141 * must be <= BITMAPBITS */ 142 #ifndef FILESYS_UPDATE_INTERVAL 143 # define FILESYS_UPDATE_INTERVAL 300 /* how often to update FileSys table */ 144 #endif /* FILESYS_UPDATE_INTERVAL */ 145 146 #ifndef SM_DEFAULT_TTL 147 # define SM_DEFAULT_TTL 3600 /* default TTL for services that don't have one */ 148 #endif /* SM_DEFAULT_TTL */ 149 150 #if SASL 151 # ifndef AUTH_MECHANISMS 152 # if STARTTLS 153 # define AUTH_MECHANISMS "EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5" 154 # else /* STARTTLS */ 155 # define AUTH_MECHANISMS "GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5" 156 # endif /* STARTTLS */ 157 # endif /* ! AUTH_MECHANISMS */ 158 #endif /* SASL */ 159 160 /* 161 ** Default database permissions (alias, maps, etc.) 162 ** Used by sendmail and libsmdb 163 */ 164 165 #ifndef DBMMODE 166 # define DBMMODE 0640 167 #endif /* ! DBMMODE */ 168 169 /* 170 ** Value which means a uid or gid value should not change 171 */ 172 173 #ifndef NO_UID 174 # define NO_UID -1 175 #endif /* ! NO_UID */ 176 #ifndef NO_GID 177 # define NO_GID -1 178 #endif /* ! NO_GID */ 179 180 /********************************************************************** 181 ** Compilation options. 182 ** #define these to 1 if they are available; 183 ** #define them to 0 otherwise. 184 ** All can be overridden from Makefile. 185 **********************************************************************/ 186 187 #ifndef NETINET 188 # define NETINET 1 /* include internet support */ 189 #endif /* ! NETINET */ 190 191 #ifndef NETINET6 192 # define NETINET6 0 /* do not include IPv6 support */ 193 #endif /* ! NETINET6 */ 194 195 #ifndef NETISO 196 # define NETISO 0 /* do not include ISO socket support */ 197 #endif /* ! NETISO */ 198 199 #ifndef NAMED_BIND 200 # define NAMED_BIND 1 /* use Berkeley Internet Domain Server */ 201 #endif /* ! NAMED_BIND */ 202 203 #ifndef XDEBUG 204 # define XDEBUG 1 /* enable extended debugging */ 205 #endif /* ! XDEBUG */ 206 207 #ifndef MATCHGECOS 208 # define MATCHGECOS 1 /* match user names from gecos field */ 209 #endif /* ! MATCHGECOS */ 210 211 #ifndef DSN 212 # define DSN 1 /* include delivery status notification code */ 213 #endif /* ! DSN */ 214 215 #if !defined(USERDB) && (defined(NEWDB) || defined(HESIOD)) 216 # define USERDB 1 /* look in user database */ 217 #endif /* !defined(USERDB) && (defined(NEWDB) || defined(HESIOD)) */ 218 219 #ifndef MIME8TO7 220 # define MIME8TO7 1 /* 8->7 bit MIME conversions */ 221 #endif /* ! MIME8TO7 */ 222 223 #ifndef MIME7TO8 224 # define MIME7TO8 1 /* 7->8 bit MIME conversions */ 225 #endif /* ! MIME7TO8 */ 226 227 #if NAMED_BIND 228 # ifndef DNSMAP 229 # define DNSMAP 1 /* DNS map type */ 230 # endif /* ! DNSMAP */ 231 #endif /* NAMED_BIND */ 232 233 #ifndef PIPELINING 234 # define PIPELINING 1 /* SMTP PIPELINING */ 235 #endif /* PIPELINING */ 236 237 /********************************************************************** 238 ** End of site-specific configuration. 239 **********************************************************************/ 240 241 #include <sm/conf.h> 242 243 #endif /* ! CONF_H */ 244