conf.c (125823) | conf.c (132946) |
---|---|
1/* | 1/* |
2 * Copyright (c) 1998-2003 Sendmail, Inc. and its suppliers. | 2 * Copyright (c) 1998-2004 Sendmail, 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 * | 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 * $FreeBSD: head/contrib/sendmail/src/conf.c 125823 2004-02-14 21:58:08Z gshapiro $ | 12 * $FreeBSD: head/contrib/sendmail/src/conf.c 132946 2004-08-01 01:16:16Z gshapiro $ |
13 */ 14 15#include <sendmail.h> 16 | 13 */ 14 15#include <sendmail.h> 16 |
17SM_RCSID("@(#)$Id: conf.c,v 8.972.2.54 2004/01/08 21:54:55 ca Exp $") | 17SM_RCSID("@(#)$Id: conf.c,v 8.1047 2004/07/14 21:54:23 ca Exp $") |
18 19#include <sendmail/pathnames.h> 20#if NEWDB 21# include "sm/bdb.h" 22#endif /* NEWDB */ 23 24# include <sys/ioctl.h> 25# include <sys/param.h> --- 51 unchanged lines hidden (view full) --- 77 { "resent-from", H_FROM|H_RESENT, NULL }, 78 { "resent-reply-to", H_FROM|H_RESENT, NULL }, 79 { "sender", H_FROM, NULL }, 80 { "from", H_FROM, NULL }, 81 { "reply-to", H_FROM, NULL }, 82 { "errors-to", H_FROM|H_ERRORSTO, NULL }, 83 { "full-name", H_ACHECK, NULL }, 84 { "return-receipt-to", H_RECEIPTTO, NULL }, | 18 19#include <sendmail/pathnames.h> 20#if NEWDB 21# include "sm/bdb.h" 22#endif /* NEWDB */ 23 24# include <sys/ioctl.h> 25# include <sys/param.h> --- 51 unchanged lines hidden (view full) --- 77 { "resent-from", H_FROM|H_RESENT, NULL }, 78 { "resent-reply-to", H_FROM|H_RESENT, NULL }, 79 { "sender", H_FROM, NULL }, 80 { "from", H_FROM, NULL }, 81 { "reply-to", H_FROM, NULL }, 82 { "errors-to", H_FROM|H_ERRORSTO, NULL }, 83 { "full-name", H_ACHECK, NULL }, 84 { "return-receipt-to", H_RECEIPTTO, NULL }, |
85 { "delivery-receipt-to", H_RECEIPTTO, NULL }, |
|
85 { "disposition-notification-to", H_FROM, NULL }, 86 87 /* destination fields */ 88 { "to", H_RCPT, NULL }, 89 { "resent-to", H_RCPT|H_RESENT, NULL }, 90 { "cc", H_RCPT, NULL }, 91 { "resent-cc", H_RCPT|H_RESENT, NULL }, 92 { "bcc", H_RCPT|H_BCC, NULL }, --- 162 unchanged lines hidden (view full) --- 255 numprocs = get_num_procs_online(); 256 SpaceSub = ' '; /* option B */ 257 QueueLA = 8 * numprocs; /* option x */ 258 RefuseLA = 12 * numprocs; /* option X */ 259 WkRecipFact = 30000L; /* option y */ 260 WkClassFact = 1800L; /* option z */ 261 WkTimeFact = 90000L; /* option Z */ 262 QueueFactor = WkRecipFact * 20; /* option q */ | 86 { "disposition-notification-to", H_FROM, NULL }, 87 88 /* destination fields */ 89 { "to", H_RCPT, NULL }, 90 { "resent-to", H_RCPT|H_RESENT, NULL }, 91 { "cc", H_RCPT, NULL }, 92 { "resent-cc", H_RCPT|H_RESENT, NULL }, 93 { "bcc", H_RCPT|H_BCC, NULL }, --- 162 unchanged lines hidden (view full) --- 256 numprocs = get_num_procs_online(); 257 SpaceSub = ' '; /* option B */ 258 QueueLA = 8 * numprocs; /* option x */ 259 RefuseLA = 12 * numprocs; /* option X */ 260 WkRecipFact = 30000L; /* option y */ 261 WkClassFact = 1800L; /* option z */ 262 WkTimeFact = 90000L; /* option Z */ 263 QueueFactor = WkRecipFact * 20; /* option q */ |
263#if _FFR_QUARANTINE | |
264 QueueMode = QM_NORMAL; /* what queue items to act upon */ | 264 QueueMode = QM_NORMAL; /* what queue items to act upon */ |
265#endif /* _FFR_QUARANTINE */ | |
266 FileMode = (RealUid != geteuid()) ? 0644 : 0600; 267 /* option F */ 268 QueueFileMode = (RealUid != geteuid()) ? 0644 : 0600; 269 /* option QueueFileMode */ 270 271 if (((pw = sm_getpwnam("mailnull")) != NULL && pw->pw_uid != 0) || 272 ((pw = sm_getpwnam("sendmail")) != NULL && pw->pw_uid != 0) || 273 ((pw = sm_getpwnam("daemon")) != NULL && pw->pw_uid != 0)) --- 60 unchanged lines hidden (view full) --- 334 DoubleBounceAddr = "postmaster"; 335 MaxHeadersLength = MAXHDRSLEN; 336 MaxMimeHeaderLength = MAXLINE; 337 MaxMimeFieldLength = MaxMimeHeaderLength / 2; 338 MaxForwardEntries = 0; 339 FastSplit = 1; 340#if SASL 341 AuthMechanisms = newstr(AUTH_MECHANISMS); | 265 FileMode = (RealUid != geteuid()) ? 0644 : 0600; 266 /* option F */ 267 QueueFileMode = (RealUid != geteuid()) ? 0644 : 0600; 268 /* option QueueFileMode */ 269 270 if (((pw = sm_getpwnam("mailnull")) != NULL && pw->pw_uid != 0) || 271 ((pw = sm_getpwnam("sendmail")) != NULL && pw->pw_uid != 0) || 272 ((pw = sm_getpwnam("daemon")) != NULL && pw->pw_uid != 0)) --- 60 unchanged lines hidden (view full) --- 333 DoubleBounceAddr = "postmaster"; 334 MaxHeadersLength = MAXHDRSLEN; 335 MaxMimeHeaderLength = MAXLINE; 336 MaxMimeFieldLength = MaxMimeHeaderLength / 2; 337 MaxForwardEntries = 0; 338 FastSplit = 1; 339#if SASL 340 AuthMechanisms = newstr(AUTH_MECHANISMS); |
341 AuthRealm = NULL; |
|
342 MaxSLBits = INT_MAX; 343#endif /* SASL */ 344#if STARTTLS 345 TLS_Srv_Opts = TLS_I_SRV; 346#endif /* STARTTLS */ 347#ifdef HESIOD_INIT 348 HesiodContext = NULL; 349#endif /* HESIOD_INIT */ --- 14 unchanged lines hidden (view full) --- 364 memset(&ConnectOnlyTo, '\0', sizeof ConnectOnlyTo); 365 DataFileBufferSize = 4096; 366 XscriptFileBufferSize = 4096; 367 for (i = 0; i < MAXRWSETS; i++) 368 RuleSetNames[i] = NULL; 369#if MILTER 370 InputFilters[0] = NULL; 371#endif /* MILTER */ | 342 MaxSLBits = INT_MAX; 343#endif /* SASL */ 344#if STARTTLS 345 TLS_Srv_Opts = TLS_I_SRV; 346#endif /* STARTTLS */ 347#ifdef HESIOD_INIT 348 HesiodContext = NULL; 349#endif /* HESIOD_INIT */ --- 14 unchanged lines hidden (view full) --- 364 memset(&ConnectOnlyTo, '\0', sizeof ConnectOnlyTo); 365 DataFileBufferSize = 4096; 366 XscriptFileBufferSize = 4096; 367 for (i = 0; i < MAXRWSETS; i++) 368 RuleSetNames[i] = NULL; 369#if MILTER 370 InputFilters[0] = NULL; 371#endif /* MILTER */ |
372#if _FFR_REJECT_LOG | |
373 RejectLogInterval = 3 HOURS; | 372 RejectLogInterval = 3 HOURS; |
374#endif /* _FFR_REJECT_LOG */ 375#if _FFR_REQ_DIR_FSYNC_OPT | 373#if REQUIRES_DIR_FSYNC |
376 RequiresDirfsync = true; | 374 RequiresDirfsync = true; |
377#endif /* _FFR_REQ_DIR_FSYNC_OPT */ | 375#endif /* REQUIRES_DIR_FSYNC */ 376 ConnectionRateWindowSize = 60; |
378 setupmaps(); 379 setupqueues(); 380 setupmailers(); 381 setupheaders(); 382} 383 384 385/* --- 250 unchanged lines hidden (view full) --- 636 dequote_init, null_map_open, null_map_close, 637 macro_map_lookup, null_map_store); 638 639 /* arithmetic map -- add/subtract/compare */ 640 MAPDEF("arith", NULL, 0, 641 dequote_init, null_map_open, null_map_close, 642 arith_map_lookup, null_map_store); 643 | 377 setupmaps(); 378 setupqueues(); 379 setupmailers(); 380 setupheaders(); 381} 382 383 384/* --- 250 unchanged lines hidden (view full) --- 635 dequote_init, null_map_open, null_map_close, 636 macro_map_lookup, null_map_store); 637 638 /* arithmetic map -- add/subtract/compare */ 639 MAPDEF("arith", NULL, 0, 640 dequote_init, null_map_open, null_map_close, 641 arith_map_lookup, null_map_store); 642 |
643#if SOCKETMAP 644 /* arbitrary daemons */ 645 MAPDEF("socket", NULL, MCF_ALIASOK, 646 map_parseargs, socket_map_open, socket_map_close, 647 socket_map_lookup, null_map_store); 648#endif /* SOCKETMAP */ 649 |
|
644 if (tTd(38, 2)) 645 { 646 /* bogus map -- always return tempfail */ 647 MAPDEF("bogus", NULL, MCF_ALIASOK|MCF_OPTFILE, 648 map_parseargs, null_map_open, null_map_close, 649 bogus_map_lookup, null_map_store); 650 } 651} --- 836 unchanged lines hidden (view full) --- 1488 long avenrun[3]; 1489# else /* LA_TYPE == LA_INT */ 1490# if LA_TYPE == LA_SHORT 1491 short avenrun[3]; 1492# else /* LA_TYPE == LA_SHORT */ 1493 double avenrun[3]; 1494# endif /* LA_TYPE == LA_SHORT */ 1495# endif /* LA_TYPE == LA_INT */ | 650 if (tTd(38, 2)) 651 { 652 /* bogus map -- always return tempfail */ 653 MAPDEF("bogus", NULL, MCF_ALIASOK|MCF_OPTFILE, 654 map_parseargs, null_map_open, null_map_close, 655 bogus_map_lookup, null_map_store); 656 } 657} --- 836 unchanged lines hidden (view full) --- 1494 long avenrun[3]; 1495# else /* LA_TYPE == LA_INT */ 1496# if LA_TYPE == LA_SHORT 1497 short avenrun[3]; 1498# else /* LA_TYPE == LA_SHORT */ 1499 double avenrun[3]; 1500# endif /* LA_TYPE == LA_SHORT */ 1501# endif /* LA_TYPE == LA_INT */ |
1496 extern int errno; | |
1497 extern off_t lseek(); 1498 1499 if (kmem < 0) 1500 { 1501# ifdef _AUX_SOURCE 1502 (void) sm_strlcpy(Nl[X_AVENRUN].n_name, LA_AVENRUN, 1503 sizeof Nl[X_AVENRUN].n_name); 1504 Nl[1].n_name[0] = '\0'; --- 91 unchanged lines hidden (view full) --- 1596# include <sys/ksym.h> 1597 1598int 1599getla() 1600{ 1601 int j; 1602 static int kmem = -1; 1603 long avenrun[3]; | 1502 extern off_t lseek(); 1503 1504 if (kmem < 0) 1505 { 1506# ifdef _AUX_SOURCE 1507 (void) sm_strlcpy(Nl[X_AVENRUN].n_name, LA_AVENRUN, 1508 sizeof Nl[X_AVENRUN].n_name); 1509 Nl[1].n_name[0] = '\0'; --- 91 unchanged lines hidden (view full) --- 1601# include <sys/ksym.h> 1602 1603int 1604getla() 1605{ 1606 int j; 1607 static int kmem = -1; 1608 long avenrun[3]; |
1604 extern int errno; | |
1605 struct mioc_rksym mirk; 1606 1607 if (kmem < 0) 1608 { 1609 kmem = open("/dev/kmem", 0, 0); 1610 if (kmem < 0) 1611 { 1612 if (tTd(3, 1)) --- 211 unchanged lines hidden (view full) --- 1824} 1825 1826#endif /* LA_TYPE == LA_PROCSTR */ 1827 1828#if LA_TYPE == LA_IRIX6 1829 1830# include <sys/sysmp.h> 1831 | 1609 struct mioc_rksym mirk; 1610 1611 if (kmem < 0) 1612 { 1613 kmem = open("/dev/kmem", 0, 0); 1614 if (kmem < 0) 1615 { 1616 if (tTd(3, 1)) --- 211 unchanged lines hidden (view full) --- 1828} 1829 1830#endif /* LA_TYPE == LA_PROCSTR */ 1831 1832#if LA_TYPE == LA_IRIX6 1833 1834# include <sys/sysmp.h> 1835 |
1836# ifdef _UNICOSMP 1837# define CAST_SYSMP(x) (x) 1838# else /* _UNICOSMP */ 1839# define CAST_SYSMP(x) ((x) & 0x7fffffff) 1840# endif /* _UNICOSMP */ 1841 |
|
1832int 1833getla(void) 1834{ 1835 int j; 1836 static int kmem = -1; 1837 int avenrun[3]; 1838 1839 if (kmem < 0) --- 13 unchanged lines hidden (view full) --- 1853 sm_dprintf("getla: fcntl(/dev/kmem, FD_CLOEXEC): %s\n", 1854 sm_errstring(errno)); 1855 (void) close(kmem); 1856 kmem = -1; 1857 return -1; 1858 } 1859 } 1860 | 1842int 1843getla(void) 1844{ 1845 int j; 1846 static int kmem = -1; 1847 int avenrun[3]; 1848 1849 if (kmem < 0) --- 13 unchanged lines hidden (view full) --- 1863 sm_dprintf("getla: fcntl(/dev/kmem, FD_CLOEXEC): %s\n", 1864 sm_errstring(errno)); 1865 (void) close(kmem); 1866 kmem = -1; 1867 return -1; 1868 } 1869 } 1870 |
1861 if (lseek(kmem, (sysmp(MP_KERNADDR, MPKA_AVENRUN) & 0x7fffffff), SEEK_SET) == -1 || | 1871 if (lseek(kmem, CAST_SYSMP(sysmp(MP_KERNADDR, MPKA_AVENRUN)), SEEK_SET) 1872 == -1 || |
1862 read(kmem, (char *) avenrun, sizeof(avenrun)) < sizeof(avenrun)) 1863 { 1864 if (tTd(3, 1)) 1865 sm_dprintf("getla: lseek or read: %s\n", 1866 sm_errstring(errno)); 1867 return -1; 1868 } 1869 if (tTd(3, 5)) --- 319 unchanged lines hidden (view full) --- 2189refuseconnections(name, e, d, active) 2190 char *name; 2191 ENVELOPE *e; 2192 int d; 2193 bool active; 2194{ 2195 static time_t lastconn[MAXDAEMONS]; 2196 static int conncnt[MAXDAEMONS]; | 1873 read(kmem, (char *) avenrun, sizeof(avenrun)) < sizeof(avenrun)) 1874 { 1875 if (tTd(3, 1)) 1876 sm_dprintf("getla: lseek or read: %s\n", 1877 sm_errstring(errno)); 1878 return -1; 1879 } 1880 if (tTd(3, 5)) --- 319 unchanged lines hidden (view full) --- 2200refuseconnections(name, e, d, active) 2201 char *name; 2202 ENVELOPE *e; 2203 int d; 2204 bool active; 2205{ 2206 static time_t lastconn[MAXDAEMONS]; 2207 static int conncnt[MAXDAEMONS]; |
2197#if _FFR_REJECT_LOG | |
2198 static time_t firstrejtime[MAXDAEMONS]; 2199 static time_t nextlogtime[MAXDAEMONS]; | 2208 static time_t firstrejtime[MAXDAEMONS]; 2209 static time_t nextlogtime[MAXDAEMONS]; |
2200#endif /* _FFR_REJECT_LOG */ | |
2201 2202#if XLA 2203 if (!xla_smtp_ok()) 2204 return true; 2205#endif /* XLA */ 2206 | 2210 2211#if XLA 2212 if (!xla_smtp_ok()) 2213 return true; 2214#endif /* XLA */ 2215 |
2216 SM_ASSERT(d >= 0); 2217 SM_ASSERT(d < MAXDAEMONS); |
|
2207 if (ConnRateThrottle > 0) 2208 { 2209 time_t now; 2210 2211 now = curtime(); 2212 if (active) 2213 { 2214 if (now != lastconn[d]) --- 15 unchanged lines hidden (view full) --- 2230 } 2231 else if (now != lastconn[d]) 2232 conncnt[d] = 0; 2233 } 2234 2235 sm_getla(); 2236 if (RefuseLA > 0 && CurrentLA >= RefuseLA) 2237 { | 2218 if (ConnRateThrottle > 0) 2219 { 2220 time_t now; 2221 2222 now = curtime(); 2223 if (active) 2224 { 2225 if (now != lastconn[d]) --- 15 unchanged lines hidden (view full) --- 2241 } 2242 else if (now != lastconn[d]) 2243 conncnt[d] = 0; 2244 } 2245 2246 sm_getla(); 2247 if (RefuseLA > 0 && CurrentLA >= RefuseLA) 2248 { |
2238# if _FFR_REJECT_LOG | |
2239 time_t now; 2240 | 2249 time_t now; 2250 |
2241# define R2_MSG_LA "have been rejecting connections on daemon %s for %s" 2242# endif /* _FFR_REJECT_LOG */ | |
2243# define R_MSG_LA "rejecting connections on daemon %s: load average: %d" | 2251# define R_MSG_LA "rejecting connections on daemon %s: load average: %d" |
2252# define R2_MSG_LA "have been rejecting connections on daemon %s for %s" |
|
2244 sm_setproctitle(true, e, R_MSG_LA, name, CurrentLA); 2245 if (LogLevel > 8) 2246 sm_syslog(LOG_NOTICE, NOQID, R_MSG_LA, name, CurrentLA); | 2253 sm_setproctitle(true, e, R_MSG_LA, name, CurrentLA); 2254 if (LogLevel > 8) 2255 sm_syslog(LOG_NOTICE, NOQID, R_MSG_LA, name, CurrentLA); |
2247# if _FFR_REJECT_LOG | |
2248 now = curtime(); 2249 if (firstrejtime[d] == 0) 2250 { 2251 firstrejtime[d] = now; 2252 nextlogtime[d] = now + RejectLogInterval; 2253 } 2254 else if (nextlogtime[d] < now) 2255 { 2256 sm_syslog(LOG_ERR, NOQID, R2_MSG_LA, name, 2257 pintvl(now - firstrejtime[d], true)); 2258 nextlogtime[d] = now + RejectLogInterval; 2259 } | 2256 now = curtime(); 2257 if (firstrejtime[d] == 0) 2258 { 2259 firstrejtime[d] = now; 2260 nextlogtime[d] = now + RejectLogInterval; 2261 } 2262 else if (nextlogtime[d] < now) 2263 { 2264 sm_syslog(LOG_ERR, NOQID, R2_MSG_LA, name, 2265 pintvl(now - firstrejtime[d], true)); 2266 nextlogtime[d] = now + RejectLogInterval; 2267 } |
2260# endif /* _FFR_REJECT_LOG */ | |
2261 return true; 2262 } | 2268 return true; 2269 } |
2263# if _FFR_REJECT_LOG | |
2264 else 2265 firstrejtime[d] = 0; | 2270 else 2271 firstrejtime[d] = 0; |
2266# endif /* _FFR_REJECT_LOG */ | |
2267 2268 if (DelayLA > 0 && CurrentLA >= DelayLA) 2269 { 2270 time_t now; 2271 static time_t log_delay = (time_t) 0; 2272 2273# define MIN_DELAY_LOG 90 /* wait before logging this again */ 2274# define D_MSG_LA "delaying connections on daemon %s: load average=%d >= %d" --- 1689 unchanged lines hidden (view full) --- 3964 char *addr; 3965 extern int hosts_ctl(); 3966#endif /* TCPWRAPPERS */ 3967 3968 if (tTd(48, 3)) 3969 sm_dprintf("validate_connection(%s, %s)\n", 3970 hostname, anynet_ntoa(sap)); 3971 | 2272 2273 if (DelayLA > 0 && CurrentLA >= DelayLA) 2274 { 2275 time_t now; 2276 static time_t log_delay = (time_t) 0; 2277 2278# define MIN_DELAY_LOG 90 /* wait before logging this again */ 2279# define D_MSG_LA "delaying connections on daemon %s: load average=%d >= %d" --- 1689 unchanged lines hidden (view full) --- 3969 char *addr; 3970 extern int hosts_ctl(); 3971#endif /* TCPWRAPPERS */ 3972 3973 if (tTd(48, 3)) 3974 sm_dprintf("validate_connection(%s, %s)\n", 3975 hostname, anynet_ntoa(sap)); 3976 |
3977 connection_rate_check(sap, e); |
|
3972 if (rscheck("check_relay", hostname, anynet_ntoa(sap), 3973 e, RSF_RMCOMM|RSF_COUNT, 3, NULL, NOQID) != EX_OK) 3974 { 3975 static char reject[BUFSIZ*2]; 3976 extern char MsgBuf[]; 3977 3978 if (tTd(48, 4)) 3979 sm_dprintf(" ... validate_connection: BAD (rscheck)\n"); --- 1171 unchanged lines hidden (view full) --- 5151# endif /* _SC_NPROCESSORS_ONLN */ 5152#endif /* USESYSCTL */ 5153 5154 if (nproc <= 0) 5155 nproc = 1; 5156 return nproc; 5157} 5158/* | 3978 if (rscheck("check_relay", hostname, anynet_ntoa(sap), 3979 e, RSF_RMCOMM|RSF_COUNT, 3, NULL, NOQID) != EX_OK) 3980 { 3981 static char reject[BUFSIZ*2]; 3982 extern char MsgBuf[]; 3983 3984 if (tTd(48, 4)) 3985 sm_dprintf(" ... validate_connection: BAD (rscheck)\n"); --- 1171 unchanged lines hidden (view full) --- 5157# endif /* _SC_NPROCESSORS_ONLN */ 5158#endif /* USESYSCTL */ 5159 5160 if (nproc <= 0) 5161 nproc = 1; 5162 return nproc; 5163} 5164/* |
5165** SM_CLOSEFROM -- close file descriptors 5166** 5167** Parameters: 5168** lowest -- first fd to close 5169** highest -- last fd + 1 to close 5170** 5171** Returns: 5172** none 5173*/ 5174 5175void 5176sm_closefrom(lowest, highest) 5177 int lowest, highest; 5178{ 5179#if HASCLOSEFROM 5180 closefrom(lowest); 5181#else /* HASCLOSEFROM */ 5182 int i; 5183 5184 for (i = lowest; i < highest; i++) 5185 (void) close(i); 5186#endif /* HASCLOSEFROM */ 5187} 5188#if HASFDWALK 5189/* 5190** CLOSEFD_WALK -- walk fd's arranging to close them 5191** Callback for fdwalk() 5192** 5193** Parameters: 5194** lowest -- first fd to arrange to be closed 5195** fd -- fd to arrange to be closed 5196** 5197** Returns: 5198** zero 5199*/ 5200 5201static int 5202closefd_walk(lowest, fd) 5203 void *lowest; 5204 int fd; 5205{ 5206 if (fd >= *(int *)lowest) 5207 (void) fcntl(fd, F_SETFD, FD_CLOEXEC); 5208 return 0; 5209} 5210#endif /* HASFDWALK */ 5211/* 5212** SM_CLOSE_ON_EXEC -- arrange for file descriptors to be closed 5213** 5214** Parameters: 5215** lowest -- first fd to arrange to be closed 5216** highest -- last fd + 1 to arrange to be closed 5217** 5218** Returns: 5219** none 5220*/ 5221 5222void 5223sm_close_on_exec(highest, lowest) 5224 int highest, lowest; 5225{ 5226#if HASFDWALK 5227 (void) fdwalk(closefd_walk, &lowest); 5228#else /* HASFDWALK */ 5229 int i, j; 5230 5231 for (i = lowest; i < highest; i++) 5232 { 5233 if ((j = fcntl(i, F_GETFD, 0)) != -1) 5234 (void) fcntl(i, F_SETFD, j | FD_CLOEXEC); 5235 } 5236#endif /* HASFDWALK */ 5237} 5238/* |
|
5159** SEED_RANDOM -- seed the random number generator 5160** 5161** Parameters: 5162** none 5163** 5164** Returns: 5165** none 5166*/ --- 365 unchanged lines hidden (view full) --- 5532#endif /* NEEDLINK */ 5533 5534/* 5535** Compile-Time options 5536*/ 5537 5538char *CompileOptions[] = 5539{ | 5239** SEED_RANDOM -- seed the random number generator 5240** 5241** Parameters: 5242** none 5243** 5244** Returns: 5245** none 5246*/ --- 365 unchanged lines hidden (view full) --- 5612#endif /* NEEDLINK */ 5613 5614/* 5615** Compile-Time options 5616*/ 5617 5618char *CompileOptions[] = 5619{ |
5620#if ALLOW_255 5621 "ALLOW_255", 5622#endif /* ALLOW_255 */ |
|
5540#if NAMED_BIND 5541# if DNSMAP 5542 "DNSMAP", 5543# endif /* DNSMAP */ 5544#endif /* NAMED_BIND */ 5545#if EGD 5546 "EGD", 5547#endif /* EGD */ --- 86 unchanged lines hidden (view full) --- 5634# endif /* SASL >= 20000 */ 5635#endif /* SASL */ 5636#if SCANF 5637 "SCANF", 5638#endif /* SCANF */ 5639#if SMTPDEBUG 5640 "SMTPDEBUG", 5641#endif /* SMTPDEBUG */ | 5623#if NAMED_BIND 5624# if DNSMAP 5625 "DNSMAP", 5626# endif /* DNSMAP */ 5627#endif /* NAMED_BIND */ 5628#if EGD 5629 "EGD", 5630#endif /* EGD */ --- 86 unchanged lines hidden (view full) --- 5717# endif /* SASL >= 20000 */ 5718#endif /* SASL */ 5719#if SCANF 5720 "SCANF", 5721#endif /* SCANF */ 5722#if SMTPDEBUG 5723 "SMTPDEBUG", 5724#endif /* SMTPDEBUG */ |
5725#if SOCKETMAP 5726 "SOCKETMAP", 5727#endif /* SOCKETMAP */ |
|
5642#if STARTTLS 5643 "STARTTLS", 5644#endif /* STARTTLS */ 5645#if SUID_ROOT_FILES_OK 5646 "SUID_ROOT_FILES_OK", 5647#endif /* SUID_ROOT_FILES_OK */ 5648#if TCPWRAPPERS 5649 "TCPWRAPPERS", --- 5 unchanged lines hidden (view full) --- 5655 "TLS_VRFY_PER_CTX", 5656#endif /* TLS_VRFY_PER_CTX */ 5657#if USERDB 5658 "USERDB", 5659#endif /* USERDB */ 5660#if USE_LDAP_INIT 5661 "USE_LDAP_INIT", 5662#endif /* USE_LDAP_INIT */ | 5728#if STARTTLS 5729 "STARTTLS", 5730#endif /* STARTTLS */ 5731#if SUID_ROOT_FILES_OK 5732 "SUID_ROOT_FILES_OK", 5733#endif /* SUID_ROOT_FILES_OK */ 5734#if TCPWRAPPERS 5735 "TCPWRAPPERS", --- 5 unchanged lines hidden (view full) --- 5741 "TLS_VRFY_PER_CTX", 5742#endif /* TLS_VRFY_PER_CTX */ 5743#if USERDB 5744 "USERDB", 5745#endif /* USERDB */ 5746#if USE_LDAP_INIT 5747 "USE_LDAP_INIT", 5748#endif /* USE_LDAP_INIT */ |
5749#if USE_TTYPATH 5750 "USE_TTYPATH", 5751#endif /* USE_TTYPATH */ |
|
5663#if XDEBUG 5664 "XDEBUG", 5665#endif /* XDEBUG */ 5666#if XLA 5667 "XLA", 5668#endif /* XLA */ 5669 NULL 5670}; 5671 5672 5673/* 5674** OS compile options. 5675*/ 5676 5677char *OsCompileOptions[] = 5678{ 5679#if ADDRCONFIG_IS_BROKEN 5680 "ADDRCONFIG_IS_BROKEN", 5681#endif /* ADDRCONFIG_IS_BROKEN */ | 5752#if XDEBUG 5753 "XDEBUG", 5754#endif /* XDEBUG */ 5755#if XLA 5756 "XLA", 5757#endif /* XLA */ 5758 NULL 5759}; 5760 5761 5762/* 5763** OS compile options. 5764*/ 5765 5766char *OsCompileOptions[] = 5767{ 5768#if ADDRCONFIG_IS_BROKEN 5769 "ADDRCONFIG_IS_BROKEN", 5770#endif /* ADDRCONFIG_IS_BROKEN */ |
5682#if ALLOW_255 5683 "ALLOW_255", 5684#endif /* ALLOW_255 */ | |
5685#ifdef AUTO_NETINFO_HOSTS 5686 "AUTO_NETINFO_HOSTS", 5687#endif /* AUTO_NETINFO_HOSTS */ 5688#ifdef AUTO_NIS_ALIASES 5689 "AUTO_NIS_ALIASES", 5690#endif /* AUTO_NIS_ALIASES */ 5691#if BROKEN_RES_SEARCH 5692 "BROKEN_RES_SEARCH", --- 5 unchanged lines hidden (view full) --- 5698 "BOGUS_O_EXCL", 5699#endif /* BOGUS_O_EXCL */ 5700#if DEC_OSF_BROKEN_GETPWENT 5701 "DEC_OSF_BROKEN_GETPWENT", 5702#endif /* DEC_OSF_BROKEN_GETPWENT */ 5703#if FAST_PID_RECYCLE 5704 "FAST_PID_RECYCLE", 5705#endif /* FAST_PID_RECYCLE */ | 5771#ifdef AUTO_NETINFO_HOSTS 5772 "AUTO_NETINFO_HOSTS", 5773#endif /* AUTO_NETINFO_HOSTS */ 5774#ifdef AUTO_NIS_ALIASES 5775 "AUTO_NIS_ALIASES", 5776#endif /* AUTO_NIS_ALIASES */ 5777#if BROKEN_RES_SEARCH 5778 "BROKEN_RES_SEARCH", --- 5 unchanged lines hidden (view full) --- 5784 "BOGUS_O_EXCL", 5785#endif /* BOGUS_O_EXCL */ 5786#if DEC_OSF_BROKEN_GETPWENT 5787 "DEC_OSF_BROKEN_GETPWENT", 5788#endif /* DEC_OSF_BROKEN_GETPWENT */ 5789#if FAST_PID_RECYCLE 5790 "FAST_PID_RECYCLE", 5791#endif /* FAST_PID_RECYCLE */ |
5792#if HASCLOSEFROM 5793 "HASCLOSEFROM", 5794#endif /* HASCLOSEFROM */ |
|
5706#if HASFCHOWN 5707 "HASFCHOWN", 5708#endif /* HASFCHOWN */ 5709#if HASFCHMOD 5710 "HASFCHMOD", 5711#endif /* HASFCHMOD */ | 5795#if HASFCHOWN 5796 "HASFCHOWN", 5797#endif /* HASFCHOWN */ 5798#if HASFCHMOD 5799 "HASFCHMOD", 5800#endif /* HASFCHMOD */ |
5801#if HASFDWALK 5802 "HASFDWALK", 5803#endif /* HASFDWALK */ |
|
5712#if HASFLOCK 5713 "HASFLOCK", 5714#endif /* HASFLOCK */ 5715#if HASGETDTABLESIZE 5716 "HASGETDTABLESIZE", 5717#endif /* HASGETDTABLESIZE */ 5718#if HASGETUSERSHELL 5719 "HASGETUSERSHELL", --- 161 unchanged lines hidden (view full) --- 5881}; 5882 5883/* 5884** FFR compile options. 5885*/ 5886 5887char *FFRCompileOptions[] = 5888{ | 5804#if HASFLOCK 5805 "HASFLOCK", 5806#endif /* HASFLOCK */ 5807#if HASGETDTABLESIZE 5808 "HASGETDTABLESIZE", 5809#endif /* HASGETDTABLESIZE */ 5810#if HASGETUSERSHELL 5811 "HASGETUSERSHELL", --- 161 unchanged lines hidden (view full) --- 5973}; 5974 5975/* 5976** FFR compile options. 5977*/ 5978 5979char *FFRCompileOptions[] = 5980{ |
5889#if _FFR_ADAPTIVE_EOL 5890 /* tries to be smart about \r\n versus \n from broken clients */ 5891 /* known to be broken, do not use */ 5892 "_FFR_ADAPTIVE_EOL", 5893#endif /* _FFR_ADAPTIVE_EOL */ | |
5894#if _FFR_ALLOW_SASLINFO 5895 /* DefaultAuthInfo can be specified by user. */ | 5981#if _FFR_ALLOW_SASLINFO 5982 /* DefaultAuthInfo can be specified by user. */ |
5896 /* DefaultAuthInfo doesn't really work in 8.12 anymore. */ | 5983 /* DefaultAuthInfo doesn't really work in 8.13 anymore. */ |
5897 "_FFR_ALLOW_SASLINFO", 5898#endif /* _FFR_ALLOW_SASLINFO */ | 5984 "_FFR_ALLOW_SASLINFO", 5985#endif /* _FFR_ALLOW_SASLINFO */ |
5899#if _FFR_ALLOW_S0_ERROR_4XX 5900 /* Allow for tempfail from S0 (ruleset 0). */ 5901 "_FFR_ALLOW_S0_ERROR_4XX", 5902#endif /* _FFR_ALLOW_S0_ERROR_4XX */ | |
5903#if _FFR_BESTMX_BETTER_TRUNCATION 5904 /* Better truncation of list of MX records for dns map. */ 5905 "_FFR_BESTMX_BETTER_TRUNCATION", 5906#endif /* _FFR_BESTMX_BETTER_TRUNCATION */ 5907#if _FFR_BLOCK_PROXIES 5908 /* 5909 ** Try to deal with open HTTP proxies that are used to send spam 5910 ** by recognizing some commands from them. 5911 */ 5912 5913 "_FFR_BLOCK_PROXIES", 5914#endif /* _FFR_BLOCK_PROXIES */ | 5986#if _FFR_BESTMX_BETTER_TRUNCATION 5987 /* Better truncation of list of MX records for dns map. */ 5988 "_FFR_BESTMX_BETTER_TRUNCATION", 5989#endif /* _FFR_BESTMX_BETTER_TRUNCATION */ 5990#if _FFR_BLOCK_PROXIES 5991 /* 5992 ** Try to deal with open HTTP proxies that are used to send spam 5993 ** by recognizing some commands from them. 5994 */ 5995 5996 "_FFR_BLOCK_PROXIES", 5997#endif /* _FFR_BLOCK_PROXIES */ |
5915#if _FFR_CACHE_LPC 5916 /* Cache connections to LCP based mailers */ 5917/* Christophe Wolfhugel of France Telecom Oleane */ 5918 "_FFR_CACHE_LPC", 5919#endif /* _FFR_CACHE_LPC */ | |
5920#if _FFR_CATCH_BROKEN_MTAS 5921 /* Deal with MTAs that send a reply during the DATA phase. */ 5922 "_FFR_CATCH_BROKEN_MTAS", 5923#endif /* _FFR_CATCH_BROKEN_MTAS */ | 5998#if _FFR_CATCH_BROKEN_MTAS 5999 /* Deal with MTAs that send a reply during the DATA phase. */ 6000 "_FFR_CATCH_BROKEN_MTAS", 6001#endif /* _FFR_CATCH_BROKEN_MTAS */ |
5924#if _FFR_CATCH_LONG_STRINGS 5925 /* Report long address strings instead of silently ignoring them. */ 5926 "_FFR_CATCH_LONG_STRINGS", 5927#endif /* _FFR_CATCH_LONG_STRINGS */ | |
5928#if _FFR_CHECK_EOM 5929 /* Enable check_eom ruleset */ 5930 "_FFR_CHECK_EOM", 5931#endif /* _FFR_CHECK_EOM */ 5932#if _FFR_CHK_QUEUE 5933 /* Stricter checks about queue directory permissions. */ 5934 "_FFR_CHK_QUEUE", 5935#endif /* _FFR_CHK_QUEUE */ 5936#if _FFR_CLIENT_SIZE 5937 /* Don't try to send mail if its size exceeds SIZE= of server. */ 5938 "_FFR_CLIENT_SIZE", 5939#endif /* _FFR_CLIENT_SIZE */ 5940#if _FFR_CONTROL_MSTAT 5941 /* Extended daemon status. */ 5942 "_FFR_CONTROL_MSTAT", 5943#endif /* _FFR_CONTROL_MSTAT */ | 6002#if _FFR_CHECK_EOM 6003 /* Enable check_eom ruleset */ 6004 "_FFR_CHECK_EOM", 6005#endif /* _FFR_CHECK_EOM */ 6006#if _FFR_CHK_QUEUE 6007 /* Stricter checks about queue directory permissions. */ 6008 "_FFR_CHK_QUEUE", 6009#endif /* _FFR_CHK_QUEUE */ 6010#if _FFR_CLIENT_SIZE 6011 /* Don't try to send mail if its size exceeds SIZE= of server. */ 6012 "_FFR_CLIENT_SIZE", 6013#endif /* _FFR_CLIENT_SIZE */ 6014#if _FFR_CONTROL_MSTAT 6015 /* Extended daemon status. */ 6016 "_FFR_CONTROL_MSTAT", 6017#endif /* _FFR_CONTROL_MSTAT */ |
6018#if _FFR_CRLPATH 6019 /* CRLPath; needs documentation; Al Smith */ 6020 "_FFR_CRLPATH", 6021#endif /* _FFR_CRLPATH */ |
|
5944#if _FFR_DAEMON_NETUNIX 5945 /* Allow local (not just TCP) socket connection to server. */ 5946 "_FFR_DAEMON_NETUNIX", 5947#endif /* _FFR_DAEMON_NETUNIX */ 5948#if _FFR_DEAL_WITH_ERROR_SSL 5949 /* Deal with SSL errors by recognizing them as EOF. */ 5950 "_FFR_DEAL_WITH_ERROR_SSL", 5951#endif /* _FFR_DEAL_WITH_ERROR_SSL */ --- 22 unchanged lines hidden (view full) --- 5974 /* Limit number of return values for DNS map. */ 5975 "_FFR_DNSMAP_MULTILIMIT", 5976# endif /* _FFR_DNSMAP_MULTILIMIT */ 5977#endif /* _FFR_DNSMAP_MULTI */ 5978#if _FFR_DONTLOCKFILESFORREAD_OPTION 5979 /* Enable DontLockFilesForRead option. */ 5980 "_FFR_DONTLOCKFILESFORREAD_OPTION", 5981#endif /* _FFR_DONTLOCKFILESFORREAD_OPTION */ | 6022#if _FFR_DAEMON_NETUNIX 6023 /* Allow local (not just TCP) socket connection to server. */ 6024 "_FFR_DAEMON_NETUNIX", 6025#endif /* _FFR_DAEMON_NETUNIX */ 6026#if _FFR_DEAL_WITH_ERROR_SSL 6027 /* Deal with SSL errors by recognizing them as EOF. */ 6028 "_FFR_DEAL_WITH_ERROR_SSL", 6029#endif /* _FFR_DEAL_WITH_ERROR_SSL */ --- 22 unchanged lines hidden (view full) --- 6052 /* Limit number of return values for DNS map. */ 6053 "_FFR_DNSMAP_MULTILIMIT", 6054# endif /* _FFR_DNSMAP_MULTILIMIT */ 6055#endif /* _FFR_DNSMAP_MULTI */ 6056#if _FFR_DONTLOCKFILESFORREAD_OPTION 6057 /* Enable DontLockFilesForRead option. */ 6058 "_FFR_DONTLOCKFILESFORREAD_OPTION", 6059#endif /* _FFR_DONTLOCKFILESFORREAD_OPTION */ |
5982#if _FFR_DONT_STOP_LOOKING 5983 /* Continue with DNS lookups on ECONNREFUSED and TRY_AGAIN. */ 5984/* Noted by Neil Rickert of Northern Illinois University */ 5985 "_FFR_DONT_STOP_LOOKING", 5986#endif /* _FFR_DONT_STOP_LOOKING */ | |
5987#if _FFR_DOTTED_USERNAMES 5988 /* Allow usernames with '.' */ 5989 "_FFR_DOTTED_USERNAMES", 5990#endif /* _FFR_DOTTED_USERNAMES */ 5991#if _FFR_DROP_TRUSTUSER_WARNING 5992 /* 5993 ** Don't issue this warning: 5994 ** "readcf: option TrustedUser may cause problems on systems --- 34 unchanged lines hidden (view full) --- 6029 6030/* Peter Eriksson of Linkopings universitet */ 6031 "_FFR_HANDLE_ISO8859_GECOS", 6032#endif /* _FFR_HANDLE_ISO8859_GECOS */ 6033#if _FFR_HDR_TYPE 6034 /* Set 'h' in {addr_type} for headers. */ 6035 "_FFR_HDR_TYPE", 6036#endif /* _FFR_HDR_TYPE */ | 6060#if _FFR_DOTTED_USERNAMES 6061 /* Allow usernames with '.' */ 6062 "_FFR_DOTTED_USERNAMES", 6063#endif /* _FFR_DOTTED_USERNAMES */ 6064#if _FFR_DROP_TRUSTUSER_WARNING 6065 /* 6066 ** Don't issue this warning: 6067 ** "readcf: option TrustedUser may cause problems on systems --- 34 unchanged lines hidden (view full) --- 6102 6103/* Peter Eriksson of Linkopings universitet */ 6104 "_FFR_HANDLE_ISO8859_GECOS", 6105#endif /* _FFR_HANDLE_ISO8859_GECOS */ 6106#if _FFR_HDR_TYPE 6107 /* Set 'h' in {addr_type} for headers. */ 6108 "_FFR_HDR_TYPE", 6109#endif /* _FFR_HDR_TYPE */ |
6110#if _FFR_HELONAME 6111 /* option to set heloname; Nik Clayton of FreeBSD */ 6112 "_FFR_HELONAME", 6113#endif /* _FFR_HELONAME */ |
|
6037#if _FFR_HPUX_NSSWITCH 6038 /* Use nsswitch on HP-UX */ 6039 "_FFR_HPUX_NSSWITCH", 6040#endif /* _FFR_HPUX_NSSWITCH */ 6041#if _FFR_IGNORE_BOGUS_ADDR 6042 /* Ignore addresses for which prescan() failed */ 6043 "_FFR_IGNORE_BOGUS_ADDR", 6044#endif /* _FFR_IGNORE_BOGUS_ADDR */ 6045#if _FFR_IGNORE_EXT_ON_HELO 6046 /* Ignore extensions offered in response to HELO */ 6047 "_FFR_IGNORE_EXT_ON_HELO", 6048#endif /* _FFR_IGNORE_EXT_ON_HELO */ | 6114#if _FFR_HPUX_NSSWITCH 6115 /* Use nsswitch on HP-UX */ 6116 "_FFR_HPUX_NSSWITCH", 6117#endif /* _FFR_HPUX_NSSWITCH */ 6118#if _FFR_IGNORE_BOGUS_ADDR 6119 /* Ignore addresses for which prescan() failed */ 6120 "_FFR_IGNORE_BOGUS_ADDR", 6121#endif /* _FFR_IGNORE_BOGUS_ADDR */ 6122#if _FFR_IGNORE_EXT_ON_HELO 6123 /* Ignore extensions offered in response to HELO */ 6124 "_FFR_IGNORE_EXT_ON_HELO", 6125#endif /* _FFR_IGNORE_EXT_ON_HELO */ |
6049#if _FFR_LDAP_RECURSION 6050 /* Support LDAP recursion in LDAP responses */ 6051/* Andrew Baucom */ 6052 "_FFR_LDAP_RECURSION", 6053#endif /* _FFR_LDAP_RECURSION */ 6054#if _FFR_LDAP_SETVERSION 6055 /* New LDAP map option for setting LDAP protocol version */ 6056 "_FFR_LDAP_SETVERSION", 6057#endif /* _FFR_LDAP_SETVERSION */ 6058#if _FFR_LDAP_URI 6059 /* Support LDAP URI form of specifying host/port (and allows ldaps) */ 6060 "_FFR_LDAP_URI", 6061#endif /* _FFR_LDAP_URI */ | 6126#if _FFR_MAXDATASIZE 6127 /* 6128 ** It is possible that a header is larger than MILTER_CHUNK_SIZE, 6129 ** hence this shouldn't be used as limit for milter communication. 6130 ** see also libmilter/comm.c 6131 ** Gurusamy Sarathy of ActiveState 6132 */ 6133 6134 "_FFR_MAXDATASIZE" 6135#endif /* _FFR_MAXDATASIZE */ |
6062#if _FFR_MAX_FORWARD_ENTRIES 6063 /* Try to limit number of .forward entries */ 6064 /* (doesn't work) */ 6065/* Randall S. Winchester of the University of Maryland */ 6066 "_FFR_MAX_FORWARD_ENTRIES", 6067#endif /* _FFR_MAX_FORWARD_ENTRIES */ 6068#if _FFR_MAX_SLEEP_TIME 6069 /* Limit sleep(2) time in libsm/clock.c */ 6070 "_FFR_MAX_SLEEP_TIME", 6071#endif /* _FFR_MAX_SLEEP_TIME */ | 6136#if _FFR_MAX_FORWARD_ENTRIES 6137 /* Try to limit number of .forward entries */ 6138 /* (doesn't work) */ 6139/* Randall S. Winchester of the University of Maryland */ 6140 "_FFR_MAX_FORWARD_ENTRIES", 6141#endif /* _FFR_MAX_FORWARD_ENTRIES */ 6142#if _FFR_MAX_SLEEP_TIME 6143 /* Limit sleep(2) time in libsm/clock.c */ 6144 "_FFR_MAX_SLEEP_TIME", 6145#endif /* _FFR_MAX_SLEEP_TIME */ |
6072#if _FFR_MESSAGEID_MACRO 6073 /* stick the message ID header's value in a macro */ 6074 "_FFR_MESSAGEID_MACRO", 6075#endif /* _FFR_MESSAGEID_MACRO */ 6076#if MILTER 6077# if _FFR_MILTER_421 6078 /* If a filter returns 421, close the SMTP connection */ 6079 "_FFR_MILTER_421", 6080# endif /* _FFR_MILTER_421 */ 6081# if _FFR_MILTER_MACROS_EOM 6082 /* Add an EOM macro set for milter */ 6083 "_FFR_MILTER_MACROS_EOM", 6084# endif /* _FFR_MILTER_MACROS_EOM */ 6085# if _FFR_MILTER_PERDAEMON 6086 /* Per DaemonPortOptions InputMailFilter lists */ 6087 "_FFR_MILTER_PERDAEMON", 6088# endif /* _FFR_MILTER_PERDAEMON */ 6089#endif /* MILTER */ | 6146#if _FFR_MILTER_NAGLE 6147 /* milter: turn off Nagle ("cork" on Linux) */ 6148 /* John Gardiner Myers of Proofpoint */ 6149 "_FFR_MILTER_NAGLE ", 6150#endif /* _FFR_MILTER_NAGLE */ 6151#if _FFR_MILTER_NOHDR_RESP 6152 /* milter: no response expected when sending headers */ 6153 /* John Gardiner Myers of Proofpoint */ 6154 "_FFR_MILTER_NOHDR_RESP", 6155#endif /* _FFR_MILTER_NOHDR_RESP */ 6156#if _FFR_MIME7TO8_OLD 6157 /* Old mime7to8 code, the new is broken for at least one example. */ 6158 "_FFR_MIME7TO8_OLD", 6159#endif /* _FFR_MAX_SLEEP_TIME */ |
6090#if _FFR_NODELAYDSN_ON_HOLD 6091 /* Do not issue a DELAY DSN for mailers that use the hold flag. */ 6092/* Steven Pitzl */ 6093 "_FFR_NODELAYDSN_ON_HOLD", 6094#endif /* _FFR_NODELAYDSN_ON_HOLD */ 6095#if _FFR_NO_PIPE 6096 /* Disable PIPELINING, delay client if used. */ 6097 "_FFR_NO_PIPE", 6098#endif /* _FFR_NO_PIPE */ | 6160#if _FFR_NODELAYDSN_ON_HOLD 6161 /* Do not issue a DELAY DSN for mailers that use the hold flag. */ 6162/* Steven Pitzl */ 6163 "_FFR_NODELAYDSN_ON_HOLD", 6164#endif /* _FFR_NODELAYDSN_ON_HOLD */ 6165#if _FFR_NO_PIPE 6166 /* Disable PIPELINING, delay client if used. */ 6167 "_FFR_NO_PIPE", 6168#endif /* _FFR_NO_PIPE */ |
6099#if _FFR_QUARANTINE 6100 /* Quarantine items in the queue */ 6101 "_FFR_QUARANTINE", 6102#endif /* _FFR_QUARANTINE */ | |
6103#if _FFR_QUEUEDELAY 6104 /* Exponential queue delay; disabled in 8.13 since it isn't used. */ 6105 "_FFR_QUEUEDELAY", 6106#endif /* _FFR_QUEUEDELAY */ 6107#if _FFR_QUEUE_GROUP_SORTORDER 6108 /* Allow QueueSortOrder per queue group. */ 6109/* XXX: Still need to actually use qgrp->qg_sortorder */ 6110 "_FFR_QUEUE_GROUP_SORTORDER", 6111#endif /* _FFR_QUEUE_GROUP_SORTORDER */ 6112#if _FFR_QUEUE_MACRO 6113 /* Define {queue} macro. */ 6114 "_FFR_QUEUE_MACRO", 6115#endif /* _FFR_QUEUE_MACRO */ | 6169#if _FFR_QUEUEDELAY 6170 /* Exponential queue delay; disabled in 8.13 since it isn't used. */ 6171 "_FFR_QUEUEDELAY", 6172#endif /* _FFR_QUEUEDELAY */ 6173#if _FFR_QUEUE_GROUP_SORTORDER 6174 /* Allow QueueSortOrder per queue group. */ 6175/* XXX: Still need to actually use qgrp->qg_sortorder */ 6176 "_FFR_QUEUE_GROUP_SORTORDER", 6177#endif /* _FFR_QUEUE_GROUP_SORTORDER */ 6178#if _FFR_QUEUE_MACRO 6179 /* Define {queue} macro. */ 6180 "_FFR_QUEUE_MACRO", 6181#endif /* _FFR_QUEUE_MACRO */ |
6116#if _FFR_QUEUERETURN_DSN 6117 /* 6118 ** Provide an option for different Timeout.queue{warn,return} for 6119 ** DSN messages. These days, queues are filled with bounces for 6120 ** spam that will never make it to the sender and therefore slow 6121 ** down queue runs until they timeout. 6122 */ 6123 6124 "_FFR_QUEUERETURN_DSN", 6125#endif /* _FFR_QUEUERETURN_DSN */ | |
6126#if _FFR_QUEUE_RUN_PARANOIA 6127 /* Additional checks when doing queue runs. */ 6128 "_FFR_QUEUE_RUN_PARANOIA", 6129#endif /* _FFR_QUEUE_RUN_PARANOIA */ 6130#if _FFR_QUEUE_SCHED_DBG 6131 /* Debug output for the queue scheduler. */ 6132 "_FFR_QUEUE_SCHED_DBG", 6133#endif /* _FFR_QUEUE_SCHED_DBG */ 6134#if _FFR_REDIRECTEMPTY 6135 /* 6136 ** envelope <> can't be sent to mailing lists, only owner- 6137 ** send spam of this type to owner- of the list 6138 ** ---- to stop spam from going to mailing lists. 6139 */ 6140 6141 "_FFR_REDIRECTEMPTY", 6142#endif /* _FFR_REDIRECTEMPTY */ | 6182#if _FFR_QUEUE_RUN_PARANOIA 6183 /* Additional checks when doing queue runs. */ 6184 "_FFR_QUEUE_RUN_PARANOIA", 6185#endif /* _FFR_QUEUE_RUN_PARANOIA */ 6186#if _FFR_QUEUE_SCHED_DBG 6187 /* Debug output for the queue scheduler. */ 6188 "_FFR_QUEUE_SCHED_DBG", 6189#endif /* _FFR_QUEUE_SCHED_DBG */ 6190#if _FFR_REDIRECTEMPTY 6191 /* 6192 ** envelope <> can't be sent to mailing lists, only owner- 6193 ** send spam of this type to owner- of the list 6194 ** ---- to stop spam from going to mailing lists. 6195 */ 6196 6197 "_FFR_REDIRECTEMPTY", 6198#endif /* _FFR_REDIRECTEMPTY */ |
6143#if _FFR_REJECT_LOG 6144 /* Log when we start/stop rejecting connections due to load, etc */ 6145 "_FFR_REJECT_LOG", 6146#endif /* _FFR_REJECT_LOG */ 6147#if _FFR_REQ_DIR_FSYNC_OPT 6148 /* Add cf option to fsync() directories */ 6149 "_FFR_REQ_DIR_FSYNC_OPT", 6150#endif /* _FFR_REQ_DIR_FSYNC_OPT */ | |
6151#if _FFR_RESET_MACRO_GLOBALS 6152 /* Allow macro 'j' to be set dynamically via rulesets. */ 6153 "_FFR_RESET_MACRO_GLOBALS", 6154#endif /* _FFR_RESET_MACRO_GLOBALS */ | 6199#if _FFR_RESET_MACRO_GLOBALS 6200 /* Allow macro 'j' to be set dynamically via rulesets. */ 6201 "_FFR_RESET_MACRO_GLOBALS", 6202#endif /* _FFR_RESET_MACRO_GLOBALS */ |
6155#if _FFR_RESPOND_ALL 6156 /* in vacation: respond to every message, not just once per interval */ 6157 "_FFR_RESPOND_ALL", 6158#endif /* _FFR_RESPOND_ALL */ | |
6159#if _FFR_RHS 6160 /* Random shuffle for queue sorting. */ 6161 "_FFR_RHS", 6162#endif /* _FFR_RHS */ | 6203#if _FFR_RHS 6204 /* Random shuffle for queue sorting. */ 6205 "_FFR_RHS", 6206#endif /* _FFR_RHS */ |
6163#if _FFR_SASL_OPT_M 6164 /* Support SASL's SASL_SEC_MUTUAL_AUTH option */ 6165 "_FFR_SASL_OPT_M", 6166#endif /* _FFR_SASL_OPT_M */ | |
6167#if _FFR_SELECT_SHM 6168 /* Auto-select of shared memory key */ 6169 "_FFR_SELECT_SHM", 6170#endif /* _FFR_SELECT_SHM */ 6171#if _FFR_SHM_STATUS 6172 /* Donated code (unused). */ 6173 "_FFR_SHM_STATUS", 6174#endif /* _FFR_SHM_STATUS */ | 6207#if _FFR_SELECT_SHM 6208 /* Auto-select of shared memory key */ 6209 "_FFR_SELECT_SHM", 6210#endif /* _FFR_SELECT_SHM */ 6211#if _FFR_SHM_STATUS 6212 /* Donated code (unused). */ 6213 "_FFR_SHM_STATUS", 6214#endif /* _FFR_SHM_STATUS */ |
6215#if _FFR_SKIP_DOMAINS 6216 /* process every N'th domain instead of every N'th message */ 6217 "_FFR_SKIP_DOMAINS" 6218#endif /* _FFR_SKIP_DOMAINS */ |
|
6175#if _FFR_SLEEP_USE_SELECT 6176 /* Use select(2) in libsm/clock.c to emulate sleep(2) */ 6177 "_FFR_SLEEP_USE_SELECT ", 6178#endif /* _FFR_SLEEP_USE_SELECT */ | 6219#if _FFR_SLEEP_USE_SELECT 6220 /* Use select(2) in libsm/clock.c to emulate sleep(2) */ 6221 "_FFR_SLEEP_USE_SELECT ", 6222#endif /* _FFR_SLEEP_USE_SELECT */ |
6179#if _FFR_SMFI_OPENSOCKET 6180 /* libmilter: smfi_opensocket() to force the socket open early */ 6181 "_FFR_SMFI_OPENSOCKET", 6182#endif /* _FFR_SMFI_OPENSOCKET */ 6183#if _FFR_SMTP_SSL 6184 /* Support for smtps (SMTP over SSL) */ 6185 "_FFR_SMTP_SSL", 6186#endif /* _FFR_SMTP_SSL */ | |
6187#if _FFR_SOFT_BOUNCE 6188 /* Turn all errors into temporary errors. */ 6189 "_FFR_SOFT_BOUNCE", 6190#endif /* _FFR_SOFT_BOUNCE */ 6191#if _FFR_SPT_ALIGN 6192 /* 6193 ** It looks like the Compaq Tru64 5.1A now aligns argv and envp to 64 6194 ** bit alignment, so unless each piece of argv and envp is a multiple 6195 ** of 8 bytes (including terminating NULL), initsetproctitle() won't 6196 ** use any of the space beyond argv[0]. Be sure to set SPT_ALIGN_SIZE 6197 ** if you use this FFR. 6198 */ 6199 6200/* Chris Adams of HiWAAY Informations Services */ 6201 "_FFR_SPT_ALIGN", 6202#endif /* _FFR_SPT_ALIGN */ | 6223#if _FFR_SOFT_BOUNCE 6224 /* Turn all errors into temporary errors. */ 6225 "_FFR_SOFT_BOUNCE", 6226#endif /* _FFR_SOFT_BOUNCE */ 6227#if _FFR_SPT_ALIGN 6228 /* 6229 ** It looks like the Compaq Tru64 5.1A now aligns argv and envp to 64 6230 ** bit alignment, so unless each piece of argv and envp is a multiple 6231 ** of 8 bytes (including terminating NULL), initsetproctitle() won't 6232 ** use any of the space beyond argv[0]. Be sure to set SPT_ALIGN_SIZE 6233 ** if you use this FFR. 6234 */ 6235 6236/* Chris Adams of HiWAAY Informations Services */ 6237 "_FFR_SPT_ALIGN", 6238#endif /* _FFR_SPT_ALIGN */ |
6203#if _FFR_STRIPBACKSL 6204 /* 6205 ** Strip backslash from addresses (so sender doesn't 6206 ** decide to ignore forward) 6207 */ 6208 6209 "_FFR_STRIPBACKSL", 6210#endif /* _FFR_STRIPBACKSL */ | |
6211#if _FFR_TIMERS 6212 /* Donated code (unused). */ 6213 "_FFR_TIMERS", 6214#endif /* _FFR_TIMERS */ 6215#if _FFR_TLS_1 6216 /* More STARTTLS options, e.g., secondary certs. */ 6217 "_FFR_TLS_1", 6218#endif /* _FFR_TLS_1 */ --- 17 unchanged lines hidden --- | 6239#if _FFR_TIMERS 6240 /* Donated code (unused). */ 6241 "_FFR_TIMERS", 6242#endif /* _FFR_TIMERS */ 6243#if _FFR_TLS_1 6244 /* More STARTTLS options, e.g., secondary certs. */ 6245 "_FFR_TLS_1", 6246#endif /* _FFR_TLS_1 */ --- 17 unchanged lines hidden --- |