/*
 * Copyright (c) 2004-2006 Sendmail, Inc. and its suppliers.
 *	All rights reserved.
 *
 * By using this file, you agree to the terms and conditions set
 * forth in the LICENSE file which can be found at the top level of
 * the sendmail distribution.
 *
 * $Id: ssdef.h,v 1.47 2007/06/10 16:14:42 ca Exp $
 */

#ifndef SM_SSDEF_H
#define SM_SSDEF_H 1

#include "sm/generic.h"
#include "sm/units.h"

/* SMTP Server Context configuration flags */
#define SSC_CFL_ACCESS_DB	0x00000001u /* use access map */
#define SSC_CFL_DELAY_CHKS	0x00000002u /* delay checks */
#define SSC_CFL_SPAM_FRIEND	0x00000004u /* spam friend feature */
#define SSC_CFL_SPAM_HATER	0x00000008u /* spam hater feature */
#define SSC_CFL_8BITMIME	0x00000010u /* offer 8BITMIME */
#define SSC_CFL_BACKGROUND	0x00000020u /* fork */
#define SSC_CFL_SERIAL_ACC	0x00000040u /* serialize accept */
#define SSC_CFL_SOFTBOUNCE	0x00000080u /* softbounce (replace 5xy with 4xy) */

/* do not consider lmtp: in mt as local wrt relaying */
#define SSC_CFL_LMTPNOTRELAY	0x00000100u

/* protected recipients options */
#define SSC_CFL_PROTBYMAIL	0x00000200u /* allow access by sender (MAIL) */
#define SSC_CFL_PROTBYCLTADDR	0x00000400u /* allow access by client (IPv4) */
/* use string map for protected recipient lookups */
#define SSC_CFL_PROTMAP		0x00000800u

/* match user+detail against user too */
#define SSC_CFL_PROTIMPLDET	0x00001000u

/* pmfilter related options */
#define SSC_CFL_PMILTER		0x00002000u /* use policy milter */

#define SSC_CFL_CHK_EHLO	0x00004000u /* check EHLO again access map */
#define SSC_CFL_EHLO_SYNTAX	0x00008000u /* strict EHLO syntax check */

/* STARTTLS related options */
#define SSC_CFL_TLS_REL_VRFY	0x00010000u /* allow relaying if verified */
#define SSC_CFL_TLS_REL_ACC	0x00020000u /* check access map for relaying */

/* match user+detail against user too */
#define SSC_CFL_ACCIMPLDET	0x00040000u

#define SSC_CFL_GREY		0x00080000u /* turn on greylisting */

/* return greylisting error after DATA */
#define SSC_CFL_GREY_DATA	0x00100000u

/* require EHLO/HELO */
#define SSC_CFL_EHLO_REQ	0x00200000u

#define SSC_CFL_XVERP		0x00400000u	/* offer XVERP */

#define SSC_CFL_STARTTLS	0x00800000u /* offer STARTTLS */
#define SSC_CFL_AUTH		0x01000000u /* offer AUTH */

/* allow data before greeting */
#define SSC_CFL_DATA_BEFORE_GREET	0x02000000u

#define SSC_CFL_RSAD	0x08000000u	/* offer RSAD */
#define SSC_CFL_SE_CONF	0x10000000u	/* perform smtps_sess_conf lookup */

/* SMTP Server Session Configuration flags */
/* convert SSC_ flag to SSSE flag: */
/* :'a,.s/SSC_\(.*\)/SSSE_\1	&/ */
#define SSSE_CFL_DELAY_CHKS	SSC_CFL_DELAY_CHKS /* delay checks */
#define SSSE_CFL_STARTTLS	SSC_CFL_STARTTLS /* offer STARTTLS */
#define SSSE_CFL_AUTH		SSC_CFL_AUTH	/* offer AUTH */
#define SSSE_CFL_DATA_BEFORE_GREET	SSC_CFL_DATA_BEFORE_GREET
#define SSSE_CFL_RSAD		SSC_CFL_RSAD /* offer RSAD */
#define SSSE_CFL_CHK_EHLO	SSC_CFL_CHK_EHLO
#define SSSE_CFL_EHLO_SYNTAX	SSC_CFL_EHLO_SYNTAX
#define SSSE_CFL_EHLO_REQ	SSC_CFL_EHLO_REQ
#define SSSE_CFL_INHERIT	(SSC_CFL_DELAY_CHKS|SSC_CFL_STARTTLS|\
		SSC_CFL_AUTH|SSSE_CFL_DATA_BEFORE_GREET|\
		SSC_CFL_CHK_EHLO|SSC_CFL_EHLO_SYNTAX|SSC_CFL_EHLO_REQ|SSC_CFL_RSAD)

/* what should be done if pmilter fails? */
#define SSC_MFL_PM_421		0x00000001u /* 421 ... */
#define SSC_MFL_PM_AGAIN	0x00000002u /* accept but try to reconnect */
/* #define SSC_MFL_PM_IGN	0x00000004u * ignore failure: default */
/* #define SSC_MFL_PM_TEMP	0x00000008u * tempfail everything */

/* Socket listen queue size */
#define LISTENQ_SIZE_DEFAULT 256

/* SMAR reply read timeout (in seconds) */
#define TMO_W4A2S	20

/* QMGR reply read timeout (in seconds) (too long?) */
#define TMO_W4Q2S	20

/* RCB send timeout (in seconds) (too long?) */
#define SS_RCB_SND_TMO	TMO_W4Q2S

/* Milter reply read timeout (in seconds) */
#define TMO_W4M2S	20

/*
**  I/O with SMTP client
**  RFC 2821:
**    An SMTP server SHOULD have a timeout of at least 5 minutes while it
**    is awaiting the next command from the sender.
*/

#define SS_IO_TIMEOUT 300

/* max. number of Received: headers (hops) */
#define MTA_MAXHOPS 25

/* max. message size */
#define SM_MAX_MSG_SZ_KB	64 UNIT_MB

#define RELAY_CLT "127.0.0.1"
#define RELAY_RCPT "(^<postmaster>|@localhost>)$"

/* for testing, increase later on? */
#define SS_SESS_MAX_BADCMDS	3
#define SS_SESS_MAX_NOPCMDS	5
#define SS_SESS_MAX_INVLDADDR	200

#define SS_TA_MAX_BADCMDS	3
#define SS_TA_MAX_NOPCMDS	5
#define SS_TA_MAX_INVLDADDR	100

#endif /* SM_SSDEF_H */


syntax highlighted by Code2HTML, v. 0.9.1