/* * 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: sscnf.h,v 1.44 2007/09/29 02:53:39 ca Exp $ */ #ifndef SSCNF_H #define SSCNF_H 1 #include "sm/generic.h" #include "sm/types.h" #include "sm/time.h" #include "sm/io.h" #include "sm/sm-conf.h" #include "sm/ssdef.h" #include "sm/logcnfdef.h" #include "sm/mcpcnfs.h" #include "sm/tlscnfs.h" #include "sm/tlscnf.h" #ifndef SS_LOGDIR #define SS_LOGDIR 0 #endif /* Max number of listening sockets ("hardware virtual servers") */ #define SS_MAX_BIND_ADDRS 16 /* server features (per session) */ struct ss_se_feat_S { char *sssf_name; uint32_t sssf_flags; uchar sssf_name_isset; }; typedef struct ss_se_feat_S ss_se_feat_T, *ss_se_feat_P; /* server feature declarations */ struct ss_se_feats_S { ss_se_feat_T *sssfs_feat; uint sssfs_n; }; typedef struct ss_se_feats_S ss_se_feats_T, *ss_se_feats_P; /* SMTPS configuration context */ typedef struct ss_cnf_S ss_cnf_T, *ss_cnf_P; struct ss_cnf_S { sm_magic_T sm_magic; sm_conf_T *ss_cnf_smc; /* parsed configuration */ char *ss_cnf_conffile; /* name of configuration file */ char *ss_cnf_section; /* name of section to use */ char *ss_cnf_smtpssock; /* SMTP Server/QMGR socket */ const char *ss_cnf_smtpssock_abs; char *ss_cnf_smtpssock_alloc; char *ss_cnf_smarsock; /* SMAR socket */ const char *ss_cnf_smarsock_abs; char *ss_cnf_smarsock_alloc; char *ss_cnf_cdb_base; /* Base name for CDB */ char *ss_cnf_fd_socket; /* socket over which fd is passed */ char *ss_cnf_hostname; char *ss_cnf_relay_to; char *ss_cnf_relay_from; #if SS_LOGDIR char *ss_cnf_logdir; #endif uint ss_cnf_loglevel; sm_logspec_T ss_cnf_log; gid_t ss_cnf_cdb_gid; sm_intvl_T ss_cnf_timeout; /* timeout for SMTP I/O */ uint ss_cnf_wait4srv; uint32_t ss_cnf_mod_tmo; /* timeout for module communication */ uint ss_cnf_w4a2s; /* wait for reply from smar */ int ss_cnf_listenq_size; uint ss_cnf_maxhops; uint ss_cnf_debug; uint ss_cnf_max_msg_sz_kb; int ss_cnf_id_base; /* smtps base id (before fork() */ /* limits (global, could be set per session or maybe transaction) */ uint ss_cnf_t_tot_lim; /* number of transaction total */ uint ss_cnf_r_tot_lim; /* number of recipients total */ uint ss_cnf_r_ta_lim; /* number of recipients per TA */ #if 0 /* not yet checked nor counted */ uint ss_cnf_r_fail_lim; /* number of failed recipients */ uint ss_cnf_r_ok_lim; /* number of recipients ok */ #endif /* max number of bad commands per session */ uint ss_cnf_sess_max_badcmds; uint ss_cnf_sess_max_nopcmds; uint ss_cnf_sess_max_invldaddr; uint ss_cnf_ta_max_badcmds; uint ss_cnf_ta_max_nopcmds; uint ss_cnf_ta_max_invldaddr; uint32_t ss_cnf_cflags; #if 0 int ss_cnf_port; #endif int ss_cnf_vp_count; /* Number of server processes (VPs) */ /* ** Thread throttling parameters (all numbers are per listening socket). ** Zero values mean use default. */ uint ss_cnf_max_threads; /* Max number of "spare" threads */ uint ss_cnf_max_wait_threads; /* Min number of "spare" threads */ uint ss_cnf_min_wait_threads; int ss_cnf_sk_count; char *ss_cnf_sck_addr[SS_MAX_BIND_ADDRS]; #if MTA_USE_TLS TLS_STRUCTS(ss) tls_cnf_T ss_cnf_tls; uint ss_cnf_tlsreqfail; #endif #if MTA_USE_SASL uint32_t ss_cnf_auth_flags; char *ss_cnf_trusted_mechs; #endif #if MTA_USE_PMILTER sockspec_T ss_cnf_miltsockspec; uint32_t ss_cnf_mflags; /* flags */ uint ss_cnf_w4m2s; /* options?? timeout, error behavior, list of macros, others? */ #endif ss_se_feats_T ss_cnf_se_feats; #if SS_TEST uint32_t ss_cnf_tests; #endif MCP_STRUCTS(ss_cnf_T, ss_cnf) }; void ss_prt_cnf(ss_cnf_P ss_cnf, sm_file_T *fp, bool _all); #endif /* SSCNF_H */